Приветствую вас на своем блоге. Сегодня я хотел бы вам показать, как пишутся в css медиа-запросы и для чего они вообще нужны при создании шаблона.
Немного теории
Итак, для чего они вообще нужны, эти медиа-запросы? Они позволяют изменить стили каким-то элементам при условии изменения ширины окна. Это как с псевдоклассом hover
– он применяет стили к элементу, на который наведен курсор. То есть событие – наведение курсора. Медиа-запросы делают то же самое, только для них событие – изменение ширины экрана. Все, я думаю вам понятно.
Как они пишутся
Медиа-запросы записываются в таблице стилей, обычно в самом конце файла, когда все остальные стили уже описаны. Синтаксис запроса выглядит так:
@media screen and(max-width: 1000px){
Стили…
}
Давайте разберемся подробнее:
@media
– собственно, эта приставка в начале и указывает на то, что мы пишем медиа-запрос.
Screen
– тип носителя. Тут мы указываем screen, потому что это означает экран монитора (или мобильного устройства). Поскольку мы адаптируем сайт под эти устройства, то нам достаточно указать этот тип, но есть и другие.
And
– ключевое логическое слово И. Означает, что после этого идет какое-то условие.
(max-width: 1000px) – само условие. Если ширина окна будет меньше 1000 пикселей, то условие срабатывает и к странице применяются те стили, что будут описаны далее.
Смотрим на примере
Отлично разобраться с медиа-запросами поможет пример. Я создам страницу, которая будет похожа на какую-то статью, и мы ее адаптируем под мобильные устройства. Итак, разметка:
<div id = "wrapper"> <img src = "image.jpg"> <h1>Статья</h1> <p>Текст статьи</p> </div>
Тут мы создали общий контейнер для нашей статьи, вставили в нее картинку, заголовок, а само содержание будет в абзацах. Картинку можно взять любую (я взял достаточно большую). Теперь я применю некоторые стили:
#wrapper{
max-width: 980px;
margin: 0 auto;
}
img{
float: left;
padding: 0 20px
}
Контейнеру задаем максимальную ширину и центрируем его. Теперь при уменьшении окна не будет сразу же появляться горизонтальный скролл, ведь мы записали максимальную ширину, а не фиксированную.
Картинку уводим влево, а текст будет обтекать ее справа с небольшим отступом. Вот так это у меня выглядит:
Я просто добавил много случайного текста в абзацы, чтобы все было больше похоже на реальную статью. Это внешний вид статьи при ширине примерно 800 пикселей. Сейчас все смотрится вполне неплохо, но давайте мы еще уменьшим ширину окна, до 700 пикселей, например:
Вроде бы и неплохо и горизонтальный скролл не появляется, но текстовое содержимое рядом с картинкой стало слишком узким. Слишкое узкие строчки это тоже плохо. И тут нам на помощь придет медиа-запрос.
Важное условие работы! Перед тем, как начинать реализовывать адаптивность, нужно в html в тег head вставить вот такую строчку кода:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Все, теперь все будет работать.
Так, теперь нужно разобраться с тем, как убрать проблему. Собственно, достаточно будет отменить обтекание на ширине от 700 пикселей и меньше и тогда при достижении этой ширины текст сам перенесется под изображение. Также неплохо было бы преобразовать картинку в блок и выровнять ее по центру. Все это делается таким кодом:
@media screen and (max-width: 700px){
img{
float: none;
margin: 0 auto;
display: block;
}
}
Вот и все, теперь вот так вот красиво выглядит наша статья на расширении 700 пикселей.
Еще один адаптивный запрос
Но теперь возникает еще одна проблема – при большем уменьшении окна наступит то время, когда картинка просто перестанет влазить в окно и начнет образовываться горизонтальный скролл, что не есть хорошо.
Примерно это начинает происходить на пятистах пикселях, поэтому давайте добавим на этой отметке еще один запрос:
@media screen and (max-width: 500px){
img{
width: 80%;
}
}
Ширина указывалась мной исходя из того, что изображение имеет небольшие отступы, поэтому задание 100-процентной ширины привело бы к появлению скролла.
Готово. Теперь у нас, по сути, адаптивная страница. Пусть она примитивная, но зато адаптивная.
Откройте ее в браузере и уменьшайте ширину окна. Сначала вы увидите, как отменится обтекание, а потом картинка начнет пропорционально уменьшаться в размерах. И всегда будет так, что содержимое будет полностью влезать в окно. Вот она, сила адаптивности!
Конечно, в этой статье я привел вам самые простые примеры, но они очень важны для понимания того, как это вообще работает. На этом у меня все, в будущем постараюсь написать еще пару статей на эту тему.
Поддерживаю предыдущего оратора, и правда очень понятно как для новичка))) Спасибо)))