Flex shrink css что это

Как работает flex-shrink в CSS. Подробное руководство

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

Jan 19, 2018 · 4 min read

Flex-shrink это подсвойство, которое помогает в создании шаблона страницы с помощью Flex-box.

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

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

👉 Мой Твиттер — там много из мира фронтенда, да и вообще поговорим🖖. Подписывайтесь, будет интересно: ) ✈️

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

#Синтаксис

Чтобы увидеть, к ак это всё происходит на наглядном, живом примере, вам нужно самим изменять размер ширины контейнеры. Поэтому зайдите свои параметры на CodePen и поиграйтесь с шириной окна.

Что мы видим в этой демке?

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

По некоторым причинам, метод работы с flex-shrink отличается от flex-grow и немного сложнее.

Как вы уже наверное догадались, flex решает буквально все проблемы раскладки во фронт-энде.

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

Свойство flex-shrink указывает на то, насколько каждый элемент урежется при нехватке свободного места. Его стандартное значение равно 1. Множество статей просто описывают это свойство как «коэффициент сокращения элемента» и всё. Нет ни слова о том, как он высчитывается.

flex-shrink определяет только важность компонента при его сжатии, если ширина меньше.

Родительский элемент имеет ширину в 500px. Другие три дочерних элемента выставлены на 150px, 200px и 300px.

В общем, общий «вес» получается таким: 1 * 150 + 2 * 200 + 3 * 300 = 1450

Значит, каждый элемент сократится так:

И финальные размеры будут такими:

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

Примерно также, когда сумма всех flex-shrink всех элементов меньше 1, вычисления будут другими:

Тогда общий «вес» будет 145 (просто в 10 раз меньше, формулу пропускаем).

Все три элемента сокращаются не на 150px, а только на 150px (0.1 + 0.2 + 0.3) / 1 или на 60% всего места: 90px.

Место на которое нарезается каждый элемент:

90 * 0.1(flex-shrink) * 150(width) / 145 = 9.31

90 * 0.2(flex-shrink) * 200(width) / 145 = 24.83

90 * 0.3(flex-shrink) * 300(width) / 145 = 55.86

И конечная ширина элементов:

Источник

Исследование CSS-свойства flex

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

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

Свойство flex-grow

CSS-свойство flex-grow используется для настройки так называемого «коэффициента роста» элементов (flex grow factor), что позволяет этим элементам растягиваться, занимая доступное пространство. В качестве значений этого свойства можно использовать только целые числа. Рассмотрим пример.

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

Вверху свойство flex-grow не применяется. Внизу применяется flex-grow: 1

Возможно, тут у вас возникнет вопрос о том, как именно между flex-элементами распределяется свободное пространство. Это — хороший вопрос. Скоро я на него отвечу.

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

Свойство flex-grow не используется

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

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

Нахождение ширины элемента

Итак, тут используется такая формула:

Разберём эту формулу:

Разные значения flex-grow, задаваемые для разных элементов

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

Нахождение ширины элемента в ситуации, когда разным элементам заданы разные значения flex-grow

Можно ли использовать 0 в качестве значения flex-grow?

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

Последствия установки свойства flex-grow в значение 0

Использование flex-grow не приводит к тому, что элементы становятся одинаковыми

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

Свойство flex-shrink

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

Центральному элементу назначено свойство flex-shrink: 1

Вот стили к этому примеру:

Браузер сделает ширину элемента item-2 равной 300px при выполнении следующих условий:

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

Ширина элемента с текстом Is не уменьшается до тех пор, пока на экране достаточно места для его вывода

Как видите, элемент не сжимается, сохраняя ширину в 300px до тех пор, пока ему хватает места.

Свойство flex-basis

Применим к элементу item-1 из нашего примера следующие стили:

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

Использование свойства flex-basis: 50%

Вот соответствующие стили:

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

Результат использования свойства flex-basis: 100%;

Сокращённое свойство flex

В данном контексте мне хотелось бы обратить ваше внимание на одну важную деталь. Речь идёт о flex-элементах с абсолютными и относительными размерами. И, кстати, это не имеет отношения к CSS-позиционированию. Это относится к модели flexbox.

Flex-элементы с относительными размерами

Здесь размер flex-элементов основан на их содержимом. В результате элементы, в которых больше содержимого, будут больше.

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

Элемент, в котором больше содержимого, будет больше

Flex-элементы с абсолютными размерами

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

Элементы имеют одинаковый размер

Особенности свойства flex, которые мне нравятся

Само название свойства flex намекает на то, что оно умеет гибко работать с передаваемыми ему значениями. Это наделяет его некоторыми особенностями, которые кажутся мне привлекательными. Рассмотрим несколько примеров.

▍Одно значение без единиц измерения

▍Два значения без единиц измерения

Взглянем на следующий стиль:

▍Одно значение, представляющее собой некий размер

Поговорим о том, как будет «расшифрован» следующий стиль:

▍Использование значения 0 без указания единиц измерения

