Перейти к содержанию
  • Совершенно свободно и бесплатно, Вы можете создавать свои Статьи, на различную тематику, делится опытом и знаниями с другими участниками и посетителями Типичного социума!
    Выделяйте свои Статьи, тегами и префиксами.
  • Полное руководство по CSS Flex + опыт использования

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


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

     
    f1772f3a4c02a8975d7767f4d19b5e56.gif
     

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

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

    Это все, на что способен Flex.
    Это все, на что способен Flex.

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

    CSS Flex или Flex Box

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

    display:flex

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

    1d821401866e8cef280a35d97de7a8fe.png
     

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

    ff1b3b8751ebd0a542cb35d3ec308231.png
     

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

    Вы можете определять количество столбцов.
    Вы можете определять количество столбцов.

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

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

    Direction

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

    e941b246c53e96565ef7c20ad7dad546.png
     

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

    Wrap

    f564d51c7ab92822c06a52f725503020.png
     

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

    Flow

    ba6787fe6418db24bddb94e151053708.png
     

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

    Примеры:

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

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

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

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

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

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

    0a27d79b592d2be3873457e757fe3894.png
     

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

    5994e8ca1ff6339dd223751e38b543cd.png
     

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

    59454bee2e3a5481ce928246eae5375e.png
     

    justify-content

    b545cecf100faa8a31af1ec5a60068de.png
     

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

    Анимированные возможности justify-content.
    Анимированные возможности justify-content.

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

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

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

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

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

    e966852b285aaadaa5cac859156c7079.png
     

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

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

    Packing Flex Lines, но теперь с flex-direction: column
    Packing Flex Lines, но теперь с flex-direction: column

    align-items

    d14db16f5e18523c881a23486b9ede8f.png
     

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

    flex-basis

    55b82ab2dd9b267557e8c02e46e39c6e.png
     

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

    flex-grow

    94e50bec2b4cadb65bda0f35e4fbec8c.png
     

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

    flex-shrink

    c38c0e66a43df8f6b84d5a37f8003455.png
     

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

    cc7094d75ee03959a426af93a8309a8a.png
     

    При работе с отдельными элементами можно использовать только одно свойство из трёх: flex-grow , flex-shrink или flex-base.

    order

    Используя свойство order , можно изменить естественный порядок элементов.

    5bf372ca43fe484dcbfa01feb64a0993.png
     

    justify-items

    62af433526d3b5f0b698bb0113c5f0ac.png
     

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


    AndrewPro

    Обратная связь

    Рекомендуемые комментарии

    Комментариев нет



    Присоединяйтесь к обсуждению

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

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

    ×   Вставлено с форматированием.   Вставить как обычный текст

      Разрешено использовать не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.Политика конфиденциальности

Write what you are looking for and press enter or click the search icon to begin your search

-->