HTML element which defaults to display:inline-block?

后端 未结 10 2488
北海茫月
北海茫月 2020-12-14 05:33

defaults to block

defaults to inline

Is there one that defaults to inline-

相关标签:
10条回答
  • 2020-12-14 05:54

    Is there one that defaults to inline-block?

    Strictly speaking, no there isn't. The W3 HTML specifications do not ever specify default CSS property values for any elements. They do provide a "default style sheet" for HTML 4, but developers are only encouraged to use it - it is not a requirement or any sort of mandate. The HTML 5 specifications indicate "typical default display properties" but, again, those are not required (also keep in mind that HTML 5 is still a working draft anyways).

    So that leaves all default values up to the browser and how the developers actually feel elements should be displayed to a user. No one can guarantee that a specific element will display as inline-block or any other way in someone's browser. You should always explicitly set that if you want it to happen. Don't rely on "defaults."

    If not, what special tag name would be appropriate for me to apply 'inline-block' using CSS? Or should I stick to using a class?

    This is up to you and how you are designing your pages. You should always use elements that are semantically appropriate to the content contained within them. If the element will always be used in a context which will require inline-block display, by all means set it to that in your style sheet. Otherwise, you will have to resort to classes or more specific selectors in order to make your elements display properly.

    0 讨论(0)
  • 2020-12-14 06:02

    YES there is an element that defaults to inline.

    The answer is the span element.

    <span>
    
    0 讨论(0)
  • 2020-12-14 06:06

    In principle, it depends on the browser what the default value for the display property is for each element. Even HTML5 drafts do not prescribe what values must be used, though it presents “expected rendering” of elements in terms of CSS.

    According the default style sheet for HTML in the CSS 2.1 specification, the elements that have display: inline-block by default are button, input, select, and textarea. Browsers use such settings, except that in Firefox, this only applies to button and select.

    In the Rendering section of HTML5 CR, the meter and progress elements are additionally describes as having inline block as “expected rendering”, and browsers that have implemented these elements appear to behave that way. The keygen element is also described as being an inline block, but Firefox does not do that (it implemented keygen internally as select in the DOM); IE does not support keygen at all; Chrome implements it as suggested.

    Since all of these elements have rather specialized meanings, functionality, and rendering idiosyncracies, none of them is adequate for general use as an element that is an inline block by default and may have various meanings. What you can use for such an element is normally span or div, depending on whether you prefer inline or block as the default rendering.

    0 讨论(0)
  • 2020-12-14 06:08

    Now you can create a Custom Element (for example: <inline-block> or whatever) that will have its CSS property display set to inline-block by default.

    customElements.define( 'inline-block', class extends HTMLElement {
        constructor() {
            super()
            this.attachShadow( { mode: 'open' } )
                .innerHTML = `<style> :host { display: inline-block } </style>
                              <slot></slot>`
        }
    } )
    #hw { background-color: lightblue }
    <inline-block id="hw">Hello World</inline-block>

    0 讨论(0)
提交回复
热议问题