Что такое flex html

Flexbox

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

Необходимые навыки:HTML основы (изучите Введение в HTML), знание того, как работает CSS (изучите Вступление в CSS).
Цель:Узнать, как использовать систему адаптируемых блоков Flexbox для создания веб-макетов.

Почему Flexbox?

Долгое время единственными надёжными инструментами CSS вёрстки были такие способы как Float (обтекание) и позиционирование.

С их помощью сложно или невозможно достичь следующих простых требований к макету:

Как вы увидите в последующих разделах, flexbox значительно облегчает работу с макетами. Погружаемся!

Разберём простой пример

В этой статье вы проработаете серию упражнений, которые помогут понять, как работает flexbox. Чтобы начать, скачайте на компьютер стартовый файл — flexbox0.html с нашего Github репозитория — загрузите его в современном браузере (Firefox или Chrome), а также в любимом редакторе кода. Также вы можете посмотреть его вживую.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Определяем, какие элементы разместить в виде flex блоков

В результате у нас получится вот так:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Так, всего одно объявление делает всё, что нам нужно — здорово, правда? Мы получили 3-х колоночный макет с колонками равных размеров по ширине и высоте. Это связано с тем, что значения по умолчанию, заданные для flex элементов (дочерние элементы flex контейнера), настроены для решения основных задач. Подробнее об этом позже.

Примечание: вы также можете установить значение display inline-flex, если хотите расставить inline элементы как flex блоки.

Внутри flex модели

Когда элементы выложены как flex блоки, они располагаются вдоль двух осей:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Запомните эти термины, они пригодятся вам в последующих разделах.

Столбцы или строки?

Попробуйте добавить следующую строчку в ваш файл:

Вы увидите, что элементы расположились в виде столбцов, также как было до того, как мы добавили CSS код. Прежде чем продолжать, удалите эту строчку из примера.

Перенос строк

Проблема может быть в том, что, если у вас фиксированная ширина или высота макета, ваши flexbox элементы переполнят контейнер и нарушат макет. Посмотрите на этот пример: flexbox-wrap0.html и посмотрите его вживую (сохраните его себе на компьютер, если хотите изучить этот пример):

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Попробуйте, и вы увидите, что так макет стал выглядеть гораздо лучше:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Но мы можем пойти дальше. Прежде всего, попробуйте изменить значение свойства flex-direction на row-reverse — теперь у вас также макет в несколько строк, но он начинается из противоположного угла окна браузера и теперь выстраивается в обратном порядке.

flex-flow сокращение

Гибкое изменение размеров flex элементов

Теперь давайте вернёмся к нашему первому примеру и посмотрим, как мы можем контролировать, в каких пропорциях flex элементы будут занимать место. Включите свою копию файла flexbox0.html, или скачайте flexbox1.html (просмотр).

Прежде всего, добавим следующее правило в конец вашего CSS кода:

Это безразмерное значение пропорции, которое указывает, сколько свободного пространства на главной оси (main axis) каждый flex элемент сможет занять. В этом случае, мы даём каждому элементу значение 1, а это значит, что они будут занимать равное количество свободного места в макете, которое осталось после установки свойств padding и margin.

Теперь добавьте следующее правило в строку после предыдущего:

Вы также можете указать минимальный размер внутри значения flex. Попробуйте изменить существующие правила, добавив размеры:

Это просто означает, что каждому flex элементу сначала будет дано 200px от свободного места. Потом оставшееся место будет поделено в соответствии с частями пропорций. Обновите страницу, и вы увидите разницу, как пространство поделено теперь.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex: краткий код против развёрнутого

flex это сокращённое свойство, в которым можно задать до трёх разных свойств:

Мы не советуем использовать развёрнутые свойства flex, если вам в действительности это не нужно (например, переопределить ранее установленное). Они приводят к написанию большого количества дополнительного кода и могут запутать кого угодно.

Горизонтальное и вертикальное выравнивание

