Размещение <style> в HTML: в <head> или <body> возможно?

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

**Нет**, тег `<style>` может быть расположен **вне элемента `<head>`**. Обычно его помещают в `<head>`, чтобы повысить скорость загрузки и организовать структуру контента, но вставка тега `<style>` в `<body>` также допустима и применяется для определения стилей элементов, идущих за ним. Пример:
html

<body> <p>Текст без стилей.</p> <style> p { color: red; } </style> <p>Стекст в стиле.</p> </body>


Только параграф "**Текст в стиле.**" примет красный цвет; стили применяются **надёжно и последовательно**.
Кинга Идем в IT: пошаговый план для смены профессии

Традиционные стандарты и нормы

По традициям HTML 3.0, принято помещать элементы <style> в <head>. Такое расположение соответствует спецификациям HTML 4.01, рекомендующим задавать стили до начала тела документа, чтобы предотвратить такие проблемы, как FOUC (Flash of Unstyled Content) и неожиданные изменения макета. Соблюдение стандартов HTML обеспечивает целостность кода и улучшает кроссбраузерную совместимость.

FOUC и перемещение макетов

Помещение тегов <style> в <body> может вызвать задержки в отрисовке. Тогда пользователи могут увидеть контент без стилей до его полной отрисовки, что приводит к эффекту мигания — нежелательному в веб-разработке.

В HTML5 устаревший 'scoped' стиль и современные стандарты

В HTML5 было предложено использовать атрибут scoped для <style>, который разрешал помещение этого тега в <body>. Однако эта функция не была окончательно утверждена и была отменена. Современный стандарт WhatWG и действующие спецификации W3C подтверждают, что использовать <style> вне элементов <head> или <noscript> не рекомендуется.

Этика кодирования и производительность веб-сайта

Соблюдение стандартов оказывает существенное влияние на производительность загрузки. Размещение <style> в <head> позволяет браузеру проанализировать стили до отображения контента, что положительно влияет на пользовательский опыт. Такой порядок расположения <style> отражает стремление к соблюдению этических принципов программирования и уважению к глобальным веб-стандартам.

Недостатки текущего подхода

Не смотря на гибкость современных браузеров, позволяющую располагать теги <style> в <body>, этот подход не рекомендуется. Тот факт, что браузер способен исправить ошибки разработчика, не означает, что такая практика является правильной. Помещение стилей в <head> устраняет зависимость от исправления ошибок браузерами.

Надёжные источники и инструменты проверки

Использование новейших инструментов валидации и знание последних спецификаций являются разумной практикой. Проверка соответствия HTML DTD и других стандартов — важнейший элемент соблюдения текущих стандартов.

Обеспечение совместимости и избегание возможных трудностей

Расположение стилей в <head> способствует единообразию поведения в различных браузерах. Это помогает избегать проблем совместимости, которые могут возникнуть при использовании нестандартных методов. Несмотря на то, что некоторые разработчики выступают в пользу гибкости, правильное расположение <style> считается лучшей практикой, так как оно гарантирует стабильную работу веб-страниц в различных браузерах.

Визуализация

Давайте представим HTML-документ как дом, а элемент <STYLE> как мебель:

Markdown
Скопировать код
Структура дома: [🏠]
    Основание: <HTML>
    Помещения: <BODY>
Markdown
Скопировать код
Верх: <HEAD>🛏️ = Спальня (Традиционное место для мебели)

Однако, мебель мы можем расставить и в других местах:

Markdown
Скопировать код
Повсюду: 🏠🛋️ = Жилые кварталы (STYLE может встретиться и в BODY!)

Таким образом, мы можем сказать, что основное место для <STYLE><HEAD>, но он может существовать и в других частях дома, точно так же как и мебель!

Обеспечение непрерывного пользовательского опыта

При посещении вашего сайта пользователи ожидают увидеть гармонично отрисованный пользовательский интерфейс, без визуальных несоответствий. Размещая <style> в <head>, вы оправдываете эти ожидания, позволяя браузеру проанализировать стили перед отображением контента. Эта практика помогает избежать FOUC и сохранить профессиональный облик вашего сайта.

Глубокое понимание и прогнозирование

Для разработчиков важно понимать влияние своих кодовых решений. Отслеживание тенденций развития спецификаций HTML не только обеспечивает соответствие текущим стандартам, но и позволяет предугадывать будущие требования. Размещая стили в <head>, мы адаптируемся к будущим улучшениям веб-технологий и развитию лучших практик, направленных на производительность и комфортность обслуживания.

Чистый HTML и беззаботное обслуживание

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

Полезные материалы

  1. HTML Standardофициальная спецификация W3C для элемента <style>.
  2. <style>: Элемент стилевой информации – HTML: Язык гипертекстовой разметки | MDNдокументация MDN, подающая понятие и примеры применения тега <style>.
  3. Как работают браузеры | Статьи | web.dev — подробное рассмотрение способов обработки браузерами элемента <style>.
  4. HTML-тег style – W3Schoolsруководство и справочник по использованию тега <style> в HTML.
  5. HTML Standardспецификации W3C по использованию элемента <link> для подключения внешних ресурсов.