Должен ли <STYLE> быть в <HEAD> документа HTML?

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

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

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

 WraithKenny29 нояб. 2017 г., 23:23
Спецификациитребовать браузеры для поддержкиstyle вbody, чтобы'достаточно хорошо для меня, независимо от того, чтоПодразумевается авторами руководящих разделов.
 Lazlo20 авг. 2009 г., 02:57
Если ты'Вы сомневаетесь, валидатор разметки W3C всегда помогает :)http://validator.w3.org/
 user13283708 нояб. 2011 г., 15:06
Одно исключение изположить <стиль> в <голова>» Правило - это html электронная почта, так как многие почтовые сервисы просто удаляют любые заголовочные элементы, что означает, что ваши стили исчезли.

Ответы на вопрос(10)

тег style допускается только в заголовке документа.

Проект HTML 5.2 по тегу стиля (18 августа 2016 г.)

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

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

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

 не будет подтверждено правилами W3C.

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

 TechNyquist13 янв. 2017 г., 09:41
Дон»попробуй это дома.
 geowa420 авг. 2009 г., 14:47
если тег стиля не находится первым в теле
 geowa420 авг. 2009 г., 14:20
imo, стили рендеринга = работает; ничего сложного. последнее предложение необходимо переписать; это не имеет никакого смысла. я упомянул, как это не былоправо" когда я сказал, что не будетЯ не понимаю, что вы имели в виду под этим предложением.
 Esteban Küber20 авг. 2009 г., 14:37
Проблема в том, что даже если ониявляются стиль, у вас будет некоторое мерцание на содержание, когда теstyleпнуть.
 Chuck20 авг. 2009 г., 03:39
Сказать "они работают" это немного сложно. В лучшем случае вы можете сказать, что большинство современных браузеров по-прежнему будут отображать стили, ноничего такого в этой ошибке,работает." Это не может работать в любой будущей версии любого браузера, и они не будутне делай ничего плохого.

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

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

 тег для размещения в теле:

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

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

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

Решение Вопроса

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

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

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

 WraithKenny29 нояб. 2017 г., 23:19
Спецификация требует соответствующих браузеров для поддержкиstyle теги вbody поэтому, несмотря на авторскую часть спецификации, я считаю, что стили тела являются допустимыми.github.com/whatwg/html/issues/1605#issuecomment-235961103
 Zachary Murray26 янв. 2016 г., 23:02
Связанная статья исчезла в ссылке гниль æтак вотs последняя доступная архивированная версия:web.archive.org/web/20150525042412/http://bluerobot.com/web/css/...
 Esteban Küber27 янв. 2016 г., 02:35
@ZacharyMurray спасибо за головы! Я обновил ссылку в теле на веб архивную.
 Jaime Hablutzel16 окт. 2015 г., 01:18
На сегодняшний день кажется, что только Firefox поддерживаетscoped атрибут, см.caniuse.com/#feat=style-scoped.

style элементыдолжен всегда быть вhead, Какое-то время спецификации включалиscoped атрибут дляstyle элементы, которые, когда они есть, позволяли размещать их внутри элемента в теле, чтобы стилизовать только этот элемент 'Потомки ... но эта функция никогда не попала в настоящий браузер (по крайней мере, без необходимости включения через флаг разработчика) и была удалена из обеих спецификаций "из-за отсутствия интереса исполнителя, Как следствие,style элементы теперь разрешены только в тех контекстах, которые допускают содержание метаданных, которое является только заголовком.

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

WhatWG spec имеет это сказать:

4.2.6.style элементКатегории:

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

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

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

В элемент, который является потомком элемент.

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

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

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

где стандарты запрещают стили за пределами.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 элемент происходит, так что неявно этонедействительным в другом месте.

 dav_i20 мая 2013 г., 13:46
Я так растерялся.
 Jan Kyu Peblik08 февр. 2018 г., 20:12
Теперь следует использовать HTML5, в котором IIRC не имеет DTD. То, что говорит одна спецификация HTML5, это то, что есть или нет.

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

Ваш ответ на вопрос