ТЛ; др:
Если вам неудобно использовать функции HTML, которые не достигли уровня зрелости Рекомендация W3C , стандартного способа добавления <style>
к <body>
страницы не существует. .
Если вам удобнее использовать менее развитые функции, HTML5.2, по-видимому, стандартизирует <style>
элементы, разрешенные везде, где ожидается потоковое содержимое (т. Е. <body>
и большинство его элементов).
Если вы уже используете атрибут [scoped]
, прекратите использование атрибута [scoped]
, так как он никогда не был стандартизирован и теряет поддержку браузера.
История
HTML 4,01
В HTML4.01 элемент стиля был разрешен только в <head>
. Браузеры, старательно пытавшиеся воспроизвести то, что автор хочет , а не то, что автор написал , уважали <style>
элементы <body>
, несмотря на то, что эти страницы технически были недействительными.
HTML 5
Элемент <style>
продолжал быть недействительным в <body>
HTML 5.1
В некоторых рабочих проектах спецификации HTML5.1 элемент <style>
должен был разрешать атрибут [scoped]
, что позволило бы использовать элемент <style>
в потоке содержание (то есть в <body>
).
В качестве примера того, как это можно было бы использовать:
<!DOCTYPE html>
<title>Example of using the scoped attribute</title>
<div>
<style scoped>
p {
color: darkred;
}
</style>
<p>this text would be dark red</p>
</div>
<p>this text would be black</p>
Поддержка функции области действия была добавлена в Firefox в версии 21 и добавлена в Chrome за флагом в версии 20 . Эта функция не получила достаточной поддержки, поэтому позднее она была удалена из рабочего проекта HTML5.1 .
.
Chrome первым удалил эту функцию в версии 36 . С тех пор Firefox установил эту функцию за флагом в версии 55.
HTML 5,2
В рабочем проекте июля 2017 года спецификации HTML5.2 была добавлена поддержка для элемента <style>
, который должен быть разрешен в содержимом потока:
Контексты, в которых этот элемент может быть использован:
- Где ожидается содержание метаданных.
- В элементе
<noscript>
, который является дочерним элементом элемента <head>
.
- В теле, где ожидается поток.
Акцент на шахте
На момент написания этого дополнения оно оставалось в спецификации HTML5.2, которая в настоящее время находится на уровне зрелости Рекомендация кандидата .
Хотя использование элементов <style>
в <body>
по-прежнему сопряжено с некоторой опасностью, это конкретное изменение стандартизирует то, что браузеры поддерживают многие годы.