Flexbox также имеет функции для выравнивания flex элементов вдоль основной (main) или поперечной (cross) осей. Рассмотрим их на новом примере — flex-align0.html (просмотр) — который мы превратим в аккуратную, гибкую кнопочную панель инструментов. На данный момент вы видите горизонтальную панель меню, кнопки которой застряли в верхнем левом углу.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Сначала сделайте себе копию этого примера.

Теперь добавьте следующую строку в низ кода CSS:

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

align-items контролирует, где на поперечной оси находятся flex элементы.

Вы можете переопределить align-items поведение для отдельных flex элементов, применив свойство align-self к ним. Например, попробуйте добавить эти строки в код:

Посмотрите, что произошло и удалите эти строки.

justify-content контролирует, где flex элементы располагаются на главной оси.

Попробуйте немного поиграть с этими значениями прежде чем продолжить

Порядок элементов flex

В Flexbox также есть возможность менять порядок расположения flex элементов, не влияя на исходный порядок. Это ещё одна вещь, которую невозможно сделать традиционными методами CSS.

Код здесь простой: попробуйте добавить следующий CSS вниз вашего кода примера:

и теперь вы увидите, что кнопка «Smile» переместилась в конец главной оси. Давайте теперь поговорим подробнее о том, как это работает:

Вложенные flex блоки

Можно создать несколько довольно сложных макетов с помощью flexbox. Совершенно нормально сделать flex элемент flex контейнером, чтобы его потомки также были flex блоками. Посмотрите на complex-flexbox.html (см. вживую).

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Давайте посмотрим на код, который мы использовали для макета.

Прежде всего, мы устанавливаем дочерние элементы в виде flex блоков.

Затем мы берём первый

Наконец, мы устанавливаем размер кнопке, мы даём ему значение flex 1. Это даёт очень интересный эффект, который вы увидите, если попытаетесь изменить размер ширины окна браузера. Кнопки занимают столько места, сколько могут, и сидят на одной линии также, сколько могут. Если же они не могут комфортно расположиться на одной линии, они перепрыгнут на новые строки.

Совместимость с браузерами

Поддержка Flexbox доступна в большинстве новых браузеров: Firefox, Chrome, Opera, Microsoft Edge и IE 11, более поздних версиях Android / iOS и т. д.. Однако помните, что до сих пор используются более старые браузеры, которые не поддерживают Flexbox ( или поддерживают, но старую версию.)

Пока вы просто учитесь и экспериментируете, это не имеет большого значения. Однако, если вы рассматриваете возможность использования flexbox на реальном веб-сайте, вам необходимо провести тестирование и убедиться, что ваш пользовательский интерфейс по-прежнему приемлем в максимально возможном количестве браузеров.

Flexbox немного сложнее, чем некоторые функции CSS. Например, если в браузере отсутствует поддержка CSS тени, сайт по-прежнему будет можно использовать. А вот неподдерживаемые функции flexbox, возможно, полностью сломают макет, что сделает сайт непригодным.

Мы обсудим возможности преодоления проблем поддержки кросс-браузерности в следующем модуле.

Подытожим

Источник

Полное руководство по CSS Flex + опыт использования

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Как и CSS Grid, Flex Box довольно сложен, потому что состоит из двух составляющих: контейнера и элементов внутри него.

Когда я начал изучать Flex, я хотел увидеть все, на что он способен. Но мне не удалось найти подробное руководство с примерами всех возможностей. Поэтому я решил самостоятельно создать диаграммы свойств Flex с «высоты птичьего полета».

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex htmlЭто все, на что способен Flex.

Но… давайте рассмотрим каждую диаграмму отдельно. К концу этого руководства по Flex вы узнаете обо всех его возможностях.

CSS Flex или Flex Box

Flex — это набор правил для автоматического растягивания нескольких столбцов и строк внутри родительского контейнера.

display:flex

В отличие от многих других свойств CSS, в Flex есть основной контейнер и вложенные в него элементы. Некоторые свойства CSS-Flex относятся только к контейнеру. А другие можно применить только к элементам внутри него.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Вы можете думать о flex-элементе как о родительском контейнере со свойством display: flex. Элемент, помещенный в контейнер, называется item. Каждый контейнер имеет границы начала(flex-start) и конца гибкости(flex-end), как показано на этой диаграмме.