Ноль без указания единиц измерения, перед которым нет двух значений коэффициентов гибкости, должен интерпретироваться как значение коэффициента гибкости. Для того чтобы избежать неправильной интерпретации или ошибочного объявления свойства, авторы должны, задавая нулевое значение flex-basis, использовать единицы измерения, или ставить перед этим значением два значения, относящиеся к коэффициентам гибкости.

То есть, чтобы избежать неоднозначностей, вышеприведённый код стоит переписать так:

Пользуйтесь сокращённым свойством flex

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

Сценарии использования и практические примеры

▍Аватары пользователей

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

Аватар, при настройке которого использовано свойство flex

Модель flexbox часто используется для оформления компонентов страниц, имеющих отношение к пользователям. Например, это касается аватара пользователя и соответствующей подписи, которые должны находиться на одной строке.

▍Заголовок элемента

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

Предположим, нам надо оформить заголовок некоего элемента. Этот заголовок должен занять всё доступное ему пространство. Решить эту задачу можно с помощью свойства flex: 1 :

▍Поле ввода для подготовки сообщения

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

Подобные поля часто встречаются в приложениях для обмена сообщениями, вроде тех, что есть в Facebook и Twitter. Такое поле должно занимать всё доступное ему пространство. При этом кнопка для отправки сообщения должна иметь фиксированную ширину. Вот как это выглядит в CSS:

Надо отметить, что некоторым способам использования свойства flex не уделяется достаточно внимания в публикациях, посвящённых этому свойству. Давайте это исправим.

▍Выравнивание нижних элементов, находящихся на разных карточках

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

Цель — выровнять обе даты по красной линии

Предположим, что перед нами — макет, сформированный средствами CSS Grid, в котором имеются две колонки. Проблема тут в том, что даты, выводимые в конце текстового содержимого карточек, не выровнены. А нам нужно, чтобы они находились бы на одной линии, показанной на предыдущем рисунке.

Для решения этой задачи можно воспользоваться моделью flexbox.

Использование разных значений для коэффициентов гибкости

▍Панели управления

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

Набор элементов управления

На подготовку этого примера меня вдохновил дизайн Facebook (значки я тоже взял оттуда). На панели управления (элемент actions в следующем коде) имеется четыре элемента. Последний (элемент actions__item.user ) имеет ширину, которая меньше, чем ширина других элементов. Сформировать подобную панель управления можно так:

▍Анимация, в ходе которой элемент растягивается

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

Элемент растягивается при наведении на него указателя мыши

Flex-элементы можно анимировать при наведении на них указателя мыши. Этот приём может оказаться крайне полезным. Вот соответствующий CSS-код:

Здесь можно найти видео, демонстрирующее всё это в действии.

▍Увеличение размера активной карточки

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

Увеличение размера активной карточки

▍Что делать, если содержимое контейнера больше самого контейнера?

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

Элементы не помещаются в контейнер

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

Попробуем такой стиль:

Но даже при использовании свойства flex: 1 изображения в контейнер не помещаются. Обратимся к спецификации CSS:

Flex-элементы, по умолчанию, не уменьшаются в размерах до величин, меньших, чем размеры их содержимого (длина самого длинного слова или элемента с фиксированным размером). Для того чтобы это изменить, нужно воспользоваться свойствами min-width или min-height.

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

Подробности смотрите в этой моей статье.

Итоги

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

Пользуетесь ли вы CSS-свойством flex в своих проектах?

Источник

Полное руководство по Flexbox

Модуль Flexbox Layout (Flexible Box) (W3C Candidate Recommendation от октября 2017 г.) направлен на обеспечение более эффективного способа размещения, выравнивания и распределения пространства между элементами в контейнере, даже если их размер неизвестен и / или динамичен (Flex значит «гибкий»).

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

Наиболее важно то, что макет flexbox не зависит от направления, в отличие от обычных макетов (block на вертикальной основе и inline на горизонтальной основе). Хотя они хорошо работают для страниц, им не хватает гибкости (без каламбура :-)) для поддержки больших или сложных приложений (особенно когда речь идет об изменении ориентации, изменении размера, растяжении, сжатии и т.д.).

Примечание: Flexbox layout наиболее подходит для компонентов приложения и мелкомасштабных макетов, а Grid layout предназначен для макетов большего масштаба.

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

Если «обычная» компоновка основана как на блочном, так и на inline направлениях, flex layout основана на «направлениях flex-flow». Пожалуйста, посмотрите на этот рисунок из спецификации, объясняющий основную идею гибкого макета.

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

Элементы будут расположены либо в направлении главной оси (main axis от main-start до main-end) или в направлении поперечной оси (cross axis от cross-start до cross-end).

Свойства для Родителя (flex контейнер)

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

display

Определяет flex контейнер; inline или block в зависимости от заданного значения. Включает flex контекст для всех потомков первого уровня.

Обратите внимание, что CSS-столбцы columns не влияют на flex контейнер.

flex-direction

