Skip to content

Latest commit

 

History

History
614 lines (526 loc) · 29 KB

flex.md

File metadata and controls

614 lines (526 loc) · 29 KB
layout title description group toc
docs
Flex
Быстро управляйте макетом, выравниванием и размером столбцов сетки, навигацией, компонентами и т.д. С помощью полного набора гибких утилит флексбокс. Для более сложных реализаций может потребоваться собственный CSS.
utilities
true

Включить гибкое поведение

Примените утилиты display для создания контейнера flexbox и преобразования прямых дочерних элементов в элементы flex. Гибкие контейнеры и элементы можно дополнительно модифицировать с помощью дополнительных свойств гибкости.

{{< example >}}

Я контейнер Flexbox!
{{< /example >}}

{{< example >}}

Я встроенный контейнер Flexbox!
{{< /example >}}

Адаптивные варианты также существуют для .d-flex и .d-inline-flex.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .d{{ .abbr }}-flex
  • .d{{ .abbr }}-inline-flex {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Direction

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

Используйте .flex-row, чтобы установить горизонтальное направление (по умолчанию браузер), или .flex-row-reverse, чтобы начать горизонтальное направление с противоположной стороны.

{{< example >}}

Flex элемент 1
Flex элемент 2
Flex элемент 3
Flex элемент 1
Flex элемент 2
Flex элемент 3
{{< /example >}}

Используйте .flex-column, чтобы задать вертикальное направление, или .flex-column-reverse, чтобы начать вертикальное направление с противоположной стороны.

{{< example >}}

Flex элемент 1
Flex элемент 2
Flex элемент 3
Flex элемент 1
Flex элемент 2
Flex элемент 3
{{< /example >}}

Адаптивные вариации также существуют для flex-direction.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .flex{{ .abbr }}-row
  • .flex{{ .abbr }}-row-reverse
  • .flex{{ .abbr }}-column
  • .flex{{ .abbr }}-column-reverse {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Justify content

Используйте утилиты justify-content в контейнерах flexbox для изменения выравнивания гибких элементов по главной оси (ось x для начала, ось y, если flex-direction: column). Выберите из: start (по умолчанию в браузере), end, center, between или around.

Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex justify-content-start">...</div>
<div class="d-flex justify-content-end">...</div>
<div class="d-flex justify-content-center">...</div>
<div class="d-flex justify-content-between">...</div>
<div class="d-flex justify-content-around">...</div>

Адаптивные варианты также существуют для justify-content.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .justify-content{{ .abbr }}-start
  • .justify-content{{ .abbr }}-end
  • .justify-content{{ .abbr }}-center
  • .justify-content{{ .abbr }}-between
  • .justify-content{{ .abbr }}-around {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Align items

Используйте утилиты align-items в контейнерах flexbox, чтобы изменить выравнивание гибких элементов по поперечной оси (ось Y для начала, ось X, если flex-direction: column). Выберите из: start, end, center, baseline или stretch (по умолчанию в браузере).

Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex align-items-start">...</div>
<div class="d-flex align-items-end">...</div>
<div class="d-flex align-items-center">...</div>
<div class="d-flex align-items-baseline">...</div>
<div class="d-flex align-items-stretch">...</div>

Адаптивные варианты также существуют для align-items.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .align-items{{ .abbr }}-start
  • .align-items{{ .abbr }}-end
  • .align-items{{ .abbr }}-center
  • .align-items{{ .abbr }}-baseline
  • .align-items{{ .abbr }}-stretch {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Align self

Используйте утилиты align-self для элементов flexbox, чтобы индивидуально изменить их выравнивание по поперечной оси (ось Y для начала, ось X, если flex-direction: column). Выберите один из тех же параметров, что и align-items: start, end, center, baseline или stretch (по умолчанию в браузере).

Flex элемент
Выровненный flex элемент
Flex элемент
Flex элемент
Выровненный flex элемент
Flex элемент
Flex элемент
Выровненный flex элемент
Flex элемент
Flex элемент
Выровненный flex элемент
Flex элемент
Flex элемент
Выровненный flex элемент
Flex элемент
<div class="align-self-start">Выровненный flex элемент</div>
<div class="align-self-end">Выровненный flex элемент</div>
<div class="align-self-center">Выровненный flex элемент</div>
<div class="align-self-baseline">Выровненный flex элемент</div>
<div class="align-self-stretch">Выровненный flex элемент</div>

Адаптивные варианты также существуют для align-self.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .align-self{{ .abbr }}-start
  • .align-self{{ .abbr }}-end
  • .align-self{{ .abbr }}-center
  • .align-self{{ .abbr }}-baseline
  • .align-self{{ .abbr }}-stretch {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Fill

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

{{< example >}}

Flex элемент с большим количеством контента
Flex элемент
Flex элемент
{{< /example >}}

Адаптивные варианты также существуют для flex-fill.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .flex{{ .abbr }}-fill {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Grow и shrink

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

{{< example >}}

Flex элемент
Flex элемент
Третий flex элемент
{{< /example >}}

Используйте утилиты .flex-shrink-* для переключения возможности гибкого элемента сжиматься при необходимости. В приведенном ниже примере второй гибкий элемент с .flex-shrink-1 принудительно переносит свое содержимое в новую строку, «сжимаясь», чтобы освободить больше места для предыдущего гибкого элемента с .w-100.

{{< example >}}

Flex элемент
Flex элемент
{{< /example >}}

Адаптивные варианты также существуют для flex-grow и flex-shrink.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .flex{{ .abbr }}-{grow|shrink}-0
  • .flex{{ .abbr }}-{grow|shrink}-1 {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Автоматические поля

Flexbox может делать несколько замечательных вещей, когда Вы смешиваете выравнивание гибкости с автоматическими полями. Ниже показаны три примера управления гибкими элементами через автоматические поля: по умолчанию (без автоматического поля), перемещение двух элементов вправо (.mr-auto) и перемещение двух элементов влево (.ml-auto).

К сожалению, IE10 и IE11 не поддерживают должным образом автоматические поля для гибких элементов, родительский элемент которых имеет значение justify-content не по умолчанию. Смотрите этот ответ на StackOverflow для получения большей информации.

{{< example >}}

Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
{{< /example >}}

С align-items

Вертикально переместите один гибкий элемент в верхнюю или нижнюю часть контейнера, смешав align-items, flex-direction: column и margin-top: auto или margin-bottom: auto.

{{< example >}}

Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
{{< /example >}}

Wrap

Измените способ переноса гибких элементов в гибкий контейнер. Выберите полное отсутствие переноса (по умолчанию в браузере) с помощью .flex-nowrap, обертывание с помощью .flex-wrap или обратное обертывание с помощью .flex-wrap-reverse.

Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex flex-nowrap">
  ...
</div>
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex flex-wrap">
  ...
</div>
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex flex-wrap-reverse">
  ...
</div>

Адаптивные варианты также существуют для flex-wrap.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .flex{{ .abbr }}-nowrap
  • .flex{{ .abbr }}-wrap
  • .flex{{ .abbr }}-wrap-reverse {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Order

Измените визуальный порядок определенных гибких элементов с помощью нескольких утилит order. Мы предоставляем только варианты для того, чтобы сделать элемент первым или последним, а также выполнить сброс для использования порядка DOM. Поскольку order принимает любое целочисленное значение (например, 5), добавьте собственный CSS для любых дополнительных значений.

{{< example >}}

Первый flex элемент
Второй flex элемент
Третий flex элемент
{{< /example >}}

Адаптивные варианты также существуют для order.

{{< markdown >}} {{< flex.inline >}} {{- range $bp := $.Site.Data.breakpoints -}} {{- range (seq 0 12) }}

  • .order{{ $bp.abbr }}-{{ . }} {{- end -}} {{- end -}} {{< /flex.inline >}} {{< /markdown >}}

Align content

Используйте утилиты align-content в контейнерах flexbox для выравнивания гибких элементов вместе по поперечной оси. Выберите start (по умолчанию в браузере), end, center, between, around или stretch. Чтобы продемонстрировать эти утилиты, мы ввели в действие flex-wrap: wrap и увеличили количество гибких элементов.

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

Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex align-content-start flex-wrap">
  ...
</div>
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex align-content-end flex-wrap">...</div>
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex align-content-center flex-wrap">...</div>
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex align-content-between flex-wrap">...</div>
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex align-content-around flex-wrap">...</div>
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
Flex элемент
<div class="d-flex align-content-stretch flex-wrap">...</div>

Адаптивные варианты также существуют для align-content.

{{< markdown >}} {{< flex.inline >}} {{- range $.Site.Data.breakpoints }}

  • .align-content{{ .abbr }}-start
  • .align-content{{ .abbr }}-end
  • .align-content{{ .abbr }}-center
  • .align-content{{ .abbr }}-between
  • .align-content{{ .abbr }}-around
  • .align-content{{ .abbr }}-stretch {{- end -}} {{< /flex.inline >}} {{< /markdown >}}