Горизонтальная (main) и вертикальная (cross) оси

Хотя список элементов представлен линейно, необходимо обращать внимание на строки и столбцы. По этой причине Flex включает в себя координатные оси. Горизонтальная ось называется main-axis, а вертикальная — cross-axis.

Чтобы управлять шириной содержимого контейнера и промежутками между элементами, которые растягиваются вдоль main-axis, необходимо использовать Justify-content. Для управления вертикальными изменениями элементов необходимо использовать align-items.

Если у вас есть 3 столбца и 6 элементов, Flex автоматически создаст вторую строку для размещения оставшихся элементов. Если у вас в списке более 6 элементов, будут созданы дополнительные строки.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

По умолчанию, элементы Flex равномерно распределяются внутри контейнера по горизонтальной оси. Мы рассмотрим различные свойства и значения.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex htmlВы можете определять количество столбцов.

Распределение строк и столбцов внутри родительского элемента определяется свойствами CSS Flex flex-direction, flex-wrap и некоторыми другими, которые будут продемонстрированы дальше.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html:У нас есть произвольное n-количество элементов, расположенных в контейнере. По умолчанию элементы растягиваются слева направо. Однако направление можно изменить.

Direction

Можно задать направление движения элементов (по умолчанию слева направо).

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-direction: row-reverse изменяет направление движения списка элементов. По умолчанию стоит значение row, что означает движение слева направо.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-wrap: wrap определяет перенос элементов на другую строку, когда в родительском контейнере заканчивается место.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-flow включает в себя flex-direction и flex-wrap, что позволяет определять их с помощью одного свойства.

flex-flow: row wrap определяет значения flex-direction как row и flex-wrap как wrap.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

    flex-flow:row wrap-reverse (перенос элементов вверх)

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

    flex-flow:row wrap (стандартный перенос элементов); justify-content: space-between (пробел между элементами);

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

    flex-flow: row-reverse wrap (направление движения справа налево со стандартным переносом сверху вниз)

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

    flex-flow: row-reverse wrap-reverse (направление движения справа налево и обратный перенос элементов);

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

    flex-flow: row wrap; justify-content: space-between; (стандартный перенос и направление; расстояние между элементами)

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Направление можно изменить, чтобы сделать вертикальную ось главной.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Когда мы меняем flex-direction на column, свойство flex-flow ведет себя точно так же, как и в предыдущих примерах. За исключением wrap-reverse, когда элементы переносятся снизу вверх.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

justify-content

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Я получил много просьб прояснить приведенный выше пример. Для этого я создал анимацию:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex htmlАнимированные возможности justify-content.

Надеюсь, эта CSS-анимация поможет лучше понять работу justify content.

Свойства следующие:flex-direction:row; justify-content: flex-start | flex-end | center | space-between | space-around | stretch | space-evenly. В этом примере мы используем только 3 элемента в строке.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex htmlТо же свойство justify-content используется для выравнивания элементов, когда flex-direction: column.

Packing Flex Lines (согласно спецификации Flex)

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Я не уверен, реализовано ли это в каком-либо браузере, но когда-то это было частью спецификации CSS-flex и, вероятно, стоит упомянуть об этом для полноты картины.

В спецификации Flex это называется «Packing Flex Lines». По сути, это работает так же, как в примерах выше. Однако стоит обратить внимание, что интервал расположен между целыми группами элементов. Это полезно, когда вы хотите создать зазоры между группами.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex htmlPacking Flex Lines, но теперь с flex-direction: column

align-items

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

align-items контролирует выравнивание элементов по горизонтали относительно родительского контейнера.

flex-basis

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-basis работает аналогично другому свойству CSS: min-width. Оно увеличивает размер элемента в зависимости от содержимого. Если свойство не задействуется, то используется значение по умолчанию.

