- Селекторы
- Grid
- !important
- ::after
- ::backdrop
- ::before
- ::first-letter
- ::first-line
- ::-ms-browse
- ::-ms-check
- ::-ms-clear
- ::-ms-expand
- ::-ms-fill
- ::-ms-fill-lower
- ::-ms-fill-upper
- ::-ms-reveal
- ::-ms-thumb
- ::-ms-ticks-after
- ::-ms-ticks-before
- ::-ms-tooltip
- ::-ms-track
- ::-ms-value
- ::placeholder
- ::selection
- :active
- :checked
- :default
- :disabled
- :empty
- :enabled
- :first-child
- :first-of-type
- :focus
- :fullscreen
- :hover
- :indeterminate
- :in-range
- :invalid
- :lang
- :last-child
- :last-of-type
- :link
- :not
- :nth-child
- :nth-last-child
- :nth-last-of-type
- :nth-of-type
- :only-child
- :only-of-type
- :optional
- :out-of-range
- :read-only
- :read-write
- :required
- :root
- :target
- :valid
- :visited
- @charset
- @document
- @font-face
- @import
- @keyframes
- @media
- @page
- @supports
- @viewport
- align-content
- align-items
- align-self
- all
- animation
- animation-delay
- animation-direction
- animation-duration
- animation-fill-mode
- animation-iteration-count
- animation-name
- animation-play-state
- animation-timing-function
- backface-visibility
- background
- background-attachment
- background-clip
- background-color
- background-image
- background-origin
- background-position
- background-repeat
- background-size
- border
- border-bottom
- border-bottom-color
- border-bottom-left-radius
- border-bottom-right-radius
- border-bottom-style
- border-bottom-width
- border-collapse
- border-color
- border-image
- border-left
- border-left-color
- border-left-style
- border-left-width
- border-radius
- border-right
- border-right-color
- border-right-style
- border-right-width
- border-spacing
- border-style
- border-top
- border-top-color
- border-top-left-radius
- border-top-right-radius
- border-top-style
- border-top-width
- border-width
- bottom
- box-shadow
- box-sizing
- caption-side
- clear
- clip
- color
- column-count
- column-fill
- column-gap
- column-rule
- column-rule-color
- column-rule-style
- column-rule-width
- columns
- column-span
- column-width
- content
- counter-increment
- counter-reset
- cursor
- direction
- display
- empty-cells
- filter
- flex
- flex-basis
- flex-direction
- flex-flow
- flex-grow
- flex-shrink
- flex-wrap
- float
- font
- font-family
- font-kerning
- font-size
- font-stretch
- font-style
- font-variant
- font-weight
- height
- hyphens
- image-rendering
- justify-content
- left
- letter-spacing
- line-height
- list-style
- list-style-image
- list-style-position
- list-style-type
- margin
- margin-bottom
- margin-left
- margin-right
- margin-top
- marks
- max-height
- max-width
- min-height
- min-width
- -moz-orient
- object-fit
- opacity
- order
- orphans
- outline
- outline-color
- outline-offset
- outline-style
- outline-width
- overflow
- overflow-x
- overflow-y
- padding
- padding-bottom
- padding-left
- padding-right
- padding-top
- page-break-after
- page-break-before
- page-break-inside
- perspective
- perspective-origin
- pointer-events
- position
- quotes
- resize
- right
- table-layout
- tab-size
- text-align
- text-align-last
- text-decoration
- text-decoration-color
- text-decoration-line
- text-decoration-style
- text-indent
- text-overflow
- text-shadow
- text-transform
- top
- transform
- transform-origin
- transform-style
- transition
- transition-delay
- transition-duration
- transition-property
- transition-timing-function
- touch-action
- unicode-bidi
- user-select
- vertical-align
- visibility
- white-space
- widows
- width
- word-break
- word-spacing
- word-wrap
- writing-mode
- z-index
- zoom
правило @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
- для всех типов устройств (по умолчанию используется это значение)
- для принтеров
- 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 в текущем документе. Значения:
|
pointer | Используется для запроса о наличии и правильности указывающего устройства, такого как мышь. Если устройство имеет несколько механизмов ввода, то функция указателя должна отражать характеристики "первичного" механизма входного сигнала, который определяется браузером пользователя.
Значения:
@media(hover: hover) and (pointer: fine) { nav a:hover { background: yellow; } } |
any-pointer | Аналогичен pointer, но используется для запроса возможности любого доступного механизма ввода.
Значения: none | coarse | fine |
hover | Используется для запроса на способность пользователя навести курсор на элемент на странице. Если устройство имеет несколько механизмов ввода, то функция должна отражать характеристики "первичного" механизма входного сигнала, который определяется браузером пользователя.
Значения:
|
any-hover | Аналогичен hover, но используется для запроса возможности любого доступного механизма наведения.
Значения: none | hover |
color-gamut | Описывает примерный диапазон цветов, которые поддерживаются UA и выходными устройствами.
Значения:
|
update | Функция средства обновления используется для запроса на способность устройства вывода изменить внешний вид содержимого после его рендеринга.
Значения:
|
overflow-block | Определяет как выходные устройства обрабатывают содержимое, которое не помещается в область просмотра по оси блока
Значения:
|
overflow-inline | Описывает поведение устройства, когда содержимое превышает начальный содержащий блок по inline оси.
Значения:
|
Из всех выше описанных медиа особенностей лишь два используются наиболее часто 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>
@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);
@import url("print.css") print;
@import url("protv.css") projection, tv;
@import url("file.css") screen and (orientation:landscape);
Учтите тот факт, что правило @import увеличивает число соединений с сервером, поскольку файл, на который вы ссылаетесь необходимо скачать и проанализировать (создается дополнительный запрос к серверу). Исходя из правил и рекомендаций PageSpeed Insight (Google), связанных с оптимизацией страниц, рекомендуется избегать применения правила @import.
Настройка области просмотра
Необходимо обратить внимание на то, что область просмотра определяет, как веб-страница отображается на мобильном устройстве, если она не задана, то ширина страницы считается равной стандартному значению, и она уменьшается на мобильном устройстве, чтобы поместиться на его экране.
Для того, чтобы мобильные браузеры автоматически не изменяли размер страниц сайта, необходимо в теге <head> разместить метатег, который сообщает браузеру, как обрабатывать размеры страницы и изменять ее масштаб:
<meta name = "viewport" content = "width=device-width, initial-scale = 1">
- Атрибут name задает имя документа метаданным, значение "viewport" дает подсказку браузеру о размере начального размера области просмотра. Функция атрибута content задать значения для этого атрибута.
- Значение width=device-width атрибута content сообщает, что ширина страницы устанавливается в соответствии с размером экрана устройства в аппаратно-независимых пикселях (device-independent pixel, dip), что позволяет странице пересчитывать положение элементов для корректного отображения на различных экранах. По аналогии допускается указать значения для высоты height=device-height.
- Значение initial-scale=1 атрибута content сообщает браузеру, что необходимо установить соответствие 1:1 для пикселей CSS и аппаратно-независимых пикселей вне зависимости от ориентации устройства (альбомной или портретной).
Если все страницы Вашего сайта адаптированы для просмотра на мобильных устройствах, то размещение вышеуказанного мета тега является обязательным.
Доступные значения:
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 (пользователь может увеличивать масштаб). |
Примеры
Скрыть элемент, если ширина браузера составляет 600 пикселей в ширину или меньше: @media screen and (max-width: 600px) { div.example { display: none; } }
- Использовать запросы мультимедиа, чтобы установить цвет фона в лавандовый, если видовой экран имеет ширину 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; } }
- Использовать запрос мультимедиа для создания адаптивного макета столбцов:
/* На экранах шириной 992px или меньше перейти от четырех столбцов к двум столбцам */ @media screen and (max-width: 992px) { .column { width: 50%; } } /* На экранах шириной 600 пикселей или меньше сделать столбцы стеком на вершине друг друга, а не рядом друг с другом */ @media screen and (max-width: 600px) { .column { width: 100%; } }
-
Медиа-запросы также можно использовать для изменения макета страницы в зависимости от ориентации браузера. Вы можете иметь набор свойств CSS, которые будут применяться только тогда, когда окно браузера шире, чем его высота, так называемая "ландшафтная" ориентация.
Использовать светло-синий цвет фона, если ориентация находится в альбомном режиме:
@media only screen and (orientation: landscape) { body { background-color: lightblue; } }
- С помощью запросов мультимедиа можно задать зеленый цвет текста при отображении документа на экране и черный при печати:
@media screen { body { color: green; } } @media print { body { color: black; } }
-
Список, разделенный запятыми: добавить дополнительный медиа-запрос к уже существующему, используя запятую (это будет вести себя как оператор 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; } }
- Использовать медиа-запросы для создания адаптивного веб-сайта:
<!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>
Создать адаптивное меню навигации (отображается горизонтально на больших экранах и вертикально на маленьких экранах):
@media screen and (max-width: 600px) { .topnav a { float: none; width: 100%; } }
Браузеры: Настольные Мобильные ?
Internet Explorer | Chrome | Opera | Safari | Firefox |
9 | 1 | 9.2 | 1.3 | 1 |
Android | Firefox Mobile | Opera Mobile | Safari Mobile |
1 | 1 | 9 | 3.1 |
✖
Браузеры
В таблице браузеров применяются следующие обозначения.
- — элемент полностью поддерживается браузером;
- — элемент браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.
Число указывает версию браузреа, начиная с которой элемент поддерживается.