Самый легкий способ создать боковые колонки одинаковой высоты

Самый легкий способ создать боковые колонки одинаковой высоты

От автора: Очень продолжительное время мы были вынуждены создавать интерфейсы для наших веб-приложений, применяя СSS техники, которые изначально задумывались для верстки печатных документов. Неудивительно, что их использование вызывает столько затруднений у новичков! К счастью, времена меняются. Теперь у нас есть модуль Flexbox. Если вы можете позволить себе не заботиться о поддержке в браузерах IE < 10 (а это большое «если»), то вы можете использовать Flexbox уже сегодня! Спецификация является завершенной, и почти все браузеры поддерживают данный модуль без необходимости применения вендорных префиксов.

скачать исходникидемо

В этой небольшой обучающей статье я покажу, как использовать flexbox, чтобы создать нечто базовое, что раньше вызывало затруднения. И это нечто называется боковая колонка (sidebar), который при этом имеет одинаковую высоту с вашим основным контентом. Основная трудность заключается в том, чтобы объем содержимого в основном блоке и боковой колонке мог меняться, но при этом данные блоки оставались бы одинаковой высоты. С flexbox это очень легко сделать. Вот как это делается.

Скажите «Привет, Flexbox»

В Интернете можно найти множество руководств, в которых рассматривается flexbox. В этой статье мы подойдем к рассмотрению flexbox с практической точки зрения, т.е. сразу же перейдем к его использованию. Сначала создадим HTML разметку:

Нам нужно, чтобы блоки #main div и aside располагались рядом друг с другом и были одинаковой высоты, независимо от объема содержимого, которое в них находится. Нам также хотелось бы, чтобы страница была отзывчивой, т.е. чтобы у боковой колонки была фиксированная ширина, а основной блок с контентом мог сжиматься/расширяться для заполнения доступного пространства. И, наконец, на устройствах с маленьким экраном боковая колонка должна перемещаться под основной блок с контентом.

Вот, как это можно сделать. Для начала активируем модуль flexbox:

Благодаря этому элемент #page становится flex-контейнером (т.е. «резиновым»). Он будет отображаться, как блочный элемент (т.е. будет растягиваться на всю ширину страницы), а все элементы, являющиеся дочерними по отношению к нему, превратятся в flex-элементы. Это очень важный момент, т.к. нам нужно, чтобы основной блок с контентом и боковая колонка растягивались на всю высоту страницы.

Но мы также зададим максимальную ширину 1200px для элемента #page и отцентрируем его. Поскольку это обычный блочный элемент, то можно написать так:

Превосходно! Теперь нам нужно задать ширину для элемента #main и боковой колонки:

Готово! Мы почти закончили. Когда элемент #main будет растягиваться за счет увеличения контента, он будет растягивать и элемент #page, из-за чего впоследствии растянется и элемент aside (и наоборот). Последнее, что нам осталось сделать, это расположить боковую колонку под основным блоком с контентом на устройствах с маленьким экраном. Для этого нам потребуется простой медиа-запрос:

По умолчанию для flex-контейнеров установлено значение row для свойства flex-flow, которое позволяет расположить элементы рядом друг с другом. На маленьких экранах мы переключаемся на вертикальную ориентацию, что заставляет боковую колонку переместиться под основной блок с контентом.

Для краткости я пропустил часть CSS кода, не влияющую на разметку. Но вы можете посмотреть все стили, скачав исходники к данной статье. Также стоит упомянуть, что я не рассказал про альтернативные варианты для работы с flexbox в IE 10, для которого используется немного устаревшая версия спецификации flexbox, т.е. мой пример будет работать только в браузерах Firefox, Chrome, Safari, Opera и IE 11.

Вот наша боковая колонка и готова!

Заключение

Вам предстоит еще многое узнать о flexbox, но я надеюсь, что эта статья даст вам «быстрый старт». Безусловно, модуль Flexbox не является единственным решением для создания подобной разметки страницы, но это за ним стоит будущее разработки веб-интерфейсов. Если вам не нужна поддержка старых версий IE, то вы можете пользоваться им уже сейчас.

Автор: Martin Angelov

Источник: //tutorialzine.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (5)