Пришло время разобраться, что такое Media Screen в CSS3 и как это применять в своих проектах. Это так называемые Медиа-запросы CSS, с помощью которых можно адаптировать элементы дизайна под разные размеры экранов. Например можно скрыть определенный блок на мобильных и наоборот показывать его только на широких экранах (десктопах). Как я с этим столкнулся. На клиентском сайте логотип на мобильных съезжает вправо, на компьютерах он наоборот слева. Была поставлена задача написать текст, который будет показан слева от лого на маленьких экранах. На больших его быть не должно. На выручку как раз и пришли медиа-запросы Media Screen CSS. Я знаю, что многие из вас очень любят, когда им показывают наглядно, поэтому приготовил пример.
Media-screen примеры
Если кто-то думает, что это очень сложно и непостижимо, то сейчас ваше мнение изменится и вы на моем примере убедитесь в том, что не так страшен черт, как его малюют. Итак, у нас есть страница, на которой есть шапка с картинкой и блок с контентом черного цвета на желтом фоне.
Для начала в head нужно добавить такую строчку:
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> |
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
CSS код сейчас такой:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #header{
height:120px;
position:relative
padding:5px;
}
#content{
background:#fff000;
padding:5px;
}
p {
padding: 5px;
}
.txt {
font: 65px Verdana bold;
position: relative;
top: 16px;
color: #fff;
left: 80px;
}
img{
margin:5px;
} |
#header{
height:120px;
position:relative
padding:5px;
}
#content{
background:#fff000;
padding:5px;
}
p {
padding: 5px;
}
.txt {
font: 65px Verdana bold;
position: relative;
top: 16px;
color: #fff;
left: 80px;
}
img{
margin:5px;
}
Ставим пред собой задачу на экранах шириной меньше 1000 px изменять цвет текста, фона, покрасить шапку, сместить значок вправо, а слева от него будет появляться надпись. И выглядеть это будет вот так:
То есть мы произведем кардинальные изменения на странице средствами Media screen CSS. Для этого пишем те самые медиа-запросы, которые будут определять ширину экрана девайса и выдавать тот или иной вид.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| @media screen and (max-width: 1000px) {
#header {
background:#543567; /* Красим шапку */
}
}
@media screen and (min-width: 1000px) {
.txt {
font: 25px Verdana bold; /* Показываем заголовок */
position:relative;
top; 15px;
left: 30px;
display:none;
}
}
@media screen and (max-width: 1000px) {
#content {
background:#657493; /* Меняем цвет текста и фона содержимого */
color:#fff;
}
}
@media screen and (max-width: 1000px) {
img {
float:right; /* Смещаем логотип вправо */
}
} |
@media screen and (max-width: 1000px) {
#header {
background:#543567; /* Красим шапку */
}
}
@media screen and (min-width: 1000px) {
.txt {
font: 25px Verdana bold; /* Показываем заголовок */
position:relative;
top; 15px;
left: 30px;
display:none;
}
}
@media screen and (max-width: 1000px) {
#content {
background:#657493; /* Меняем цвет текста и фона содержимого */
color:#fff;
}
}
@media screen and (max-width: 1000px) {
img {
float:right; /* Смещаем логотип вправо */
}
}
Более подробно можно посмотреть код демонстрационной страницы и самостоятельно разобраться что к чему.
Демо
Изменяйте ширину окна браузера, чтобы увидеть изменения. В Хроме есть функция просмотра на разных устройствах. Клавиша F12 Фактически в Media screen CSS мы создаем новые правила, которые вступят в силу только при определенных условиях. В данном случае, если дисплей будет меньше или равен 1000 px. Если будет больше, то ничего меняться не будет.
Надеюсь, что вы уловили мою мысль, которую я хотел донести до вас касательно медиа-запросов. Таким образом можно создавать отдельные таблицы стилей CSS специально для определенных устройств и даже для печати. Такой подход будет гораздо правильней, чем прописывать все стили для каждого устройства в одном файле. Подключается это вот так:
1
| <link rel= "stylesheet" href= "device.css" media= "only screen and (max-device width:640px)"/> |
<link rel= "stylesheet" href= "device.css" media= "only screen and (max-device width:640px)"/>
Можно так же взять готовые стили из Bootstrap CSS и подогнать под свой дизайн.
Спасибо за информацию. Попробую теперь у себя на сайте сделать что-то подобное