Медиа запросы (media query)

В современном мире, сайты можно просматривать не только через обычные настольные компьютеры и ноутбуки, но и с помощью — планшетов, смартфонов, нетбуков, сотовых телефонов, которые имеют более низкое разрешение экрана.

Обычные сайты с фиксированными размерами, не могут хорошо просматриваться на всех устройствах одновременно:

1) для большинства мобильных устройств стандартная ширина сайта в 1000 пикселей будет больше размера экрана, так как есть сотовые телефоны с размером экрана в 200 пикселей.

2) а если сделать сайт с шириной в 200 пикселей, то такой сайт будет практический не виден на обычных настольных компьютерах и ноутбуках.

Что делать?

Лучшим выходом из этой дилеммы будет применение медиа запросов (media query).

Что такое медиа запросы (media query)?

Для начала перейдите по ссылке медиа запросы и попробуйте изменить размер экрана браузера от 400 пикселей до 800 пикселей (конечно если есть такая возможность).

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

Код этого примера довольно простой!

index.html:
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="style.css" />
</head>
<body>
<div id='box'></div>
</body>
</html>

style.css:
#box {
width: 100%;
height: 50px;
background: green;
}

@media only screen and (max-width:700px)
{
#box {
background: yellow;
}
}

@media only screen and (max-width:500px)
{
#box {
background: black;
}
}

Синтаксис медиа запросов

Синтаксис медиа запросов довольно простой, запись:
@media only screen and (max-width:700px)
{
#box {
background: yellow;
}
}
означает что для всех размеров экрана меньше 700 пикселей, бокс с div id="box" будет иметь желтый фон.
Отметим что вместо background: yellow; можно поставить любые стилевые стили для div id="box", например сделать высоту бокса равную 100 пикселей: height: 100px;
Запись:
@media only screen and (max-width:500px)
{
#box {
background: black;
}
}
делает фон бокса, для размера экранов менее 500 пикселей, черного цвета.

Замечание о приоритетах медиа запросов

В этом примере есть две друг другу противоречащие записи, в @media only screen and (max-width:700px) цвет бокса установили желтым, а в @media only screen and (max-width:500px) цвет бокса черный.
Для размеров экрана менее 500 пикселей, например для 400 пикселей должны действовать оба стиля, но если есть стили  противоречащие друг другу, то стиль с меньшим max-width будет более приоритетным, в данном случае это @media only screen and (max-width:500px).

Любые размеры экрана

В записях типа @media only screen and (max-width:500px) можно вместо 500 ставить любые значения. Также возможно давать внутри медиа запросов стили не только для одного div, но и для нескольких:
@media only screen and (max-width:500px)
{
#one {
background: black;
}
#two {
background: black;
}
...
}