Тег <style> внутри любых элементов будет работать?

Я вижу что-то вроде этого:

<div>
<style type="text/css">
...
</style>
</div>

Это очень странно, но все еще работает.

Это против стандартного?

Ответ 1

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

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

ПРЕДУПРЕЖДЕНИЕ: HTML 5 представляет собой черновик, и нет гарантии, что < style scoped > или любая другая функция HTML 5, которая еще не реализована, никогда не будет реализована.

Ответ 2

Да, это нарушает спецификацию HTML.

<!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->

(из раздела div в спецификации)

Следуйте гиперссылкам в живой версии, если вы хотите точно увидеть, как% потока; (он не включает стиль).

Браузеры просто склонны делать огромное количество исправлений ошибок, потому что многие авторы делают глупые вещи.

Не зависеть от восстановления ошибок - там много браузеров, и они не все ведут себя одинаково, когда HTML не соответствует спецификации.

Ответ 4

Я нашел пример, где тег внутри div неправильно читается IE8 (он отлично работает в Firefox и Chrome) Я не могу воспроизвести его с помощью простого примера, потому что я не знаю, где проблема. Но если я переведу снаружи, все будет работать снова. Почему я использую тег внутри div? потому что я загружаю внешние данные с помощью AJAX внутри этого div, и я не знаю другого способа добавить стили в этой ситуации.