flex-grow

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-grow применяется к конкретному элементу и масштабирует его относительно суммы размеров всех других элементов в той же строке, которые автоматически корректируются в соответствии с заданным значением свойства. В примере значение flex-grow для элементов было установлено на 1, 7 и (3 и 5) в последней строке.

flex-shrink

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-shrink — это противоположность flex-grow. В примере значение flex-shrink равно 7. При таком значении размер элемента равен 1/7 размера окружающих его элементов (размер которых автоматически скорректирован).

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

order

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

justify-items

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

И последнее, что нужно для тех, кто хочет использовать CSS Grid вместе с Flex Box. justify-items в CSS Grid похожи на justify-content в Flex. Свойства, описанные на приведенной выше диаграмме, не будут работать в Flex, но в значительной степени эквивалентны сетке для выравнивания содержимого ячеек.

Опыт веб-студии ITSOFT

Мы в веб-студии ITSOFT перешли на Flex в 2010 году. В основе всех наших новых проектов лежит именно эта технология. Наш опыт показал, что она позволяет создавать адаптивные и кроссбраузерные сайты с действительно красивым дизайном.

При использовании Flex нужно учитывать, что:

Flex-элементы по умолчанию ужимаются под свое содержимое; Это может пригодиться, когда есть блоки, размер которых изначально неизвестен и зависит от количества контента.

Внешние отступы flex-элементов не схлопываются и не выпадают, в отличие от блочной модели.

Схлопывание и выпадание отступов полезно, в основном, при верстке текстовых страниц, поэтому во избежание путаницы в отступах при создании сеток отсутствие такого поведения приходится очень кстати.

Flex-элементы умеют перераспределять свободное пространство вокруг себя, таким образом меняя свои размеры;

Больше не нужно вручную задавать ширину в процентах флекс-элементам, если необходимо равномерно заполнить все пространство флекс-контейнера. Браузер сам рассчитает размеры и распределит элементы по флекс-контейнеру.

Внутри одного флекс-контейнера можно менять порядок флекс-элементов, хотя в DOM-дереве порядок остается неизменным.

Бывают макеты страниц, в которых порядок следования элементов отличается на мобильной и десктопной версиях. Flex справится с задачей.

