Типовые решения в вёрстке
Типовые решения в вёрстке
Практически на любой странице нужно как‑то управлять шириной содержимого: ограничивать её при определённых условиях, задавать отступы от краёв, вытягивать этажи‑плашки на всю ширину экрана и тому подобное.
Обычно, чтобы систематизировать эти ограничения и вынести их за скобки, используется обёртка.
Есть два подхода:
Сделать обёртку каким‑нибудь элементом, например
div
, и задать этому элементу все необходимые стили глобальным классом.Проставлять глобальный класс каждому этажу самого верхнего уровня.
У каждого способа есть свои плюсы и минусы:
Контейнер‑обёртка
Нужно завернуть всё содержимое страницы в контейнер‑обёртку
Класс‑обёртка
Нужно проставить глобальный класс‑обёртку у каждого этажа
Контейнер‑обёртка
Этажам‑исключениям нужно переопределять стили контейнера‑обёртки
Класс‑обёртка
Поведением нестандартных этажей можно управлять классами‑модификаторами
Контейнер‑обёртка подойдёт для случаев, когда структура содержимого страницы всегда одинаковая, например для статьи в блоге. Либо наоборот — в случаях, когда вы не знаете заранее, что будет на странице, поэтому нужно перестраховаться и задать базовые ограничения. То есть такую обёртку лучше использовать в шаблонах страниц с динамическим содержимым.
Для страниц, структура которых зафиксирована и понятна, выгоднее использовать глобальный класс‑обёртку. Пример — простая статичная промостраница с конкретными этажами и содержимым.
На самом деле второй вариант технологичнее, потому что, какой бы сложной ни была динамическая страница, в её основе всё равно будет шаблон, а значит, в нём можно использовать класс‑обёртку.
Перейдём к практике. Я добавил два этажа и подвал к нашему меню из предыдущих советов. Теперь это больше похоже на полноценную страницу:
У нас статичная страница с понятными этажами. Значит, будем использовать класс‑обёртку.
Для начала подумаем, какие ограничения стоит задать. Чтобы на узком окне содержимое страницы не упиралось в края, нужно добавить минимальный несжимаемый отступ слева и справа. При этом у нас есть этаж с изображением, который, наоборот, должен касаться краёв окна. Добавим по тридцать пикселей слева и справа:
.wrapper {
padding: 0 30px;
}
Кроме этого, нужно ограничить максимальную и минимальную ширины содержимого. Допустим, максимальная — 1200 пикселей, а минимальная пусть будет 800 пикселей:
.wrapper {
max-width: 1200px;
min-width: 800px;
margin-left: auto;
margin-right: auto;
padding: 0 30px;
}
Таким образом мы вынесли стили, отвечающие за ширину и боковые отступы страницы, за скобки и теперь можем добавить класс wrapper
любому этажу, чтобы он подчинялся общим правилам:
<header class="wrapper">
...
</header>
<div class="splash wrapper">
<h1>Межпланетный диабаз: основные моменты</h1>
</div>
<article class="wrapper">
...
</article>
<footer class="wrapper">
<p>2020, Классная компания</p>
</footer>
Результат целиком можно посмотреть в Кодсэндбоксе.
Если заглянуть в исходный код сайта бюро, можно увидеть ту же картину: практически каждому этажу назначен класс holder
, отвечающий за отступы от краёв окна.
P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.