правило @mediaCSS3-генератор ☛

Определение и использование

Правило @media используется в запросах мультимедиа для применения различных стилей для различных типов носителей/устройств.

Медиа-запросы могут использоваться для проверки многих вещей, таких как:

Использование медиа-запросов популярный метод обеспечения адаптированной таблицы стилей (адаптивного веб-дизайна) для настольных компьютеров, ноутбуков, планшетов и мобильных телефонов.

Вы также можете использовать запросы мультимедиа, чтобы указать, что определенные стили предназначены только для печатных документов или для чтения с экрана (тип носителя: print, screen, или speech).

В дополнение к типам носителей, есть также функции мультимедиа. Функции мультимедиа предоставляют более подробные сведения для запросов мультимедиа, позволяя тестировать определенные функции пользовательского агента или устройства отображения. Например, стили можно применять только к тем экранам, которые больше или меньше определенной ширины.

Синтаксис ?

@media <тип носителя> and|not|only (<медиа_особенности>){
  Описание стиля
}

Обозначения

ОписаниеПример
<тип>Указывает тип значения.<размер>
A && BЗначения должны выводиться в указанном порядке.<размер> && <цвет>
A | BУказывает, что надо выбрать только одно значение из предложенных (A или B).normal | small-caps
A || BКаждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке.width || count
[ ]Группирует значения.[ crop || cross ]
*Повторять ноль или больше раз.[,<время>]*
+Повторять один или больше раз.<число>+
?Указанный тип, слово или группа не является обязательным.inset?
{A, B}Повторять не менее A, но не более B раз.<радиус>{1,4}
#Повторять один или больше раз через запятую.<время>#

Значения

Тип устройства может принимать следующие значения:

all
для всех типов устройств (по умолчанию используется это значение)
print
для принтеров
screen
для экранов компьютеров, планшетов, смартфонов и т.д.
speech
для речевых браузеров

Примечание:
Практические все устройства идентифицируют себя как тип screen (смартфоны и планшеты, ноутбуки и настольные компьютеры).

Логические операторы

and (и)
логическое И. С помощью него можно задать несколько условий и только при условии, что все они будут выполнены, тогда стиль будет применен
or (или)
логическое ИЛИ. Необходимо, чтобы хотя бы одно из условий выполнилось
not (не)
логическое отрицание. Условие стоящие за not должно не выполняться
only
скрыть правило @media от старых браузеров. Новые браузеры просто не заметят этот оператор

Примечание:
Запятая воспринимается как оператор or.

Мультимедийные функции (media function)

aspect-ratio Соотношение ширины и высоты области просмотра (соотношение сторон экрана). Это значение состоит из двух целых положительных чисел, разделенных косой чертой ("/"). Первое число это соотношение пикселей по горизонтали, а второе по вертикали. Например: aspect-ratio: 5/4 (соотношение пять к четырем).
 max-aspect-ratio Максимальное соотношение ширины и высоты области просмотра (соотношение сторон экрана). Это значение состоит из двух целых положительных чисел, разделенных косой чертой ("/"). Первое число это соотношение пикселей по горизонтали, а второе по вертикали.
 min-aspect-ratio Минимальное соотношение ширины и высоты области просмотра (соотношение сторон экрана). Это значение состоит из двух целых положительных чисел, разделенных косой чертой ("/"). Первое число это соотношение пикселей по горизонтали, а второе по вертикали.
