2016-02-28 6 views
8

Если я использую пользовательские или неподдерживаемые элементы в своем HTML, они все равно могут быть в стиле, и браузер их отобразит.Настройки по умолчанию для непризнанных элементов HTML

Например, элемент HTML5 main не поддерживается Internet Explorer 11 и старше (source). Когда main отображается IE, правила CSS, содержащие margin и overflow, игнорируются. Это означает, что значение display непризнанного элемента равно inline.

Где начальные настройки для непризнанного элемента определены?

(Примечание: Я не спрашиваю о плюсах и минусах использования пользовательских элементов я просто хочу знать, что CSS делает по умолчанию.).

+0

Если это нераспознанное ... как оно может иметь свойства по умолчанию? Вы должны проверить спецификацию. Я бы предположил, что это браузер. = https://www.w3.org/TR/custom-elements/ –

+0

Спасибо, @Paulie_D.У меня сложилось впечатление, что CSS имеет правила для обработки непризнанных элементов (см. [Комментарии в этом ответе] (http://stackoverflow.com/a/35688664/3597276)). Правило может состоять только в том, чтобы взять начальное значение свойства CSS. Я пытаюсь найти, где в спецификации определена обработка, но мои поиски не дали никаких результатов. –

+0

Я думаю, что они ** не определены **, потому что разработчик должен их определять ... поэтому он произволен в отношении того, что делает каждый браузер. –

ответ

5

Это не так много непризнанных элементов, а все элементов. Помните, что CSS поддерживает как XML, так и HTML. В XML все элементы непризнанным

В CSS 2.1 спецификации, section 6.1.1 говорит:

6.1.1 Заданные значения

Агенты пользователей должны сначала присвоить определенное значение для каждого свойства на основе на следующих механизмах (в порядке приоритета):

  1. Если каскад приводит к значению, используй это. Кроме того, если значение «inherit», указанное значение определено в «Наследует» значение »ниже.

  2. В противном случае, если свойство наследуется и элемент не является корнем дерева документа, используйте вычисленное значение родительского элемента .

  3. В противном случае используйте начальное значение свойства. Начальное значение каждого свойства указывается в определении свойства.

По определению, непризнанные элементы не будут упомянуты в таблице стилей агента пользователя, и так как мы говорим о поведении по умолчанию, не будут упомянуты в таблице стилей автора либо. Таким образом, 1 не применяется.

Свойство отображения определено в 9.2.4 The 'display' property. В правилах там указано Inherited: no, поэтому 2 не применяется.

3 применяется. Опять же, из правил в 9.2.4, мы имеем Initial: inline, поэтому элементы являются встроенными.

Для элементов уровня блока HTML они являются блоками по умолчанию просто потому, что они перечислены как таковые в таблице стилей пользователя-агента. Аналогично для других отображаемых значений, таких как table, list-item и т. Д.

+0

Просто, чтобы быть ясным: если бы это не для таблиц стилей пользователя, все По умолчанию элементы будут отображаться: inline'? Все элементы будут использовать начальные значения свойств CSS? –

+1

@Michael_B - Это правильно. Более или менее: В HTML есть несколько вещей, которые нельзя напрямую копировать в CSS. Элементы формы, например, и rowspan & colspan в таблицах. Поэтому иногда браузеры обрабатывают некоторые HTML-элементы как «волшебные». – Alohci

+1

@Michael_B: Да - вот почему существует понятие начального значения. – BoltClock

Смежные вопросы