@import
При помощи директивы @import можно импортировать один файл со стилями в другой файл со стилями.
Пример
Скопировать ссылку «Пример» Скопировано
Предположим, в проекте для удобства стили разделены на несколько файлов:
- fonts.css — файл с подключением шрифтов и стилями.
- buttons.css — файл со стилями для кнопок.
- main.css — основной файл стилей с остальным CSS-кодом.
Нам нужно, чтобы все стили загружались при открытии страницы. Для этого импортируем отдельные файлы в наш основной файл main.css:
@import "fonts.css";@import "buttons.css"; /* Остальной CSS-код */
@import "fonts.css"; @import "buttons.css"; /* Остальной CSS-код */
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Начнём с важного: все директивы импорта должны быть в самом верху CSS-файла, до всего остального кода. Иначе не сработает.
Равнозначные варианты импорта:
@import "file.css";@import url("file.css");
@import "file.css"; @import url("file.css");
Технической разницы между этими двумя вариантами нет. Файлы будут импортироваться одинаково в обоих случаях. Путь до файла может быть как абсолютным, так и относительным.
Можно указать, для каких типов устройств должны применяться стили из импортируемого файла:
@import "print-styles.css" print;@import "screen-styles.css" screen;
@import "print-styles.css" print; @import "screen-styles.css" screen;
В этом примере стили из файла, импортируемого в первой строке, будут применяться только при печати. А стили из файла, импортируемого во второй строке, будут применяться для отображения на экране.
Допустимо указывать несколько медиавыражений после пути:
@import "file.css" (min-width: 481px) and (max-width: 768px);@import "file.css" screen and (orientation: landscape);
@import "file.css" (min-width: 481px) and (max-width: 768px); @import "file.css" screen and (orientation: landscape);
Можно проверить, поддерживается ли какое-то конкретное правило или выражение в браузере пользователя, и загрузить для него конкретные стили. Для этого используется правило supports :
@import "file.css" supports(not (display: flex)); /* Остальной CSS-код */
@import "file.css" supports(not (display: flex)); /* Остальной CSS-код */
В этом примере для браузеров, которые не поддерживают флексбоксы, будет загружена запасная таблица стилей. Для всех остальных будут использованы стили, написанные ниже правила импорта.
Как понять
Скопировать ссылку «Как понять» Скопировано
Во время загрузки страницы браузер пройдёт по всем указанным в импортах путям и загрузит таблицы стилей. Затем прочитает правила ниже импортов и отрисует страницу на основании комбинации всего CSS.
Подсказки
Скопировать ссылку «Подсказки» Скопировано
💡 Желательно не злоупотреблять импортами. Потенциально это может замедлить загрузку страницы.
💡 Все импорты всегда должны быть в начале CSS-файла.
💡 Поскольку браузер читает медиавыражения, указанные после пути до файла в импорте в последнюю очередь, то он в любом случае сходит по ссылке почитать стили и только потом определит, нужно ли их применять. Эту особенность стоит держать в голове.
На практике
Скопировать ссылку «На практике» Скопировано
Алёна Батицкая советует
Скопировать ссылку «Алёна Батицкая советует» Скопировано
🛠 Кроме импорта файлов внутри проекта можно встретить использование этой директивы для импорта шрифтов с сайта Google Fonts. Это один из предложенных на их сайте вариантов подключения.
@import url("https://fonts.googleapis.com/css2?family=Andika+New+Basic&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Andika+New+Basic&display=swap");
После этого в коде ниже можно использовать подключённый шрифт. Минимум усилий — максимум результата.
Хотя это быстрый способ подключить шрифт, его использование нежелательно. Браузеру потребуется больше времени для отрисовки страницы. Особенно это будет заметно, если скорость интернета не очень высокая.
Из двух предложенных на сайте Google Fonts вариантов подключения шрифта выбирайте тот, что через .
🛠 Если проект большой, то удобно разделять стили на разные файлы. Отдельно стили для разметки, отдельно для типографики, отдельно для форм и кнопок. В этом случае в основном файле стилей — назовём его style.css — будут только импорты. Так удобнее содержать код в чистоте. И всегда точно знаешь, в какой файл залезть, чтобы что-нибудь поправить.
Так организуют проекты, в которых есть так называемый сборщик: он собирает код из всех импортируемых файлов в один файл, чем сильно облегчает жизнь браузеру. Если вы не используете сборщик, то постарайтесь избежать обилия импортов.
Способы добавления стилей на страницу
Для добавления стилей на веб-страницу существует несколько способов, которые различаются своими возможностями и назначением. Далее рассмотрим их подробнее.
Связанные стили
При использовании связанных стилей описание селекторов и их значений располагается в отдельном файле, как правило, с расширением css, а для связывания документа с этим файлом применяется тег . Данный тег помещается в контейнер , как показано в примере 3.1.
Пример 3.1. Подключение связанных стилей
HTML5 CSS 2.1 IE Cr Op Sa Fx
Значение атрибута тега — rel остаётся неизменным независимо от кода, как приведено в данном примере. Значение href задаёт путь к CSS-файлу, он может быть задан как относительно, так и абсолютно. Заметьте, что таким образом можно подключать таблицу стилей, которая находится на другом сайте.
Содержимое файла mysite.css подключаемого посредством тега приведено в примере 3.2.
Как видно из данного примера, файл со стилем не хранит никаких данных, кроме синтаксиса CSS. В свою очередь и HTML-документ содержит только ссылку на файл со стилем, т. е. таким способом в полной мере реализуется принцип разделения кода и оформления сайта. Поэтому использование связанных стилей является наиболее универсальным и удобным методом добавления стиля на сайт. Ведь стили хранятся в одном файле, а в HTML-документах указывается только ссылка на него.
Глобальные стили
При использовании глобальных стилей свойства CSS описываются в самом документе и располагаются в заголовке веб-страницы. По своей гибкости и возможностям этот способ добавления стиля уступает предыдущему, но также позволяет хранить стили в одном месте, в данном случае прямо на той же странице с помощью контейнера , как показано в примере 3.3.
Пример 3.3. Использование глобального стиля
HTML5 CSS 2.1 IE Cr Op Sa Fx
H1 Hello, world!
В данном примере задан стиль тега , который затем можно повсеместно использовать на данной веб-странице (рис. 3.1).
Рис. 3.1. Вид заголовка, оформленного с помощью стилей
Внутренние стили
Внутренний или встроенный стиль является по существу расширением для одиночного тега используемого на текущей веб-странице. Для определения стиля используется атрибут style , а его значением выступает набор стилевых правил (пример 3.4).
Пример 3.4. Использование внутреннего стиля
HTML5 CSS 2.1 IE Cr Op Sa Fx
Пример текста
В данном примере стиль тега
задаётся с помощью атрибута style , в котором через точку с запятой перечисляются стилевые свойства (рис. 3.2).
Рис. 3.2. Использование внутренних стилей для изменения вида текста
Внутренние стили рекомендуется применять на сайте ограниченно или вообще отказаться от их использования. Дело в том, что добавление таких стилей увеличивает общий объём файлов, что ведет к повышению времени их загрузки в браузере, и усложняет редактирование документов для разработчиков.
Все описанные методы использования CSS могут применяться как самостоятельно, так и в сочетании друг с другом. В этом случае необходимо помнить об их иерархии. Первым имеет приоритет внутренний стиль, затем глобальный стиль и в последнюю очередь связанный стиль. В примере 3.5 применяется сразу два метода добавления стиля в документ.
Пример 3.5. Сочетание разных методов
HTML5 CSS 2.1 IE Cr Op Sa Fx
H1 Заголовок 1 Заголовок 2
В данном примере первый заголовок задаётся красным цветом размером 36 пикселов с помощью внутреннего стиля, а следующий — зелёным цветом через таблицу глобальных стилей (рис. 3.3).
Рис. 3.3. Результат применения стилей
Импорт CSS
В текущую стилевую таблицу можно импортировать содержимое CSS-файла с помощью команды @import . Этот метод допускается использовать совместно со связанными или глобальными стилями, но никак не с внутренними стилями. Общий синтаксис следующий.
@import url("имя файла") типы носителей; @import "имя файла" типы носителей;
После ключевого слова @import указывается путь к стилевому файлу одним из двух приведенных способов — с помощью url или без него. В примере 3.6 показано, как можно импортировать стиль из внешнего файла в таблицу глобальных стилей.
HTML5 CSS 2.1 IE Cr Op Sa Fx
@import url("style/header.css"); H1 Заголовок 1
Заголовок 2
В данном примере показано подключение файла header.css , который расположен в папке style.
Аналогично происходит импорт и в файле со стилем, который затем подключается к документу (пример 3.7).
Пример 3.7. Импорт в таблице связанных стилей
@import "/style/print.css"; @import "/style/palm.css"; BODY
В данном примере показано содержимое файла mysite.css , который добавляется к нужным документам способом, показанным в примере 3.1, а именно с помощью тега .
Вопросы для проверки
1. Сайт имеет более ста HTML-документов, имеющих одинаковое стилевое оформление. Какой способ подключения CSS подходит лучше всего?
- Связанные стили.
- Глобальные стили.
- Блочные стили.
- Внутренние стили.
- Экспорт стиля.
2. В данном примере, какой цвет будет у текста на веб-странице?
HTML < color: black; >BODY < color: red; >P Текст
3. Какой HTML-код применяется для подключения внешнего CSS-файла?
4. Какой атрибут используется для определения внутреннего стиля?