Flex shrink css что это. Смотреть фото Flex shrink css что это. Смотреть картинку Flex shrink css что это. Картинка про Flex shrink css что это. Фото Flex shrink css что это
Устанавливает основную ось, таким образом определяя направление flex элементов, помещаемых в flex контейнер. Flexbox — это (помимо дополнительной упаковки) концепция однонаправленного макета. Думайте о flex элементах, как о первичных раскладках в горизонтальных рядах или вертикальных столбцах.

flex-wrap

Flex shrink css что это. Смотреть фото Flex shrink css что это. Смотреть картинку Flex shrink css что это. Картинка про Flex shrink css что это. Фото Flex shrink css что это
По умолчанию гибкие элементы будут пытаться уместиться на одной строке. Вы можете изменить это и позволить элементам переходить на новую строку по мере необходимости с помощью этого свойства.

flex-flow (Применяется к: родительскому элементу flex-контейнера)

Это сокращение для flex-direction и flex-wrap свойств, которые вместе определяют основные и поперечные оси flex контейнера. Значением по умолчанию является row nowrap.

justify-content

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

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

Есть также два дополнительных ключевых слова, которые вы можете связать с этими значениями: safe и unsafe. Использование safe гарантирует, что как бы вы ни занимались этим типом позиционирования, вы не сможете расположить элемент таким образом, чтобы он отображался за пределами экрана (например, сверху) так, чтобы содержимое тоже не могло быть прокручено (это называется «потеря данных»).

align-items

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

Это свойство определяет поведение по умолчанию того, как flex элементы располагаются вдоль поперечной оси на текущей линии. Думайте об этом как о justify-content версии для поперечной оси (перпендикулярной главной оси).

align-content

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

Это свойство выравнивает линии в пределах flex контейнера, когда есть дополнительное пространство на поперечной оси, подобно тому, как justify-content выравнивает отдельные элементы в пределах главной оси.

Примечание: это свойство не действует, когда есть только одна строка flex элементов.

Свойства для первых дочерних элементов(flex элементы)

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

order

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

По умолчанию flex элементы располагаются в исходном порядке. Однако свойство order управляет порядком их появления в контейнере flex.

flex-grow

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

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

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

Отрицательные числа не поддерживаются.

flex-shrink

Это свойство определяет способность гибкого элемента сжиматься при необходимости.

Отрицательные числа не поддерживаются.

flex-basis

Это свойство определяет размер элемента по умолчанию перед распределением оставшегося пространства. Это может быть длина (например, 20%, 5rem и т.д.) Или ключевое слово. Ключевое слово auto означает «смотри на мое width или height свойство». Ключевое слово content означает «размер на основе содержимого элемента» — это ключевое слово все еще не очень хорошо поддерживается, так что трудно проверить что для него используется max-content, min-content или fit-content.

Если установлено значение 0, дополнительное пространство вокруг содержимого не учитывается. Если установлено значение auto, дополнительное пространство распределяется в зависимости от его flex-grow значения.

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

Это сокращение для использования flex-grow, flex-shrink и flex-basis вместе. Второй и третий параметры (flex-shrink и flex-basis) являются необязательными. По умолчанию это 0 1 auto.

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

align-self

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

Это свойство позволяет переопределить выравнивание по умолчанию (или указанное с помощью align-items) для отдельных элементов flex.
Пожалуйста, смотрите align-items свойство, чтобы понять доступные значения.

Обратите внимание что свойства float, clear и vertical-align не влияют на flex элементы.

Примеры

Давайте начнем с очень простого примера, решающего почти ежедневную проблему: идеальное центрирование. Самое простое решение для этой задачи — это использовать flexbox.

Так происходит благодаря тому, что свойство вертикального выравнивания margin установленное в auto во flex контейнере, поглощает дополнительное пространство. Таким образом, установка margin в auto сделает объект идеально отцентрированным по обеим осям.

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

Готово. Все остальное — это просто стайлинг.

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

Если изменить разрешение экрана ли масштаб, то будет так:

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

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

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

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

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

Давайте попробуем что-то еще лучше, играя с гибкостью flex элементов! Как насчет 3-колоночного макета в полную высоту страницы с хедором и футером. И не зависит от исходного порядка элементов.

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

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

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

Flexbox требует префикса для лучшей поддержки в разных браузерах. Он не только включает в себя предварительные настройки с префиксом вендора, в нем есть совершенно разные имена свойств и значений. Это связано с тем, что спецификации Flexbox со временем менялись, существуют «старые», «tweener» и «новые» версии.

Возможно, лучший способ справиться с этим — написать новый (и последний) синтаксис и запустить свой CSS через Autoprefixer, который очень хорошо справляется с fallback.

Кроме того, вот Sass @mixin, чтобы помочь с некоторыми префиксами, который также дает вам представление о том, что нужно сделать:

Поддержка в браузерах

Разбита по «версии» flexbox:

Blackberry Browser 10+ поддерживает новый синтаксис.

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

Источник

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

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

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

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

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

display: flex

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

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

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

flex-direction

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

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

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

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

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

justify-content

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

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

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

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

align-items

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

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

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

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

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

align-self

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

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

flex-basis

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

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

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

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

flex-grow

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

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