Flexbox в CSS и HTML (учебное пособие) - разработка адаптивных макетов.

Flexbox: Управление уменьшением в направлении гибкости с помощью flex-shrink

Все видео урока Flexbox в CSS и HTML (учебное пособие) - создание адаптивных макетов.

В этом учебнике мы рассмотрим модификатор свойства flex-shrink в CSS. Эта опция является частью модели Flexbox, которая позволяет создавать гибкие макеты, подстраивающиеся под разные размеры экранов. После того как мы рассмотрели свойство flex-grow в последнем видео, которое определяет, как элементы могут увеличиваться в Flex-Container, на этот раз речь пойдет о сжатии элементов, когда места в контейнере оказывается недостаточно по сравнению с заданным flex-basis. В этой статье ты узнаешь, как с помощью flex-shrink ограничить или изменить сжатие элементов Flexbox.

Основные выводы

  • flex-shrink определяет, насколько элемент может сжиматься, если места недостаточно.
  • Стандартное значение для flex-shrink равно 1, что означает, что элемент может занимать место в зависимости от доступного пространства и определенных других элементов в контейнере.
  • Flex-shrink можно использовать для установления определенного соотношения сжатия между несколькими элементами.

Пошаговая инструкция

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

Сначала рассмотрим простое применение Flexbox в CSS. У тебя есть три элемента с flex-basis в 100 пикселей. Если в Flex-Containerе достаточно места, все останется по плану.

Flexbox: Контролирование уменьшения в направлении Flex с помощью свойства flex-shrink

Теперь уменьшим высоту контейнера до 200 пикселей. В этом случае необходимое место больше, чем высота контейнера. Элементы по-прежнему имеют flex-basis в 100 пикселей и, таким образом, не могут уменьшаться из-за установленного flex-shrink в 0.

Flexbox: Управление уменьшением в направлении Flex с помощью свойства flex-shrink

Для активации механизма сжатия устанавливаем значение flex-shrink для элемента nav равным 1. Это сообщает CSS, что элемент nav должен сжиматься максимально.

Flexbox: Управление уменьшением в направлении flex с помощью flex-shrink

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

Flexbox: Управление уменьшением в направлении гибкости с помощью flex-shrink

Если вы хотите, чтобы все элементы уменьшались равномерно, установите flex-shrink для всех элементов равным 1. Если контейнер становится меньше, чем требуется места, все элементы уменьшаются соответственно.

Flex-направление управляется сужением с помощью flex-shrink

Чтобы наглядно показать, как различные значения flex-shrink влияют на макет, выберите отношение, например, 1:1:2. В этом случае главная область (main) получает наибольшую долю сжатия, в то время как другие элементы получают меньшие доли сжатия.

Flexbox: Управление сжатием в направлении гибкости с помощью flex-shrink

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

Flexbox: Управление уменьшением в направлении гибкости с помощью свойства flex-shrink

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

Flexbox: Управление уменьшением в направлении Flex с помощью flex-shrink

Вывод

В этом уроке вы узнали, как использовать flex-shrink в CSS для управления изменением размеров элементов Flexbox. Вы ознакомились с различными способами определения сжатия и его влиянием на макет.

Часто задаваемые вопросы

Как работает flex-shrink?flex-shrink определяет, насколько элемент может сжиматься, если доступного места меньше, чем flex-basis.

Какое стандартное значение у flex-shrink?Стандартное значение flex-shrink равно 1, что означает равномерное сжатие всех элементов.

Как установить flex-shrink для нескольких элементов?Установив одно и то же значение flex-shrink для всех элементов, сжатие будет распределяться равномерно.

Можно ли использовать flex-shrink в сочетании с flex-grow?Да, flex-shrink, flex-grow и flex-basis могут использоваться вместе для создания гибкого макета.

Что происходит, если установить flex-shrink на 0?Если flex-shrink установлен на 0, элементы не будут сжиматься, даже если контейнер меньше, чем сумма flex-basis элементов.