Елемент HTML, який за замовчуванням відображається: вбудований блок?


77

<div> за замовчуванням block

<span> за замовчуванням inline

Чи є такий, який не відповідає умовам inline-block?

Якщо ні, яке спеціальне ім’я тегу було б доречним для мене, щоб застосувати «вбудований блок» за допомогою CSS?
Або я повинен дотримуватися використання класу?


Я думаю, що є лише одне - <img>.
Джек

4
@ jack-tuck Це неправильно, див. відповіді.
Jocelyn delalande

Відповіді:


41

З того, що я можу сказати, <img>тег є єдиним inline-blockза замовчуванням. Щоб бути в безпеці, я порадив би клас, ви ніколи не знаєте, коли зміна всіх елементів певного типу повернеться вас вкусити. Або ви завжди можете скласти свій власний тег і призначити display:inline-block;йому. Таким чином, ви не змінюєте функціональність стандартних елементів за замовчуванням ...

РЕДАГУВАТИ

Крім того , представляється , що button, textarea, inputі selectелементи такожinline-block

Джерела:

У відповідності з цим imgє inline-block http://dev.w3.org/html5/markup/img.html#img-display

І тут стверджує , що button, textareaі т.д., а також: http://www.w3.org/TR/CSS2/sample.html

EDIT # 2

Хоча вищезазначене джерело стверджує, що imgтеги - inline-blockце, здається (завдяки Alohci), що вони просто inline http://jsfiddle.net/AQ2yp/

У Firefox було перевірено:

buttonє inline-block: http://jsfiddle.net/GLS4P/

textareaє inline: http://jsfiddle.net/235vc/

inputє inline: http://jsfiddle.net/RFKe8/

selectє inline-block: http://jsfiddle.net/5B4Gs/


12
Це показує, наскільки широко поширений міф про img. Проте перевірити це легко. Просто використовуйте інспектор dom будь-якого браузера на зображенні un CSS, і ви побачите, що він є display: inline. Або перегляньте цю скрипку JS: jsfiddle.net/AQ2yp
Alohci

@Alohci Думаю, ти маєш рацію, просто тестувався в Chrome, FF та IE, і всі троє вийшли якinline
Dryden Long

@DrydenLong, слід врахувати різницю у веб-браузерах
Guilherme Nascimento

7
@DrydenLong, будь ласка, для ясності видаліть неправильну інформацію.
Jocelyn delalande

1
@Esger - Неправда, що ви не можете встановити висоту та ширину для вбудованого елемента. Ви не можете встановити висоту та ширину для незміненого вбудованого елемента. img - замінений елемент, тому обмеження не застосовуються. "inline-block" буквально означає "вбудований рівень, контейнер блоку". Замінені елементи не є блоковими контейнерами, оскільки в міру їх заміни вони нічого не містять. Також їх ніяким чином не можна описати як такі, що поводяться так, ніби вони були контейнерами з блоками. Їх схожість з елементами вбудованого блоку обмежується їх поведінкою поза відображенням, тобто їх сутністю на рівні.
Alohci

22

Чи є такий, який не відповідає умовам inline-block?

Строго кажучи, ні, немає . Специфікації W3 HTML ніколи не визначають значення властивостей CSS за замовчуванням для будь-яких елементів. Вони дійсно надають "таблицю стилів за замовчуванням" для HTML 4, але розробникам рекомендується лише використовувати її - це не є вимогою чи будь-яким мандатом. Специфікації HTML 5 вказують "типові властивості відображення за замовчуванням", але, знову ж таки, вони не є обов'язковими (також майте на увазі, що HTML 5 у будь-якому випадку все ще є робочим проектом ).

Таким чином, усі значення за замовчуванням залишаються за браузером, і те, як розробники насправді відчувають елементи, має відображатися користувачеві. Ніхто не може гарантувати, що певний елемент відображатиметься inline-blockчи як- небудь іншим чином у чиїмсь браузері. Ви завжди повинні чітко встановити, що якщо ви хочете, щоб це сталося. Не покладайтесь на "за замовчуванням".

Якщо ні, яке спеціальне ім’я тегу було б доречним для мене, щоб застосувати «вбудований блок» за допомогою CSS? Або я повинен дотримуватися використання класу?

