@media-запросы в CSS

В последнее время в связи с развитием мобильных устройств вырос и процент просмотров сайта с мобильных устройств и планшетных компьютеров. Поэтому для максимальной доступности сайтов со всех устройств в CSS были введены @media-запросы и такой термин, как "адаптивный дизайн", о которых мы и поговорим в этой статье.

Основные понятия

Адаптивный дизайн - дизайн, который подстраивается под размеры и особенности устройства пользователя. Фактически, создается 3 варианта дизайна для компьютеров, планшетов и смартфонов, и все они сливаются воедино. С помощью @media-запросов выводятся стили, соответствующие типу устройства.
@media-запросы позволяют применить определенные стили к определенному типу устройства и его характеристикам, например, к смартфону или устройству с шириной экрана 480px. Типы носителей вы можете увидеть в таблице ниже:
Типы носителей и их описание
ТипОписание
AllВсе типы. Используется по умолчанию.
Aural
Speech
Речевые браузеры и устройства для воспроизведения текста вслух.
BrailleУстройства системы Брайля для слепых людей.
EmbossedПринтеры на основе системы Брайля.
HandheldСмартфоны и другие мобильные устройства.
PrintПечатающие устройства.
ProjectionПроекторы.
ScreenЭкраны мониторов.
TtyТерминалы и устройства с фиксированными размерами символов.
TvТелевизоры.

Синтаксис

Создадим простейший @media-запрос. В данном случае, стили будут применяться для смартфонов.
Код
@media handheld {
/* Стили для смартфонов */
}
Теперь усложним задачу. Сделаем запрос для смартфонов с минимальной шириной 320px и для всех устройств, кроме смартфонов. В этом нам помогут операторы and и not.
Код
@media handheld and (min-width:320px) {
/* Стили для смартфонов с мин. шириной, равной 320px */
}
@media all and (not handheld) {
/* Стили для всех устройств, кроме смартфонов */
}
Запятая по обыкновению в CSS означает "или то, или это". Рассмотрим и этот пример:
Код
@media handheld and (min-width:320px) {
/* Стили для смартфонов с мин. шириной, равной 320px */
}
@media all and (not handheld) {
/* Стили для всех устройств, кроме смартфонов */
}
@media screen and (min-width:1000px), all and (orientation:landscape) {
/* Стили для экранов с мин. шириной, равной 1000px, или для всех устройств с альбомной ориентацией */
}

@media-функции

@media-функции - функции, задающие тех. характеристики устройства. Почти все функции содержат приставки min и max, соответственно означающие минимальные и максимальные значения. Список @media-функций вы можете просмотреть ниже.
@media-функции и их описание
ФункцияMin/maxНосителиЗначенияОписание
Aspect-ratioЕстьHandheld
Print
Projection
Screen
Tty
Tv
Целое число/Целое числоСоотношение ширины и высоты отображаемой области. Указывается 2-мя числами, разделяемыми слэшем (/).
ColorЕстьHandheld
Print
Projection
Screen
Tty
Tv
Целое числоЧисло бит на канал цвета. Например, значение 3 означает, что красный, синий и зеленый могут дать 512 цветов (23 * 23 * 23). Если значение не указано - функция определит, что устройство цветное.
Color-indexЕстьHandheld
Print
Projection
Screen
Tty
Tv
Целое числоОпределяет количество поддерживаемых устройством цветов.
Device-aspect-ratioЕстьHandheld
Print
Projection
Screen
Tty
Tv
Целое число/Целое числоСоотношение ширины и высоты всего экрана. Указывается 2-мя числами, разделяемыми слэшем (/).
Device-height
Device-width
ЕстьВсе, кроме speechЧисловое значение и величина (px,em и др.)Ширина и высота устройства. Как обычно, указывается числовое значение и величина. Например, 320px.
GridНетВсеНетОпределяет, что устройство с фиксированным размером символов. К таким устройствам относятся терминалы и телефоны, поддерживающие только один шрифт.
MonochromeЕстьHandheld
Print
Projection
Screen
Tty
Tv
Целое числоОпределяет, что устройство монохромное. Если указано число, то оно будет означать число бит на пиксель. Например, 8 даст 256 оттенков серого.
OrientationНетHandheld
Print
Projection
Screen
Tty
Tv
Landscape
Portrait
Альбомная/книжная ориентация устройства.
ResolutionЕстьHandheld
Print
Projection
Screen
Tv
Разрешение в dpi (точек на дюйм) или dpcm (точек на сантиметр)Количество пикселей на дюйм/сантиметр.
ScanНетTvInterlace
Progressive
Чересстрочная или прогрессивная развертка телевизора. При чересстрочной развертке телевизор показывает сначала нечетные строки кадра, затем четные. При прогрессивной развертке кадр показывается целиком.
Просмотры: 2896 · Комментарии: 0 · Добавил: Kelin · Категория: Статьи по HTML и CSS
Доступ запрещен
Войдите или Зарегистрируйтесь