Пример: разный порядок следования логотипа и навигации в шапке в мобильной и десктопной версиях (http://elmucin.ru/).

Flex-элементу можно задать не только горизонтальные автоматические отступы, но и вертикальные; к тому же есть специальные свойства, с помощью которых очень просто выравнивать элементы внутри флекс-контейнера по горизонтали или вертикали.

Пример: кнопка всегда находится в нижней части карточки статьи (https://rabiet.ru/experts/), блок продукция (https://stomatofit.ru/#products).

Flex-элементы могут переноситься на следующую строку, если указано соответствующее свойство.

Эта особенность полезна в каталогах и различных списках, где изначально количество всех элементов неизвестно. Если их станет слишком много и предусмотрен перенос, то страница в этом случае не развалится.

Стоит отметить, что Flexbox поддерживается в Internet Explorer 10-11, хоть и с некоторыми оговорками.

Некоторые интересные фишки Flex мы реализовали на сайте oflomil.ru. На разводящей странице есть 3 столбца на всю высоту видимой области экрана. На мобильном они трансформируются в 3 строки, каждая из которых равномерно занимает место в видимой части экрана. На продуктовых страницах без единого скрипта реализована бегущая строка. Текстовые элементы расположены в ряд благодаря inline-flex. Все свободное пространство в ряду распределено между этими элементами равномерно. Наш собственный сайт также свёрстан с использованием Flex.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex htmlРеализация бегущей строки с Flex

Из недостатков можно отметить то, что Flex не хватает при верстке писем. Не во всех почтовых клиентах он работает корректно.

В скором времени большую распространённость получит технология Grid. Однако Grid не замена Flexbox. Флексы в связке с гридами помогут решать задачи, которые раньше были сложными или вовсе невозможными. К примеру, Masonry-раскладка — одна из тех вещей, которую нельзя полноценно реализовать на данный момент. После появления возможностей спецификации Grid Layout 3 уровня в браузерах, реализация такой раскладки станет возможной и к тому же простой.

Дата-центр ITSOFT — размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.

Источник

Как работает CSS Flexbox: наглядное введение в систему компоновки элементов на веб-странице

CSS Flexbox — это технология для создания сложных гибких макетов за счёт правильного размещения элементов на странице. О самой технологии пишут здесь. Мы же решили объяснить возможности CSS Flexbox с использованием гифок.

Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.

display: flex

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Так у блоков появилось свойство flex-контекст, которое в дальнейшем позволит ими управлять гораздо проще, чем с использованием стандартного CSS.

flex-direction

У flex-контейнера есть две оси: главная и перпендикулярная ей.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Обратите внимание, что flex-direction: column не выравнивает блоки по оси, перпендикулярной главной. Главная ось сама меняет своё расположение, и теперь направлена сверху вниз.

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

justify-content

Отвечает за выравнивание элементов по главной оси:

Justify-content может принимать 5 значений:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Space-between задаёт одинаковое расстояние между блоками, но не между контейнером и блоками. Space-around также задаёт одинаковое расстояние между блоками, но теперь расстояние между контейнером и блоками равно половине расстояния между блоками.

align-items

Если justify-content работает с главной осью, то align-items работает с осью, перпендикулярной главной оси. Вернёмся к flex-direction: row и пройдёмся по командам align-items :

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Чтобы получше разобраться в том, как работают оси, объединим justify-content с align-items и посмотрим, как работает выравнивание по центру для двух свойств flex-direction :

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

align-self

Позволяет выравнивать элементы по отдельности:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-basis

Отвечает за изначальный размер элементов до того, как они будут изменены другими свойствами CSS Flexbox:Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-basis влияет на размер элементов вдоль главной оси. Давайте посмотрим, что случится, если мы изменим направление главной оси:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Заметьте, что нам пришлось изменить и высоту элементов: flex-basis может определять как высоту элементов, так и их ширину в зависимости от направления оси.

flex-grow

Это свойство немного сложнее. Для начала зададим блокам одинаковую ширину в 120px:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

По умолчанию значение flex-grow равно 0. Это значит, что блокам запрещено увеличиваться в размерах. Зададим flex-grow равным 1 для каждого блока:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Вначале flex-grow каждого блока равен 1, в сумме получится 6. Значит, наш контейнер разделён на 6 частей. Каждый блок будет занимать 1/6 часть доступного пространства в контейнере. Когда flex-grow третьего блока становится равным 2, контейнер делится на 7 частей: 1 + 1 + 2 + 1 + 1 + 1. Теперь третий блок занимает 2/7 пространства, остальные — по 1/7. И так далее.

flex-grow работает только для главной оси, пока мы не изменим её направление.

flex-shrink

Зададим flex-grow и flex-shrink равными 1:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Теперь поменяем значение flex-shrink для третьего блока на 0. Ему запретили сжиматься, поэтому его ширина останется равной 120px:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

flex-shrink основывается на пропорциях. То есть, если у первого блока flex-shrink равен 6, а у остальных он равен 2, то, это значит, что первый блок будет сжиматься в три раза быстрее, чем остальные.

Создадим два блока:

Что такое flex html. Смотреть фото Что такое flex html. Смотреть картинку Что такое flex html. Картинка про Что такое flex html. Фото Что такое flex html

Ещё больше возможностей свойства вы можете найти в анимированном руководстве по CSS flex​.

Дополнительно

Как с CSS Flexbox меняется размер?

Когда увеличивается первый блок, он не становится в два раза больше второго, и когда уменьшается второй, он также не становится в два раза меньше первого. Это происходит из-за того, что flex-grow и flex-shrink отвечают за темп роста и сокращения.

Немного математики

Если вы также интересуетесь CSS Grid, можете ознакомиться с нашей статьёй, где мы рассматриваем Flexbox и Grid.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *