Вёрстка по макету из олимпиады. Часть 4
Это четвёртая часть курса про вёрстку макета из студенческой олимпиады по фронтенду от HTML Academy и Яндекса. В ней мы добавим версии шапки для планшета и мобильных устройств. Вот графический макет компонента.
В третьей части мы добавили стили состояний интерактивных элементов. Продолжим с этого состояния.
Чтобы добавить версии для планшета и мобильных устройств, сделаем нашу вёрстку адаптивной.
Адаптивная вёрстка или дизайн — создание страниц сайта, которые автоматически подстраиваются под размер, разрешение и ориентацию экрана устройства.
Для начала в разметке в <head>
укажем метатег viewport
. Он подскажет браузеру, как отображать и масштабировать страницу на разных устройствах. Значение width=device-width
устанавливает ширину области просмотра равной ширине экрана устройства. initial-scale=1
задаёт начальный масштаб 100%
.
Для создания адаптива мы используем подход desktop first. То есть будем двигаться от десктопной версии к планшетной и мобильной: код десктопной версии оставляем как есть, а код остальных версий будем добавлять внутри медиазапросов с max-width
.
Медиазапрос @media (max-width: 1439px)
сработает, когда ширина вьюпорта меньше 1439px
. Медиазапрос будет отвечать за версию для планшета. Размер вьюпорта выбираем, опираясь на размеры компонентов в графическом макете.
В медиазапрос @media (max-width: 1439px)
добавим правило для .header
и укажем минимальную ширину 768
пикселей. Это минимальная ширина шапки в версии для планшета.
Чтобы видеть изменения для планшетной версии, уменьшите ширину мини-браузера вручную или переключите ширину 1000px
в настройках вместо 100%
.
В версии для планшета у контейнера .header__wrap
изменяется ширина и количество колонок.
Изменим ширину для .header__wrap
— установим её равной 618
пикселям. Значение 618
мы получили из макета.
Переопределим грид-шаблон для .header__wrap
так, чтобы получилось две колонки по 309
пикселей каждая.
Уменьшите ширину окна минибраузера и проверьте, что количество колонок меняется.
Также на планшете меняется вертикальное выравнивание элементов грида. Они начинают выравниваться по нижнему краю. Переопределим align-items
.
В версии для планшета нет главной навигации. Спрячем .header__list
с помощью display: none
.
Уменьшите ширину окна минибраузера и проверьте, что главная навигация исчезает.
У ссылки с номером телефона в планшетной версии меняются параметры шрифта. Добавим правило для .header__phone
и переопределим параметры шрифта.
С версией для планшета закончили. На следующем шаге перейдём к версии для мобильных устройств.
Медиазапрос @media (max-width: 767px)
сработает, когда ширина вьюпорта меньше 767px
. Медиазапрос будет отвечать за мобильную версию.
В медиазапрос для мобилок добавим правило для .header
и укажем минимальную ширину 375
пикселей. Значение мы получили из макета.
В мобильной версии переопределяем поля у шапки — по 15
пикселей со всех сторон.
Меняем ширину .header__wrap
на 345px
.
Меняем в грид-шаблоне для .header__wrap
ширину колонок — 114
пикселей для первой, 215
пикселей для второй.
Также на мобильной версии появляется отступ между колонками. По макету он равен 16
пикселей. Добавим его.
На мобильной версии логотип меняет свои размеры. Сначала поменяем размеры контейнера логотипа — .header__logo-link
.
Также эти размеры применим к изображению внутри ссылки.
Уменьшите ширину окна минибраузера и проверьте, что логотип меняет размеры.
В мобильной версии снова меняются параметры шрифта для номера телефона. Переопределим параметры шрифта для .header__phone
.
На финальном шаге поменяйте ширину окна минибраузера сначала под ширину планшетной версии, затем под ширину мобильной и проверьте, что всё работает.
Адаптивная вёрстка шапки готова.