Атрибут media тега <link>
Описание
Атрибут media для тега <link> определяет тип устройства или условия отображения, для которых предназначен связанный ресурс. Позволяет загружать разные CSS-файлы или другие ресурсы в зависимости от характеристик устройства (ширина экрана, ориентация и др.).
<!-- Разные стили для разных устройств -->
<link rel="stylesheet" href="mobile.css" media="screen and (max-width: 768px)">
<link rel="stylesheet" href="desktop.css" media="screen and (min-width: 769px)">
<!-- Стили для печати -->
<link rel="stylesheet" href="print.css" media="print">
<!-- Предзагрузка с учетом медиа-условий -->
<link rel="preload" as="image" href="large.jpg" media="(min-width: 1024px)">
Типичные медиа-запросы:
| Тип запроса | Пример | Описание |
|---|---|---|
| Тип устройства | media="screen" |
Только для экранов |
| Ширина экрана | media="(max-width: 600px)" |
Для устройств шириной до 600px |
| Ориентация | media="(orientation: portrait)" |
Только портретная ориентация |
| Плотность пикселей | media="(min-resolution: 2dppx)" |
Для экранов высокой плотности |
Особенности работы:
- Браузер загружает все ресурсы, но применяет только соответствующие текущим условиям
- Может использоваться с различными
rel(stylesheet, preload, prerender) - Синтаксис соответствует CSS @media-правилам
- Для сложных условий можно комбинировать через запятую (логическое ИЛИ)
Пример комбинированных условий:
<link rel="stylesheet"
href="special.css"
media="screen and (min-width: 768px) and (orientation: landscape), projection">
Рекомендации по использованию:
- Используйте для адаптивного дизайна вместо условных комментариев
- Оптимизируйте количество медиа-запросов (объединяйте похожие)
- Для критического CSS используйте
media="all" - Проверяйте работу в разных браузерах и устройствах
- Сочетайте с атрибутом
onloadдля неблокирующей загрузки
Оптимизация производительности:
<!-- Неблокирующая загрузка некритических стилей -->
<link rel="stylesheet"
href="non-critical.css"
media="print"
onload="this.media='all'">
Ошибки и проверка:
<!-- Неправильно: синтаксическая ошибка -->
<link rel="stylesheet" href="styles.css" media="screen and max-width: 600px">
<!-- Неправильно: несуществующий тип устройства -->
<link rel="stylesheet" href="styles.css" media="handheld">
<!-- Правильно: валидный медиа-запрос -->
<link rel="stylesheet"
href="styles.css"
media="screen and (max-width: 600px)">
Примечание: Атрибут media является мощным инструментом для создания адаптивных веб-приложений. Для современных проектов рассмотрите использование CSS-методологий (например, Mobile First) в сочетании с этим атрибутом для оптимальной загрузки ресурсов.