Медиазапрос — это подключение определенных стилей при определенной ширине экрана пользователя.
Медиазапросов бывает огромное множество под разные задачи, но сейчас мы будем рассматривать их в контексте адаптивной верстки сайта.
Первое, что необходимо сделать, для подключения адаптивности сайта — прописать мета тег с параметрами вьюпорта.
Ранее эту строку мы добавляли в наш html файл.
Если эта строка не будет прописана, то сайт не будет подключать адаптивные варианты вёрстки.
А дальше подключаем медиазапрос.
В файле CSS пишем
@media ()
Важно! Медиазапрос должен идти после стилей, которые вы хотите менять по правилам потока вёрстки.
Так же вы можете создать отдельный файл css для добавления медиазапросов. Не забудьте подключить его к файлу html.
Мы можем сделать медиазапрос для мобильной версии сайта шириной 360px.
@media (max-width: 360px)
Далее, для проверки подключения нового стиля по медиа запросу изменим цвет заголовка на странице на красный. При этом будем обращаться не к тегу заголовка h1, а к созданному классу для этого заголовка.
На скриншоте видно, что сначала идет общие стили для заголовка, а следом идет переназначение нового стиля для ширины экрана 360px.
Теперь в отладчике мы можем увидеть, что заголовок меняет цвет, как только браузер сжимается до 360 px и меньше.
Если у класса, к которому мы применяем новые значения, есть и другие настройки стилей, как на скриншоте выше (настройки шрифта, отступы, ширина), но нам их менять не нужно, то и в медиазапрос дублировать эти стили не нужно.
В примере мы меняем только значение цвета, поэтому в медиазапрос пишем только его.
В отладчике кода вам так же будет видно, что подключился медиазапрос, а изначальный стиль цвета будет зачеркнут
Чтобы ориентироваться в разных вариантах ширины девайсов скачайте себе памятку: Адаптивы
Смена изображения при уменьшении ширины сайта
Чаще всего для десктоп версии сайта мы загружаем изображения в хорошем качестве. Десктопверсию сайта, скорее всего пользователи будут смотреть на домашнем интернете с высокой скоростью. А вот если этот же сайт будет открыт с телефона на мобильном интернете, то скорость загрузки может быть низкой и картинка будет загружаться долго.
Избежать это можно при помощи тега picture, в котором есть встроенные медиазапросы.
Для примера возьмем изображение, которое мы добавили в html файл
Нам необходимо обернуть это изображение в тег picture
Дале необходимо прописать тег source и srcset с новой картинкой. Для примера, я использую совершенно другое изображение
а дальше прописать media для определения ширины экрана
Внимательно посмотрите на синтаксис.
Теперь при ширине экрана равном 600 или менее пикселей картинка будет меняться автоматически.
Таким образом мы можем добавлять тег source с необходимым медиазапросом столько раз, сколько нам нужно менять картинку при различной ширине экрана.
Псевдоклассы :hover и :active при адаптиве
Для десктопной версии сайта изменение свойств при наведении работает хорошо, но очевидно, что для мобильной версии это не нужно. А вот :active хорошо подойдет для мобильной и планшетной версии, так пользователь будет понимать с какими элементами он взаимодействует пальцем. Но нужно ли прописывать это отдельно в коде? Нет, так как :hover на мобильной версии работает как :active дополнительно при этом ничего не нужно прописывать
Пример. При наведении в десктоп версии див становится черным.
А в мобильной версии черный цвет будет только при нажатии ЛКМ. При этом код остается неизменным.