& Lt; STYLE> должны быть в заголовке <HEAD> HTML-документ?

Строго говоря, теги style должны быть внутри тега head документа HTML? Стандарт 4.01 подразумевает это, но это прямо не указано:

  

Элемент STYLE позволяет авторам   поставить правила таблицы стилей в главу   документ. HTML разрешает любое число   элементов STYLE в разделе HEAD   документа.

Я говорю «строго говоря», потому что у меня есть приложение, которое помещает элементы стиля внутрь тела, и все браузеры, с которыми я тестировал, похоже, используют элементы стиля. Мне просто интересно, если это на самом деле законно.

121 голос | спросил eaolson 20 AM00000040000000831 2009, 04:52:08

10 ответов


0

style должен быть включен только в head документа.

Помимо точки проверки, еще одна оговорка, которая может вас заинтересовать при использовании style в body - это флеш-контент без стиля . Браузер получит элементы, которые будут стилизованы как после их отображения, заставляя их смещаться по размеру /форме /шрифту и /или мерцанию. Это вообще признак плохого мастерства. Как правило, вы можете без проблем поместить style в любое место, но по возможности старайтесь избегать этого.

В HTML 5 появился атрибут scoped, который разрешает style должны быть включены везде в теле, но затем они снова удалили его.

ответил Esteban Küber 20 AM00000050000002331 2009, 05:16:23
0

Хотя остальные ответы верны, я удивлен, что никто не объяснил, где стандарты запрещают стили вне head

Это на самом деле в разделе head Элемент (и в DTD ):

<!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->

Да, я знаю. DTD трудно читать.

Это единственное место, где встречается элемент STYLE, поэтому неявно он недопустим в других местах.

ответил user123444555621 25 J0000006Europe/Moscow 2012, 02:40:34
0

Согласно последним спецификациям WhatWG и W3C, да, style элементы должны всегда находиться в ---- +: = 1 =: + ----. Некоторое время спецификации включали атрибут head для scoped, которые, когда они присутствуют, позволяют размещать их внутри элемента в теле, чтобы стилизовать только потомков этого элемента ... но эта функция никогда не достигала какого-либо реального браузера (по крайней мере, без необходимости включения через флаг разработчика) и был удален из обеих спецификаций «из-за отсутствия интереса со стороны разработчиков» . Следовательно, элементы style теперь разрешены только в тех контекстах, которые допускают содержание метаданных, которое является только заголовком.

(Хорошо, это не вполне правда - вы можете легально поместить содержимое метаданных, включая элементы style, внутрь style внутри template, но на самом деле он не вступит в силу, если вы находитесь в браузер, который поддерживает шаблоны. Это действительно просто глупость.)

В спецификации WhatWG есть следующее:

  

4.2.6. body element

     

Категории :

     

содержимое метаданных .

     

Контексты, в которых этот элемент может использоваться :

     

Где ожидается содержимое метаданных .
>   В style элемент, который является дочерним по отношению к <noscript> .

CTRL-Fing с помощью одностраничной спецификации показывает, что единственный элемент, модель содержимого которого включает метаданные содержимое - это элемент <head>.

Между тем, последняя спецификация черновика W3C содержит точно такие же формулировки, за исключением того, что они также содержат содержимое метаданных в модели содержимого head . (WhatWG по-разному интерпретирует template и отображает их модель содержимого как template)

Ненормативный индекс элементов в WhatWG spec подтверждает, что единственными допустимыми родителями для элемента nothing являются style или head. (Версия того же индекса W3 неверно утверждает, что содержимое потока может содержать элементы noscript, но это ошибка, введенная W3C на время удаления атрибута <style>. У меня есть открытый запрос , чтобы исправить это.)

ответил Mark Amery 13 AM00000030000004131 2014, 03:37:41
0

Они не должны выходить за пределы головы, но они все равно работают; хотя вы можете заметить быстрое мерцание. Сайт не должен проверяться тегом style вне головы, но действительно ли это имеет значение? Кроме того, теги ссылок работают и вне головы, хотя они и не должны.

ответил geowa4 20 AM00000040000002631 2009, 04:54:26
0

Как и в других ответах, это не обязательно должно быть там. Тем не менее, это не будет проверять. Это может иметь или не иметь значения в этом случае, но имейте в виду, что рендеринг html полностью зависит от браузеров. Из того, что я знаю, все используемые сегодня браузеры будут поддерживать его вне головы, но вы не можете гарантировать это для будущих браузеров и будущих выпусков браузеров.

Придерживайтесь стандарта, и вы в большей безопасности. Насколько безопаснее спорить.

ответил Louis 20 AM00000050000003931 2009, 05:00:39
0

Тег стиля в любом месте, кроме <head>, не будет проверяться правилами W3C.

ответил womp 20 AM00000040000001931 2009, 04:55:19
0

Согласно этому сайту, HTML5.1 (в черновике) и WHATWG позволяют помещать тег <style> в теле:

http://www.html.am/tags/html-style -tag.cfm

Похоже, что это поддерживается браузерами довольно долгое время. Согласно этому ответу StackOverflow, Firefox 3+, IE6 +, Safari 2+ и Chrome 12+ поддерживают его:

https://stackoverflow.com/a/10989663/297793

ответил konrad 8 J000000Friday16 2016, 00:10:33
0

В соответствии со спецификацией HTML 5.2 (в черновике), тег style допускается только в заголовке документа.

HTML 5.2. Тег стиля (18 августа 2016 г.)

  

Элемент стиля ограничен отображением в заголовке   документ.

ответил Kerry Kobashi 31 AM00000030000002431 2016, 03:06:24
0

Рекомендация HTML5.2 W3C от 14 декабря 2017 года (а не предыдущая версия, упомянутая выше) теперь гласит, что вы можете включить <style>

  

«В теле, где ожидается поток содержимого».    (раздел 4.2.6) р>

ответил Anahata 5 WedEurope/Moscow2018-12-05T02:52:06+03:00Europe/Moscow12bEurope/MoscowWed, 05 Dec 2018 02:52:06 +0300 2018, 02:52:06
0

Вы можете использовать тег style внутри раздела head или body, а также вне тега html (внешний html не рекомендуется). В проектах реального времени много раз вы можете видеть, что они используют тег style вне тега html

ответил Adarsh Joshi 17 PM00000070000004131 2017, 19:43:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132