Flex basis css что это

Flexbox в CSS

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

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

Flexbox позволяет элегантно контролировать самые разные параметры элементов внутри контейнера: направление, порядок, ширину, высоту, выравнивание вдоль и поперек, распределение свободного места, растяжение и сжатие элементов.

Базовые знания

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

FlexBox состоит из Контейнера и его Дочерних элементов (items) (гибких элементов).

После включения flex свойства, внутри контейнера создаются две оси: главная и поперечная (перпендикулярная (⊥), кросс ось). Все вложенные элементы (первого уровня) выстраиваются по главной оси. По умолчанию главная ось горизонтальная и имеет направление слева направо (→), а кросс ось соответственно вертикальная и направлена сверху вниз (↓).

Еще одной важной особенностью Флекс-бокс является наличие рядов в поперечном направлении. Чтобы понять о чем речь, давайте представим что есть главная горизонтальная ось, много элементов и они не «лезут» в контейнер, поэтому переходят на другой ряд. Т.е. контейнер выглядит так: контейнер, внутри него два ряда, в каждом ряду по несколько элементов. Представили? А теперь запомните, что выравнивать по вертикали мы можем не только элементы, но и ряды! Как это работает хорошо видно в примере к свойству align-content. А вот так это выглядит схематически:

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

CSS свойства Flexbox

Flexbox содержит разные css правила для управления всей flex конструкцией. Одни нужно применять к основному контейнеру, а другие к элементам этого контейнера.

Для контейнера

Изменяет направление главной оси контейнера. Поперечная ось меняется соответственно.

Управляет переносом непомещающихся в контейнер элементов.

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

Выравнивает элементы по основной оси: если direction=row, то по горизонтали, а если direction=column, то по вертикали.

Выравнивает ряды, в которых находятся элементы по поперечной оси. То же что justify-content только для противоположной оси.

Заметка: Работает только когда высота контейнера фиксированная (выше чем ряды внутри него).

Это свойство мало где нужно и вместо него чаще используется align-items (см.ниже).

Задает размер промежутка между элементами контейнера. Соответственно:

Поддержка gap ( у column-gap поддержка точно такая же ):

Для элементов контейнера

Задает коэффициент увеличения элемента при наличии свободного места в контейнере. По умолчанию flex-grow: 0 т.е. никакой из элементов не должен увеличиваться и заполнять свободное место в контейнере.

По умолчанию flex-grow: 0

Задает коэффициент уменьшения элемента. Свойство противоположное flex-grow и определяет как элемент должен сжиматься, если в контейнере не остается свободного места. Т.е. свойство начинает работать, когда сумма размеров всех элементов больше чем размер контейнера.

По умолчанию flex-shrink:1

По умолчанию: auto

По умолчанию: flex: 0 1 auto

Однако можно указать и одно, и два значения:

По умолчанию: от align-items контейнера

Позволяет менять порядок (позицию, положение) элемента в общем ряду.

По умолчанию: order: 0

Так можно, например, первый элемент перекинуть в конец, при этом не меняя направление движения остальных элементов или HTML код.

Заметки

Чем отличается flex-basis от width?

Ниже важные различия между flex-basis и width / height:

flex-basis работает только для главной оси. Это значит что при flex-direction:row flex-basis контролирует ширину (width), а при flex-direction:column контролирует высоту (height). Смотрите пример.

flex-basis применяется только к flex элементам. А значит если отключить flex у контейнера это свойство не будет иметь эффекта.

Примеры Flex верстки

В примерах нигде не используются префиксы для кроссбраузерности. Сделал я так для удобного чтения css. Поэтому примеры смотрите в последних версиях Chrome или Firefox.

#1 Простой пример с выравниванием по вертикали и горизонтали

Или так, без блока внутри:

#1.2 Разделение (разрыв) между элементами флекс блока

#2 Адаптивное меню на flex

Сделаем меню в самом верху страницы. На широком экране оно должно быть справа. На среднем выравниваться по середине. А на маленьком каждый элемент должен быть на новой строке.

Перейдите в jsfiddle.net и изменяйте ширину секции «результат»

#3 Адаптивные 3 колонки

Этот пример показывает как быстро и удобно сделать 3 колонки, которые при сужении будут превращаться в 2 и затем в 1.

Обратите внимание, что сделать это можно без использования media правил, все на flex.

Перейдите в jsfiddle.net и изменяйте ширину секции «результат»

#4 Адаптивные блоки на flex

Допустим нам нужно вывести 3 блока, один большой и два маленьких. При этом нужно чтобы блоки подстраивались под маленькие экраны. Делаем:

Перейдите в jsfiddle.net и изменяйте ширину секции «результат»

#5 Галерея на flex и transition

Этот пример показывает как быстро можно сделать симпатичный аккордеон с картинками на flex. Обратите внимание на свойство transition для flex.

#6 Флекс во флекс (просто пример)

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

Еще примеры

Полной поддержки разумеется нет, однако все современные браузеры поддерживают flexbox конструкции. Для некоторых все еще нужно указывать префиксы.

Чтобы знать какие префиксы актуальны на сегодня (июнь. 2019), приведу пример всех flex правил с нужными префиксами:

Лучше если свойства с префиксами будут идти до оригинального свойства.
В этом списке нет ненужных на сегодня (по caniuse) префиксов, но вообще префиксов больше.

Видео

Ну и не забывайте про видео, там порой тоже интересно и понятно. Вот парочка популярных:


Полезные ссылки по Flex

Источник

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

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

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

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

CSS Flex или Flex Box

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

display:flex

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

Вы можете думать о 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 basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

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

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

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

Direction

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

justify-content

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что этоАнимированные возможности justify-content.

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

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

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

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что этоPacking Flex Lines, но теперь с flex-direction: column

align-items

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

flex-basis

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

flex-grow

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

flex-shrink

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

order

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

justify-items

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

И последнее, что нужно для тех, кто хочет использовать 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 basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что этоРеализация бегущей строки с Flex

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

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

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

Источник

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

Авторизуйтесь

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

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

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

display: flex

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

flex-direction

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

justify-content

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

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

align-items

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

align-self

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

flex-basis

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

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

flex-grow

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

Вначале 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 basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

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

Flex basis css что это. Смотреть фото Flex basis css что это. Смотреть картинку Flex basis css что это. Картинка про Flex basis css что это. Фото Flex basis css что это

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

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

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

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

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

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

Источник

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

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