что значит display flex

Flexbox

Flexbox — это новый способ располагать блоки на странице. Это технология, созданная именно для раскладки элементов, в отличие от float-ов. С помощью Flexbox можно легко выравнивать элементы по горизонтали и по вертикали, менять направление и порядок отображение элементов, растягивать блоки на всю высоту родителя или прибивать их к нижнему краю.

UPD от 02.02.2017: сделала удобную шпаргалку по флексбоксам, с живыми демками и описаниями из спеки: Flexbox cheatsheet.

В примерах используется только новый синтаксис. На момент написания статьи правильней всего они отображаются в Chrome. В Firefox работают частично, в Safari — вообще не работают.

Спецификация на английском есть тут: w3.org/TR/css3-flexbox.

Согласно сайту caniuse.com, Flexbox не поддерживается 8 и 9-м IE и Opera Mini, а в других браузерах поддерживаются не все свойства и/или требуются префиксы.

Это означает, что технологию нельзя широко использовать прямо сейчас, но уже самое время познакомиться с ней поближе.

Для начала надо знать, что flex-элементы располагаются по осям. По умолчанию элементы располагаются по горизонтали — вдоль main axis — главной оси.

Приготовим полигон для экспериментов:

Один родительский блок (желтый) и 5 дочерних.

Display: flex

Если родительский блок содержит картинки или текст без оберток, они становятся анонимными flex-элементами.

Свойство display для Flexbox может принимать два значения:

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

inline-flex — ведёт себя как инлайн-блочный. Приоритет у содержимого (контент растопыривает блоки до необходимой ширины, чтобы строчки, по возможности, поместились).

Flex-direction

row — строка (значение по умолчанию);

row-reverse — строка с элементами в обратном порядке;

column-reverse — колонка с элементами в обратном порядке.

column и column-reverse :

Flex-wrap

nowrap — блоки не переносятся (значение по умолчанию);

wrap — блоки переносятся;

wrap-reverse — блоки переносятся и располагаются в обратном порядке.

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

flex-flow: column-reverse wrap;

Демо для row-reverse wrap-reverse :

Order

Justify-content

justify-content и align-items применяются к родительскому контейнеру, align-self — к дочерним.

justify-content отвечает за выравнивание по главной оси.

Возможные значения justify-content :

flex-start — элементы выравниваются от начала главной оси (значение по умолчанию);

flex-end — элементы выравниваются от конца главной оси;

center — элементы выравниваются по центру главной оси;

space-between — элементы выравниваются по главной оси, распределяя свободное место между собой;

space-around — элементы выравниваются по главной оси, распределяя свободное место вокруг себя.

flex-start и flex-end :

Align-items

Возможные значения align-items :

flex-start — элементы выравниваются от начала перпендикулярной оси;

flex-end — элементы выравниваются от конца перпендикулярной оси;

center — элементы выравниваются по центру;

baseline — элементы выравниваются по базовой линии;

stretch — элементы растягиваются, занимая все пространство по перпендикулярной оси (значение по умолчанию).

Align-self

align-self также отвечает за выравнивание по перпендикулярной оси, но задается отдельным flex-элементам.

Возможные значения align-self :

auto — значение по умолчанию. Означает, что элемент использует align-items родительского элемента;

flex-start — элемент выравнивается от начала перпендикулярной оси;

flex-end — элемент выравнивается от конца перпендикулярной оси;

center — элемент выравнивается по центру;

baseline — элемент выравнивается по базовой линии;

stretch — элемент растягивается, занимая все пространство по высоте.

Align-content

flex-start — элементы выравниваются от начала главной оси;

flex-end — элементы выравниваются от конца главной оси;

center — элементы выравниваются по центру главной оси;

space-between — элементы выравниваются по главной оси, распределяя свободное место между собой;

space-around — элементы выравниваются по главной оси, распределяя свободное место вокруг себя;

stretch — элементы растягиваются, заполняя всю высоту (значение по умолчанию).

Элементы стоят столбиком, но не переносятся:

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

Думаю, со временем заработает.

UPD от 21.06.2014: всё работает, если задать блоку высоту. За подсказку спасибо SelenIT2.

Источник

Гайд по flexbox

