Главное Авторские колонки Вакансии Образование
Выбор редакции:
1 118 6 В избр. Сохранено
Авторизуйтесь
Вход с паролем

5 Flexbox методов, о которых Вы должны знать

Используя различные свойства Flexbox мы можем построить нашу страницу из небольших блоков, которые затем с легкостью сможем перемещать и изменять размеры, как нам угодно.
Мнение автора может не совпадать с мнением редакции

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

1. Создание столбцов с одинаковой высотой

На первых порах, это может показаться не трудной задачей, но делать столбцы, которые имеют одинаковую высоту, иногда бывает сделать очень «геморройно». min-height в данном случае использовать будет не практично, так как с увеличением количества контента, находящегося в блоке, так же будет и увеличиваться его длина. Flexbox не видит в этом проблемы. Все, что нам нужно, так это инициализировать гибкую модель. Обязательно убедитесь, что flex-direction и align-items имеют значения «по умолчанию».
<div class="container">
   <div>...</div>
   <div>...</div>
   <div>...</div>
</div>
.container{
   display: flex;
   flex-direction: row; /*Пункты внутри контейнера будут располагаться горизонтально*/
   align-items: stretch; /*Пункты внутри контейнер будут принимать всю его высоту*/
}

1-1.png

Чтоб посмотреть демо пример данного способа пройдите по ссылке.

2. Изменение порядка

Некоторое время назад, если бы мне пришлось динамически изменять порядок некоторых элементов, я, вероятно, попробовал бы некоторые CSS хаки, но потом бросили бы эту затею и в расстройстве сделали бы это с помощью javascript. С flexbox же эта задача сводится всего к применению всего лишь одного свойства СSS.Это свойство называется order. Оно позволяет мне менять любое количество flex элементов и изменять их последовательность, в которой они появятся на экране. Этот параметр представляет собой целое число, определяющее положение элемента — более низкие числа означают больший приоритет.

<div class="container">
   <div class="blue">...</div>
   <div class="red">...</div>
   <div class="green">...</div>
</div>
.conteiner{
   display: flex;
}

/*Обратный порядок элементов*/

.blue{
   order: 3;
}

.red{
   order: 2;
}

.green{
   order: 1;
}

2-1.png

Чтоб посмотреть демо пример данного способа пройдите по ссылке.

3.Горизонтальное и вертикальное центрирование

Вертикальное центрирование в CSS является одной из тех проблем, которые заставляют нас спросить себя: Как такую тривиальную вещь до сих пор так сложно сделать? И это на самом деле так. Если посмотреть в Google вертикальное центрирование CSS, то в результате поиска выскочит бесконечное количество различных методов, большинство из которых будут включать в себя таблицы и преобразования. которые предназначены для изготовления макета.Flexbox предлагает более простое решение этой проблемы. Каждый гибкий макет имеет два направления на оси (X,Y) и два отдельных свойства для их выравнивания. Мы можем позиционировать любой элемент прямо в середине родительского контейнера.

<div class="container">
   <div>...</div>
</div>
.container{
   display: flex;
   /*Центр по главной оси*/
   justify-content: center;
   /*Центр по вспомогательной оси*/
   align-items: center;
}

3-1.png

Пример

4. Создание полностью отзывчивой сетки (Responsive Grids)

Большинство разработчиков полагаются на готовые CSS фреймворки при создании адаптивных сайтов. Bootstrap является наиболее популярным, но есть и сотни других фреймворков, которые помогут вам справиться с этой задачей. Как правило, они хорошо работают и имеют множество опций, но имеют тенденцию быть довольно тяжелыми. Если вы все хотите сделать своими руками и вам не нужных громоздких фреймвокров, тогда Flexbox именно для вас!Строка flexbox сетки представляет собой простой контейнер с display: border;. Внутри горизонтального столбца может быть любое количество элементов, размер которого устанавливается с помощью Flex. Гибкая модель адаптируется gjl размер окна браузера, так что эта схема должна отлично выглядеть на всех устройствах. Тем не менее, если все таки не хватит места на экране по горизонтали, то мы сможем решить эту проблему с помощью медиа-запроса.

<div class="container">
   <!-- Эта колонка будет 25% в ширину -->
   <div class="col-1">...</div>
   <!-- Эта колонка будет 50% в ширину -->
   <div class="col-2">...</div>
   <!-- Эта колонка будет 25% в ширину -->
   <div class="col-1">...</div>
</div>
.container{
    display: flex;
}

.col-1{
    flex: 1;
}

.col-2{
    flex: 2;
}

@media (max-width: 800px){
    .container{
        flex-direction: column;        
    }
}

4.png

Чтоб посмотреть демо пример данного способа пройдите по ссылке.

5. Создание идеального Sticky Footer (прилипающий футер)

Flexbox имеет простое решение этой проблемы. Применение display: flex; к тегу body позволяет построить весь наш макет страницы, на основе свойств Flex. Да чего я все говорю, да говорю? Давайте уже лучше посмотрим на практике.

<body>
    <div class="main">...</div>
    <!-- Наш липкий футер -->
    <footer>...</footer>
</body>
html{
    height: 100%;
}

body{
    display: flex;
    flex-direction: column;
    height: 100%;
}

.main{
   /*Основной раздел будет занимать все свободное место на странице*/
   flex: 1 0 auto;
}

footer{
   /*Футер будет занимать столько места по вертикали, сколько и должен и не пикселя больше */
   flex: 0 0 auto;
}

5.png

Вывод

Все браузеры (кроме IE 9) теперь поддерживают режим Flexbox. Если вы не использовали Flexbox до этого момента, то я рекомендуем Вам попробовать.Надеюсь, что мои советы CSS были для вас полезны и что они помогут вам создавать более качественные и более адаптивные макеты.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Morgenstern
Облачный хостинг VPS и Docker контейнеров
Артемий Никонов
Поправьте, бога ради, код... В строчку он ужасен :)
Ответить
Хурумбра
Коллективный блог, сервис для коллективного создания контента.
Реймакс
Разработка сайтов на 1С-Битрикс. Разработка CRM систем
Максим Медведев
В одну строку не читабельно. Или ссылки на примеры тогда уж.
Ответить
Екатерина К
То есть вот такая статья, посвященная CSS и проектированию страниц, и не содержит ни одной картинки, иллюстрирующей описанный подход?

Оффтоп. Только мне кажется, что ваш сервис - клон хабра?
Ответить
Хурумбра
Коллективный блог, сервис для коллективного создания контента.
Сорокин Сергей
Добавил изображения и больше ссылок на примеры ) Спасибо за указанные недостатки )
Ответить
Alexey Zubarev
Автор, подскажите, по-вашему мнению правильно ли использовать flexbox-разметку, как вот тут http://paratapok.ru/frontend/5148_css3-flexbox/ (в самом низу страницы), для верстки макетов из psd? Или в современных реалиях - это как раз является единственным правильным решением?
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.