Вёрстка по макету из олимпиады. Часть 6
В этом интерактивном курсе мы разбираем вёрстку макета из студенческой олимпиады по фронтенду от HTML Academy и Яндекса. Участникам нужно было сверстать сайт по графическому макету с учётом адаптивности и переполнения.
Это шестая часть курса. В ней мы завершим вёрстку десктопной версии, без адаптивности. Вот графический макет компонента.
В пятой части мы сделали разметку и базовую стилизацию шапки. Продолжаем с этого состояния.
Добавим минимальную высоту для блока .hero, чтобы блок хорошо выглядел и при небольшом количестве контента.
Создадим правило для элемента .hero__wrapper, который содержит текстовую часть блока. Определим максимальную ширину для элемента.
Укажем поля. Значения возьмём из макета.
Разместим изображение под блоком с текстом. Для этого зададим изображению position: absolute;, а блоку .hero__wrapper, который в разметке следует сразу за изображением, зададим position: relative;. Благодаря этому .hero__wrapper останется в потоке, но будет перекрывать изображение.
Можете удалить position: relative; у .hero__wrapper и посмотреть, что произойдёт.
Изображение должно занимать всю площадь блока .hero, как будто это фон.
Зададим position: relative; блоку .hero, а затем задададим 100% ширину и высоту изображению. Благодаря абсолютному позиционированию изображение привяжется по высоте и ширине к блоку .hero.
CSS-свойство object-fit со значением cover поможет картинке сохранять пропорции.
Добавим отступы для заголовка .hero__title. Для начала сбросим отступы по умолчанию, а затем добавим внешний отступ снизу. Значение возьмём из макета.
Ограничим по ширине элемент .hero__text.
По аналогии с заголовком, сбросим отступы по умолчанию и добавим отступ снизу. Значение, как обычно, получим из макета.
Чтобы разместить кнопку Подробнее о курсе добавим дополнительный отступ сверху. Для правила используем класс .hero__link. Он отвечает за расположение элемента внутри блока hero. Так мы предусмотрим, что button в других блоках может размещаться иначе.
Определим сеточные стили самой кнопки. Поменяем CSS-свойство display на значение block. Добавим ширину, внутренние отступы.
Добавим скругление.
Определим стили для состояния кнопки при наведении. Добавим медиавыражение @media (hover: hover), которое скажет применить стили для состояния :hover только на устройствах, которые работают с мышью.
Настроим стили в состоянии фокуса.
На финальном шаге проверим компонент на переполнение. Для этого добавим тексты из кейсов, которые есть в макете, и оценим результат. Компонент прошёл проверку на переполнение.
Кстати, чтобы достичь нужного поведения при переполнении, мы задали контейнеру .hero минимальную высоту 640px, а вложенному контейнеру .hero__wrapper небольшой нижний паддинг размером 30px.
Вёрстка десктопной версии промоблока полностью завершена!