Всё, что нужно знать про флексбоксы: основные термины, свойства флекс-контейнера и флекс-элементов, полезные ссылки по теме.

Время чтения: 12 мин

Обновлено 9 ноября 2021

Что это?

Долгое время веб-интерфейсы были статичными — сайты разрабатывались и просматривались только на экранах мониторов стационарных компьютеров. Однако с десяток лет назад, совсем недавно по историческим меркам, у нас появилось огромное разнообразие экранов — от мобильных телефонов до телевизоров, — на которых мы можем взаимодействовать с сайтами. Так родилась необходимость в гибких системах раскладки.

Идея флексбоксов появилась ещё в 2009 году, и этот стандарт до сих пор развивается и прорабатывается. Основная идея флексов — гибкое распределение места между элементами, гибкая расстановка, выравнивание, гибкое управление. Ключевое слово — гибкое, что и отражено в названии (flex — англ. гибко).

Основные термины

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

Свойства флекс-контейнера

display

Снаружи флекс-контейнер выглядит как блочный элемент — занимает всю ширину родителя, следующие за ним элементы в разметке переносятся на новую строку.

flex-direction

Свойство управления направлением основной и поперечной осей.

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

Важный момент: на сайтах с направлением текста справа налево, например, на сайте на арабском языке, для значений row и row-reverse основная ось будет идти в обратном направлении. Для значений column и column-revers своё направление поменяет поперечная ось.

flex-wrap

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

flex-flow

Как и со всеми шорткатами, с этим стоит быть осторожным. Хоть он и позволяет сэкономить пару строк кода, в случае переопределения одного из значений придётся переписывать свойство целиком, повторяя второе значение, которое не меняется. В таком случае проще было бы иметь два отдельных свойства и менять значения отдельно.

justify-content

Свойство позволяет выравнивать флекс-элементы внутри флекс-контейнера по основной оси.

Возможные значения:

Хотя большинство значений поддерживаются основными браузерами, с некоторыми из них могут быть трудности. Поэтому лучше на всякий случай проверяйте поддержку на Can I use.

align-items

Свойство выравнивания элементов внутри контейнера по поперечной оси.

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

align-content

Свойство распределяет свободное пространство по поперечной оси между рядами флекс-элементов. Предположим, у вас 11 элементов в 3 рядах. Если размер родителя по поперечной оси позволяет, то при помощи align-content можно распределять строчки элементов: по верхнему краю, по нижнему, по центру или равномерно.

Не имеет видимого значения, если элементы располагаются в один ряд.

Свойства флекс-элемента

order

При помощи свойства order можно менять порядок отображения флекс-элементов внутри флекс-контейнера.

По умолчанию элементы отображаются в том порядке, в котором они расположены в разметке, а значение свойства order равно 0.

Значение задаётся в виде целого отрицательного или положительного числа. Элементы встают по возрастающей.

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

flex-grow

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

flex-shrink

Чем больше значение у этого свойства, тем быстрее элемент будет сжиматься по сравнению с соседями, имеющими меньшее значение.

Значение по умолчанию — 1. Значением может быть любое целое положительное число (включая 0).

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

flex-basis

Свойство flex-basis указывает на размер элемента до того, как свободное место будет распределено (см. flex-grow).

align-self

Источник

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

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

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

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

CSS Flex или Flex Box

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

display:flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

Вы можете думать о 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 элементов, будут созданы дополнительные строки.

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

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

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

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

Direction

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

justify-content

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

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

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

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

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

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flexPacking Flex Lines, но теперь с flex-direction: column

align-items

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

flex-basis

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

flex-grow

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

flex-shrink

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

order

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

justify-items

что значит display flex. Смотреть фото что значит display flex. Смотреть картинку что значит display flex. Картинка про что значит display flex. Фото что значит display flex

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

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

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

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

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

Примеры: пункты меню в https://ketoplus.ru/

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

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

Пример: блоки в http://velpharm.ru/about/veltrade/

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

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

Пример: главная страница http://oflomil.ru/

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

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

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

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

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

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

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

Пример: каталог Велфарм (http://velpharm.ru/catalog/), блок Где купить (http://valosemid/#partners, https://gopantomid.ru/)

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

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

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

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

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

Источники: оригинал руководства с картинками

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

Источник

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

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