Це залежить від вас і від того, як ви розробляєте свої сторінки. Завжди слід використовувати елементи, які семантично відповідають вмісту, що міститься в них. Якщо елемент завжди буде використовуватися в контексті, який вимагатиме inline-blockвідображення, неодмінно встановіть його таким, як у вашій таблиці стилів. В іншому випадку вам доведеться вдаватися до класів або більш конкретних селекторів, щоб ваші елементи відображалися належним чином.


7

Ось скрипка, яка отримує значення за замовчуванням для більшості тегів HTML.

Скрипка

У chrome елементами вбудованого блоку за замовчуванням є: "INPUT", "BUTTON", "TEXTAREA", "SELECT"


Хороший, +1. У Firefox це лише buttonі select. IE 11 має всі 4 якinline-block
Драйден Лонг

4

Ви можете перевірити мій codepen з усіма елементами HTML та їх displayвластивостями за замовчуванням. Деякі теги порушені синтаксис, але це не має значення для нашої мети.

На даний момент у FF є 5 елементів :display: inline-block

  1. <button>
  2. <select>
  3. <meter>
  4. <progress>
  5. <marquee>

І ще 2 (включаючи 5 вище) в Chrome:

  1. textarea
  2. input

3

В принципі, від браузера залежить, яке значення displayвластивості за замовчуванням для кожного елемента. Навіть у чернетках HTML5 не прописано, які значення слід використовувати, хоча він представляє "очікуваний візуалізацію" елементів з точки зору CSS.

Погоджує таблиця стилів по замовчуванням для HTML в специфікації CSS 2.1, елементи , які мають display: inline-blockза замовчуванням є button, input, select, і textarea. Браузери використовують такі налаштування, за винятком того, що у Firefox це стосується лише buttonта select.

У розділі " Візуалізація " HTML5 CR елементи meterand progressдодатково описуються як такі, що мають вбудований блок, як "очікуваний рендеринг", і браузери, які реалізували ці елементи, поводяться так. keygenЕлемент також описаний як строковий блок, але Firefox не робить цього (вона реалізується keygenвнутрішньо як selectв DOM); IE взагалі не підтримує keygen; Chrome реалізує це, як запропоновано.

Оскільки всі ці елементи мають досить спеціалізовані значення, функціональність та ідіосинкратії, жоден з них не підходить для загального використання як елемент, який за замовчуванням є вбудованим блоком і може мати різні значення. Що ви можете використовувати для такого елемента, як правило, spanабо div, залежно від того, чи віддаєте перевагу вбудованому чи блокуваному візуалізації за замовчуванням.


2

Моє рішення цього - декларування того, що я називаю a slice.

CSS

sl {
    display: inline-block;
}

Використання

<sl>inline block stuff</sl>

1

button, textarea, inputІ по selectзамовчуванням inline-block.

У разі , якщо Ви хотіли б ви б дати йому ім'я класу.inline-blockdiv

.inline-block {
    display: inline-block
}

Тоді...

<div class="inline-block"></div>

КОРЕКЦІЯ

Я помилявся img. Здається, це за замовчуванням inlineі ніinline-block


1

Тепер ви можете створити власний елемент (наприклад: <inline-block>або що завгодно), displayдля якого inline-blockза замовчуванням буде встановлено його властивість CSS .

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

Зараз це насправді не є правдивою відповіддю на запитання, але при достатній підтримці це колись може бути.

<seg>скорочення від "сегмент". Як і в, відрізки лінії.

з поліфілом:

<style> seg { display: inline-block; } </style>

Насправді було б непогано, якби був офіційний, але немає, тож ось найкраща (ІМО) запропонована назва для такого елемента, про яку я знаю.


-10

ТАК є елемент, який за замовчуванням вбудований.

Відповідь - елемент span.

<span>

1
ОП просив inline-blockнеinline
Драйден Лонг

ах не зрозумів цього.
httpgio

1
Якщо ви використовуєте вбудовані елементи блоку, будьте обережні з IE! потрібно застосувати масштабування: 1, щоб перехресний браузер сумісний з IE. Вас попереджали
httpgio

1
Окрім неправильного відображуваного значення, воно також у будь-якому випадку досить марне. Всі елементи, які не мають властивості відображення, встановлених у таблиці стилів браузера за замовчуванням, відображатимуться вбудовано - це початкове значення для цієї властивості.
анімусон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.