Обновлено 2026/05/14
Существует несколько способов подключения CSS-стилей к HTML-документу. Каждый вариант имеет свои особенности, область применения и влияние на производительность сайта.
Внешняя таблица стилей — основной и наиболее правильный способ подключения CSS на современных сайтах. Все стили выносятся в отдельный файл, который подключается внутри блока <head>.
Такой подход упрощает поддержку проекта, уменьшает дублирование кода и позволяет браузеру кэшировать CSS-файл.
<head>
<link rel="stylesheet" href="style.css">
</head>
В HTML5 атрибут type="text/css" больше не требуется, так как браузеры автоматически определяют тип подключаемого файла.
:root {
--primary-color: #0d6efd;
--text-color: #212529;
}
body {
margin: 0;
font-family: Arial, sans-serif;
color: var(--text-color);
background: #ffffff;
}
.container {
display: flex;
gap: 20px;
padding: 20px;
}
.card {
flex: 1;
padding: 20px;
border: 1px solid #dee2e6;
border-radius: 6px;
}
Внешние таблицы стилей лучше всего подходят для:
Внутренние стили размещаются непосредственно внутри HTML-документа с помощью тега <style>.
Такой способ подходит для отдельных страниц с уникальным оформлением или для размещения критически важных стилей, необходимых для быстрой первичной отрисовки страницы.
<head>
<style>
:root {
--bg-color: #f8f9fa;
--text-color: #212529;
}
body {
margin: 0;
background: var(--bg-color);
color: var(--text-color);
font-family: Arial, sans-serif;
}
.hero {
display: grid;
place-items: center;
min-height: 300px;
}
</style>
</head>
Главный недостаток внутреннего CSS — отсутствие кэширования. Если одинаковые стили повторяются на нескольких страницах, браузеру приходится загружать их заново вместе с HTML-кодом.
Встроенные стили задаются через атрибут style непосредственно внутри HTML-элемента.
Обычно inline CSS используется точечно: для динамических элементов, email-рассылок или быстрого тестирования.
<p style="display:inline-block;
padding:12px 20px;
background:#f1f3f5;
border-left:4px solid #0d6efd;">
Пример встроенного CSS
</p>
При большом количестве встроенных стилей поддержка проекта становится сложнее:
CSS можно подключать внутри другого CSS-файла с помощью правила @import.
@import url("theme.css");
Также импорт может использоваться внутри тега <style>.
<style>
@import url("style.css");
</style>
Несмотря на простоту, использовать @import для основных стилей сайта не рекомендуется.
Причина — производительность. Браузер сначала загружает основной CSS-файл и только потом обнаруживает дополнительные импорты. Это создает дополнительные сетевые запросы и замедляет отрисовку страницы.
По этой причине для подключения основных таблиц стилей лучше использовать <link rel="stylesheet">.
Если один и тот же стиль задан несколькими способами одновременно, браузер применяет правило приоритетов.
| Способ подключения | Приоритет |
|---|---|
| Встроенный стиль (inline CSS) | Самый высокий |
| Внутренняя таблица стилей | Средний |
| Внешняя таблица стилей | Ниже inline CSS |
Пример:
<head>
<style>
p {
color: blue;
}
</style>
</head>
<p style="color:red;">Текст</p>
В этом случае текст будет красным, так как встроенный стиль имеет более высокий приоритет.
Способ подключения CSS напрямую влияет на скорость загрузки страницы и показатели Core Web Vitals:
Critical CSS — это минимальный набор стилей, необходимый для отображения первого экрана сайта.
Такие стили часто вставляют непосредственно внутрь <style> в блоке <head>, чтобы браузер быстрее начал отрисовку страницы.
<style>
body {
margin: 0;
font-family: Arial, sans-serif;
}
.header {
height: 70px;
background: #ffffff;
}
</style>
Основная таблица стилей при этом загружается отдельно.
Некритичные стили можно загружать с помощью preload.
<link rel="preload"
href="style.css"
as="style"
onload="this.onload=null;this.rel='stylesheet'">
Такой подход позволяет браузеру заранее начать загрузку CSS-файла без блокировки первичной отрисовки страницы.
| Способ | Поддержка | Производительность | Кэширование | Рекомендуемое применение |
|---|---|---|---|---|
| Внешний CSS | Высокая | Высокая | Есть | Основной стиль сайта |
| Внутренний CSS | Средняя | Средняя | Нет | Критические стили |
| Inline CSS | Низкая | Низкая | Нет | Точечные элементы |
| @import | Средняя | Низкая | Есть | Редкие вспомогательные подключения |
Для большинства современных сайтов оптимальным решением остается комбинация:
Такой подход улучшает поддержку проекта, ускоряет загрузку страниц и положительно влияет на SEO и пользовательский опыт.