color Определяет количество бит на цветовую компоненту устройства вывода. Если устройство не является цветным устройством, то это значение равно нулю. Допускаются только положительные значения. Например, если дисплей использует по 4 бита на красный и синий, а 5 бит на зеленый, то считается, что устройство использует 4 бит на цветовой компонент.
@media screen and (color) { /* Для цветных экранов */
  body { background: #fc0; }
}
@media screen and (min-color:3) { /* Минимум 512 цветов */
  body { background: #ccc; }
 max-color Определяет максимальное количество бит на цветовую компоненту устройства вывода. Допускаются только положительные значения.
 min-color Определяет минимальное количество бит на цветовую компоненту устройства вывода. Допускаются только положительные значения.
color-index Количество цветов, которое устройство может отображать. Отрицательные значения не допускаются.
 max-color-index Максимальное количество цветов, которое устройство может отображать. Отрицательные значения не допускаются.
/* стиль для экранов отображающих не меньше 256 цветов. */
@media all and (min-color-index: 256) {
 ...
}
 min-color-index Минимальное количество цветов, которое устройство может отображать. Отрицательные значения не допускаются.
grid Определяет основано ли выходное устройство на сеточной системе (например, терминал "tty" или дисплей телефона с одним фиксированным шрифтом), в этом случае значение будет равно 1, если устройство растровое, то значение будет равно 0.
/* Стиль для бабушкофона */

@media screen and (grid) and (max-width: 15em) {
     body { font-size: 2em; }
   }
height Задает высоту области просмотра (используются единицы измерения CSS).
 max-height Задает максимальную высоту области просмотра (используются единицы измерения CSS).
 min-height Задает минимальную высоту области просмотра (используются единицы измерения CSS).
monochrome Указывает количество бит на пиксель монохромного устройства. Если устройство не является монохромным, то значение будет равно 0. Допускаются только положительные целые числа.
/* стиль для монохромного и цветного принтера. */

@media print and (monochrome) {
 body { font-family: Times, 'Times New Roman', serif; }
 h1, h2, p { color: black; }
}
@media print and (color) {
 body { font-family: Arial, Verdana, sans-serif; }
 h1, h2, p { color: #556b2f; }
} 
 max-monochrome Указывает максимальное количество бит на пиксель монохромного устройства. Если устройство не является монохромным, то значение будет равно 0. Допускаются только положительные целые числа.
 min-monochrome Указывает минимальное количество бит на пиксель монохромного устройства. Если устройство не является монохромным, то значение будет равно 0. Допускаются только положительные целые числа.
orientation Определяет, находится ли область просмотра в режиме альбомной ориентации - экран шире, чем высота, или в портретной ориентации - высота дисплея больше или равна ширине. Для альбомной ориентации используется значение: orientation: landscape, а для портретной и orientation: portrait.

В данном примере устанавливается разная фоновая картинка в случае альбомной (landscape) или портретной ориентации (portrait).

@media screen and (orientation: landscape) {
  #logo { background: url(logo1.png) no-repeat;
        }

@media screen and (orientation: portrait) {
  #logo { background: url(logo2.png) no-repeat; 
        }
}
resolution Указывает разрешение устройства вывода (например, монитор, или принтер). Разрешение может быть указано как в точках на дюйм (dpi), так и в точках на сантиметр (dpcm).
/* стиль будет работать для принтера с минимальным разрешением 300 точек на дюйм. */

@media print and (min-resolution: 300dpi) {
 ...
}
 max-resolution Указывает максимальное разрешение устройства вывода (например, монитор, или принтер). Разрешение может быть указано как в точках на дюйм (dpi), так и в точках на сантиметр (dpcm).
 min-resolution Указывает минимальное разрешение устройства вывода (например, монитор, или принтер). Разрешение может быть указано как в точках на дюйм (dpi), так и в точках на сантиметр (dpcm).
scan Указывает метод сканирования устройства вывода. Слово сканирование, используемое в этом контексте, не относится к сканеру изображений, например к сканеру, используемому для оцифровки фотографии. Скорее, это означает процесс, посредством которого изображение рисуется на телевизионном экране (или другом устройстве). Для того, чтобы указать тип развертки устройства, необходимо указать одно из значений: череcстрочная развертка - (interlace), прогрессивная развертка (progressive).
width Задает ширину области просмотра (используются единицы измерения CSS).
 max-width Задает максимальную ширину области просмотра (используются единицы измерения CSS).
 min-width Задает минимальную ширину области просмотра (используются единицы измерения CSS).

Мультимедийные функции (Media Queries Level 4)

scriptingОпределяет используются ли языки сценариев, такие как JavaScript в текущем документе.
Значения:
  • enabled - скрипты доступны в текущем документе.
  • initial-only - скрипты доступны только во время первоначальной загрузке страницы, а не после.
  • none - скрипты полностью недоступны в текущем документе.
pointer Используется для запроса о наличии и правильности указывающего устройства, такого как мышь. Если устройство имеет несколько механизмов ввода, то функция указателя должна отражать характеристики "первичного" механизма входного сигнала, который определяется браузером пользователя.
Значения:
  • none - основной механизм ввода устройства не включает в себя указательное устройство.
  • coarse - основным механизмом ввода устройства входит указательное устройство ограниченной точности, например, сенсорные экраны и системы обнаружения движения по типу Kinect - периферийные устройства для Xbox.
  • fine - основной механизм ввода устройства включает в себя точное указывающее устройство, например, мыши, тачпады и устройства для рисования стилусом.
  • Проверяя разные устройства, он показывает, что ноутбуки можно выбрать с помощью запроса @media(hover: hover) и (pointer: fine) {}
    @media(hover: hover) and (pointer: fine) {
        nav a:hover {
            background: yellow;
        }
    }
any-pointer Аналогичен pointer, но используется для запроса возможности любого доступного механизма ввода.
Значения: none | coarse | fine
hover Используется для запроса на способность пользователя навести курсор на элемент на странице. Если устройство имеет несколько механизмов ввода, то функция должна отражать характеристики "первичного" механизма входного сигнала, который определяется браузером пользователя.
Значения:
  • none - указывает, что основное указательное устроство не может навести курсор на элемент на странице, например, сенсорные экраны и экраны, которые используют для рисования стилусом.
  • hover - указывает, что основное указательное устроство может навести курсор на элемент на странице, например, мыши и устройства с физической точкой на экране, как контроллер Nintendo для Wii..
any-hover Аналогичен hover, но используется для запроса возможности любого доступного механизма наведения.
Значения: none | hover
color-gamut Описывает примерный диапазон цветов, которые поддерживаются UA и выходными устройствами.
Значения:
  • srgb - выходное устройство может поддерживать примерно диапазон sRGB или более.
  • p3 - выходное устройство может поддерживать примерно диапазон, указанный DCIP3 цветового пространства или более.
  • rec2020 - выходное устройство может поддерживать примерно диапазон, указанный в ITU-R рекомендации BT.2020 цветового пространства или более.
update Функция средства обновления используется для запроса на способность устройства вывода изменить внешний вид содержимого после его рендеринга.
Значения:
  • none - макет не может быть обновлен, например, для документов, напечатанных на бумаге.
  • slow - макет может динамически меняться в соответствии с обычными правилами CSS, но выходное устройство не в состоянии достаточно быстро отобразить изменения, чтобы восприниматься как плавная анимация, например: e-ink экраны.
  • fast - макет может динамически изменяться в соответствии с обычными правилами CSS и выходное устройство не ограничено в скорости, поэтому такие эффекты как CSS анимация могут быть использованы, например: экраны компьютера..
overflow-block Определяет как выходные устройства обрабатывают содержимое, которое не помещается в область просмотра по оси блока
Значения:
  • none - любое переполнение контента просто не отображается, например, рекламные щиты.
  • scroll - позоляет пользователю прокрутить содержание, например, экраны компьютеров.
  • optional-paged - позволяет пользователям прокрутить переполненное содержимое, например, слайд-шоу.
  • paged - содержимое разделено на отдельные страницы, содержимое, выходящее за пределы одной страницы в оси блока отображается на следующей странице, например, принтеры или устройства для чтения.
overflow-inline Описывает поведение устройства, когда содержимое превышает начальный содержащий блок по inline оси.
Значения:
  • none - любое переполнение контента просто не отображается.
  • scroll - позоляет пользователю прокрутить содержание.

Из всех выше описанных медиа особенностей лишь два используются наиболее часто min-width и max-width.

Варианты подключения медиазапросов

Подключение медиазапросов с использованием тега <link>

Вы можете подключать различные стили для различных устройств, используя HTML тег <link> (определяет связь между документом и внешним ресурсом) и его атрибута media:

<link media = "mediatype and | not | only (media function)" rel = "stylesheet" href = "stylesheet.css">

Обратите внимание, что в этом случае используется в качестве значения атрибута media тот же синтаксис, что и при использовании правила @media css3.

Подключение медиазапросов с использованием тега <style>

Вы можете подключать различные стили для различных устройств, используя HTML тег <style>, который сообщает браузеру, что внутри него содержится код CSS:

1. Используя атрибут тега style:
<style media =  "mediatype and | not | only (media function)">
	...код CSS 
</style>
2. Используя CSS правило @media внутри HTML тега style:
 @media not | only mediatype and (media function) {
 ...код CSS
 }

Подключение медиазапросов с использованием правила @import

Кроме того, Вы можете использовать правило @import, которое позволяет копировать стили из других CSS файлов:

1. импортируем содержимое файла css, который предназначается для устройств с разрешением экрана, находящегося в диапозоне от 481 пикселей до 768 пикселей
@import url("main.css") (min-width:481px) and (max-width:768px);
2. импортируем содержимое файла css, который предназначается для печатных страниц и для режима предварительного просмотра печати
@import url("print.css") print;
3. импортируем содержимое файла css, который предназначается для устройств проекционного типа и телевизионного типа
@import url("protv.css") projection, tv;
4. импортируем содержимое файла css, который предназначается для экранов компьютера И альбомной ориентации
@import url("file.css") screen and (orientation:landscape);

Учтите тот факт, что правило @import увеличивает число соединений с сервером, поскольку файл, на который вы ссылаетесь необходимо скачать и проанализировать (создается дополнительный запрос к серверу). Исходя из правил и рекомендаций PageSpeed Insight (Google), связанных с оптимизацией страниц, рекомендуется избегать применения правила @import.

Настройка области просмотра

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

Для того, чтобы мобильные браузеры автоматически не изменяли размер страниц сайта, необходимо в теге <head> разместить метатег, который сообщает браузеру, как обрабатывать размеры страницы и изменять ее масштаб:

<meta name = "viewport" content = "width=device-width, initial-scale = 1">

Если все страницы Вашего сайта адаптированы для просмотра на мобильных устройствах, то размещение вышеуказанного мета тега является обязательным.

Доступные значения:

widthОпределяет ширину в пикселях области просмотра (значение - положительное целое число или device-width).
heightОпределяет высоту в пикселях области просмотра (значение - положительное целое число или device-height).
initial-scaleОпределяет соотношение между шириной устройства (device-width в портретном режиме или device-height в ландшафтном режиме) и размером области просмотра. Чем больше число, тем выше масштаб. Значение - положительное целое число от 0.0 до 10.0.
minimum-scaleОпределяет минимальное значение zoom (оно должно быть меньше или равно maximum-scale). Значение - положительное целое число от 0.0 до 10.0.
maximum-scaleОпределяет максимальное значение zoom (оно должно быть больше или равно minimum-scale). Значение - положительное целое число от 0.0 до 10.0.
user-scalableЛогическое значение, которое определяет, может ли пользователь увеличить масштаб веб-страницы. Значение по умолчанию yes (пользователь может увеличивать масштаб).

Примеры

  1. Скрыть элемент, если ширина браузера составляет 600 пикселей в ширину или меньше:
    @media screen and (max-width: 600px) {
      div.example {
        display: none;
      }
    }
  2. Использовать запросы мультимедиа, чтобы установить цвет фона в лавандовый, если видовой экран имеет ширину 800 пикселей или шире, в светло-зеленый, если видовой экран имеет ширину от 400 до 799 пикселей. Если видовой экран меньше 400 пикселей, цвет фона будет светло-синим:
    body {
      background-color: lightblue;
    }
    
    @media screen and (min-width: 400px) {
      body {
        background-color: lightgreen;
      }
    }
    
    @media screen and (min-width: 800px) {
      body {
        background-color: lavender;
      }
    }
  3. Создать адаптивное меню навигации (отображается горизонтально на больших экранах и вертикально на маленьких экранах):

    @media screen and (max-width: 600px) {
      .topnav a {
        float: none;
        width: 100%;
      }
    }
  4. Использовать запрос мультимедиа для создания адаптивного макета столбцов:
    /* На экранах шириной 992px или меньше перейти от четырех столбцов к двум столбцам */
    @media screen and (max-width: 992px) {
      .column {
        width: 50%;
      }
    }
    
    /* На экранах шириной 600 пикселей или меньше сделать столбцы стеком на вершине друг друга, а не рядом друг с другом */
    @media screen and (max-width: 600px) {
      .column {
        width: 100%;
      }
    }
  5. Медиа-запросы также можно использовать для изменения макета страницы в зависимости от ориентации браузера. Вы можете иметь набор свойств CSS, которые будут применяться только тогда, когда окно браузера шире, чем его высота, так называемая "ландшафтная" ориентация. Использовать светло-синий цвет фона, если ориентация находится в альбомном режиме:
    @media only screen and (orientation: landscape) {
      body {
        background-color: lightblue;
      }
    }
  6. С помощью запросов мультимедиа можно задать зеленый цвет текста при отображении документа на экране и черный при печати:
    @media screen {
      body {
        color: green;
      }
    }
    
    @media print {
      body {
        color: black;
      }
    }
  7. Список, разделенный запятыми: добавить дополнительный медиа-запрос к уже существующему, используя запятую (это будет вести себя как оператор OR): /* Если ширина находится между 600px и 900px или выше 1100px - измените внешний вид <div> */
    @media screen and (max-width: 900px) and (min-width: 600px), (min-width: 1100px) {
      div.example {
        font-size: 50px;
        padding: 50px;
        border: 8px solid black;
        background: yellow;
      }
    }
  8. Использовать медиа-запросы для создания адаптивного веб-сайта:
    <!DOCTYPE html>
    <html lang="ru-RU">
     <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>HTML Веб сайта Флексбокс</title>
      <style>
      * {
          box-sizing: border-box;
      }
    
      /* Стиль body */
      body {
          font-family: Arial;
          margin: 0;
      }
    
      /* Заголовок / логотипа */
      .header {
          padding: 60px;
          text-align: center;
          background: #1abc9c;
          color: white;
      }
    
      /* Стиль верхней панели навигации */
      .navbar {
          display: flex;
          background-color: #333;
      }
    
      /* Стиль ссылок панели навигации */
      .navbar a {
          color: white;
          padding: 14px 20px;
          text-decoration: none;
          text-align: center;
      }
    
      /* Изменение цвета при наведении */
      .navbar a:hover {
          background-color: #ddd;
          color: black;
      }
    
      /* Контейнер столбца */
      .row {  
          display: flex;
          flex-wrap: wrap;
      }
    
      /* Создайте две неравные колонки, которые сидят рядом друг с другом */
      /* Боковая панель / левый столбец */
      .side {
          flex: 30%;
          background-color: #f1f1f1;
          padding: 20px;
      }
    
      /* Главная колонка */
      .main {
          flex: 70%;
          background-color: white;
          padding: 20px;
      }
    
      /* Поддельные изображения, только для этого примера */
      .fakeimg {
          background-color: #aaa;
          width: 100%;
          padding: 20px;
      }
    
      /* Подвал */
      .footer {
          padding: 20px;
          text-align: center;
          background: #ddd;
      }
    
      /* Отзывчивый макет когда экран меньше, чем 700 пикселей в ширину, 
        сделать два столбца стека друг на друга, а не рядом друг с другом */
      @media screen and (max-width: 700px) {
          .row, .navbar {   
              flex-direction: column;
          }
      }
      </style>
     </head>
     <body>
    
      <!-- Header -->
      <div class="header">
        <h1>Мой Сайт</h1>
        <p>С <b>flexible</b> макетом.</p>
      </div>
    
      <!-- Navigation Bar -->
      <div class="navbar">
        <a href="#">Ссылка</a>
        <a href="#">Ссылка</a>
        <a href="#">Ссылка</a>
        <a href="#">Ссылка</a>
      </div>
    
      <!-- The flexible grid (content) -->
      <div class="row">
        <div class="side">
            <h2>Обо мне</h2>
            <h5>Мое фото:</h5>
            <div class="fakeimg" style="height:200px;">Изображение</div>
            <p>Какой-то текст обо мне..</p>
            <h3>Дополнительный текст</h3>
            <p>Lorem ipsum dolor sit ame.</p>
            <div class="fakeimg" style="height:60px;">Изображение</div><br>
            <div class="fakeimg" style="height:60px;">Изображение</div><br>
            <div class="fakeimg" style="height:60px;">Изображение</div>
        </div>
        <div class="main">
            <h2>НАЗВАНИЕ РУБРИКИ</h2>
            <h5>Название описание, ноябрь 10, 2018</h5>
            <div class="fakeimg" style="height:200px;">Изображение</div>
            <p>Некоторый текст..</p>
            <p>Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, 
              sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
              quis nostrud exercitation ullamco.</p>
            <br>
            <h2>НАЗВАНИЕ РУБРИКИ</h2>
            <h5>Название описание, ноябрь 7, 2018</h5>
            <div class="fakeimg" style="height:200px;">Изображение</div>
            <p>Некоторый текст..</p>
            <p>Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, 
             sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
             quis nostrud exercitation ullamco.</p>
        </div>
      </div>
    
      <!-- Footer -->
      <div class="footer">
        <h2>Подвал</h2>
      </div>
    
     </body>
    </html>

Браузеры: Настольные Мобильные     ?

Internet ExplorerChromeOperaSafariFirefox
919.21.31
AndroidFirefox MobileOpera MobileSafari Mobile
1193.1

Браузеры

В таблице браузеров применяются следующие обозначения.

  •  — элемент полностью поддерживается браузером;
  •  — элемент браузером не воспринимается и игнорируется;
  •  — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.

@-правила

Справочник CSS
×
Справочник CSS