CSS Flexbox
- Предыдущая страница CSS Box Sizing
- Следующая страница CSS медиа-запросы
Модуль гибкой рамки CSS (Flexbox)
До появления модуля гибкой рамки (Flexbox) были доступны следующие четыре типа режимов布局:
- Блок (Block), используемый для частей веб-страницы (разделов)
- Внутренний (Inline), используемый для текста
- Таблица, используемая для двумерных таблиц данных
- Позиционирование, используемое для точного положения элементов
Модуль гибкой рамки, который позволяет легко проектировать гибкие адаптивные структуры布局, не используя флоаты или позиционирование.
Поддержка браузеров
Все современные браузеры поддерживают flexbox
Свойства.
29.0 | 11.0 | 22.0 | 10 | 48 |
Элементы Flexbox
Чтобы начать использовать модель Flexbox, вам нужно сначала определить контейнер Flex.
Элементы сверху представляют собой flex контейнер с тремя элементами flex (голубая область).
Пример
Контейнер flex, содержащий три элемента flex:
<div class="flex-container"> <div>1</div> <div>2</div> <div>3</div> </div>
родительский элемент (контейнер)
Через display
Свойство установлено в flex
Контейнер flex будет растяжимым:
Пример
.flex-container { display: flex; }
Ниже приведены свойства flex контейнера:
Свойство flex-direction
flex-direction
Свойство определяет, в каком направлении контейнер будет堆积 элементы flex.
Пример
column
Значение устанавливает вертикальное堆积 элементов flex (сверху вниз):
.flex-container { display: flex; flex-direction: column; }
Пример
column-reverse
Значение вертикально堆积 элементы flex (но снизу вверх):
.flex-container { display: flex; flex-direction: column-reverse; }
Пример
row
Значение горизонтально堆积 элементы flex (справа налево):
.flex-container { display: flex; flex-direction: row; }
Пример
row-reverse
Значение горизонтально堆积 элементы flex (но слева направо):
.flex-container { display: flex; flex-direction: row-reverse; }
Свойство flex-wrap
flex-wrap
Свойство определяет, следует ли переписывать элементы flex.
В следующем примере содержится 12 элементов flex, чтобы лучше демонстрировать свойство flex-wrap.
Пример
wrap
Значение определяет, что элементы flex будут переписываться при необходимости:
.flex-container { display: flex; flex-wrap: wrap; }
Пример
nowrap
Значение определяет, что элементы flex не будут переписываться (по умолчанию):
.flex-container { display: flex; flex-wrap: nowrap; }
Пример
wrap-reverse
Значение определяет, если необходимо, элементы эластичности будут переписываться в обратном порядке:
.flex-container { display: flex; flex-wrap: wrap-reverse; }
Свойство flex-flow
flex-flow
Атрибут является сокращением для одновременного设置了 flex-direction и flex-wrap свойств.
Пример
.flex-container { display: flex; flex-flow: row wrap; }
Свойство justify-content
justify-content
Атрибут используется для выравнивания элементов flex:
Пример
center
Значение выравнивает элементы flex по центру контейнера:
.flex-container { display: flex; justify-content: center; }
Пример
flex-start
Значение выравнивает элементы flex в начале контейнера (по умолчанию):
.flex-container { display: flex; justify-content: flex-start; }
Пример
flex-end
Значение выравнивает элементы flex в конце контейнера:
.flex-container { display: flex; justify-content: flex-end; }
Пример
space-around
Значение показывает элементы flex с пробелом перед, между и после строк:
.flex-container { display: flex; justify-content: space-around; }
Пример
space-between
Значение показывает элементы flex с пробелом между строками:
.flex-container { display: flex; justify-content: space-between; }
Свойство align-items
align-items
Атрибут используется для вертикального выравнивания элементов flex.
В этих примерах мы используем контейнер с высотой 200 пикселей, чтобы лучше демонстрировать атрибут align-items.
Пример
center
Значение выравнивает эластичные элементы по центру контейнера:
.flex-container { display: flex; height: 200px; align-items: center; }
Пример
flex-start
Значение выравнивает эластичные элементы в верхней части контейнера:
.flex-container { display: flex; height: 200px; align-items: flex-start; }
Пример
flex-end
Значение выравнивает эластичные элементы в нижней части контейнера:
.flex-container { display: flex; height: 200px; align-items: flex-end; }
Пример
stretch
Значение растягивает эластичные элементы, чтобы заполнить контейнер (по умолчанию):
.flex-container { display: flex; height: 200px; align-items: stretch; }
Пример
baseline
Значение выравнивает эластичные элементы по базовой линии текста:
.flex-container { display: flex; height: 200px; align-items: baseline; }
Внимание:Этот пример использует различные значения font-size для демонстрации того, что элементы выровнены по текстовой базовой линии:
Свойство align-content
align-content
Свойства используются для выравнивания эластичных линий.
В этих примерах мы используем контейнеры высотой 600 пикселей и устанавливаем свойства flex-wrap в wrap, чтобы лучше продемонстрировать свойство align-content.
Пример
space-between
Значение отображается с равным интервалом между эластичными линиями:
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: space-between; }
Пример
space-around
Значение отображается с пробелом перед, между и после эластичных линий:
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: space-around; }
Пример
stretch
Значение растягивает эластичные линии, чтобы занять оставшееся пространство (по умолчанию):
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: stretch; }
Пример
center
Значение отображается в центре контейнера эластичными линиями:
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: center; }
Пример
flex-start
Значение отображается в начале контейнера эластичными линиями:
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: flex-start; }
Пример
flex-end
Значение отображается в конце контейнера эластичными линиями:
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: flex-end; }
Идеальное центрирование
В следующем примере мы решим очень распространенную проблему стиля: идеальное центрирование.
Решение: установите justify-content
и align-items
Свойства установлены на центр, затем эластичные элементы будут идеально центрированы:
Пример
.flex-container { display: flex; height: 300px; justify-content: center; align-items: center; }
Дети (элементы)
Прямые дети контейнера flex автоматически становятся эластичными (flex) элементами.
Элементы выше представляют собой четыре голубых эластичных элемента в灰色 эластичном контейнере.
Пример
<div class="flex-container"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div>
Для эластичных элементов используются следующие свойства:
order
flex-grow
flex-shrink
flex-basis
flex
align-self
Свойство order
order
Свойство определяет порядок эластичного элемента.
Первый эластичный элемент в коде не обязательно должен отображаться в виде первого элемента в макете.
order
Значение должно быть числом, значение по умолчанию 0.
Пример
order
Свойство может изменить порядок эластичных элементов.
<div class="flex-container"> <div style="order: 3">1</div> <div style="order: 2">2</div> <div style="order: 4">3</div> <div style="order: 1">4</div> </div>
Свойство flex-grow
flex-grow
Свойство определяет, на сколько растет определенный эластичный элемент по сравнению с другими эластичными элементами.
Значение должно быть числом, значение по умолчанию 0.
Пример
Сделать скорость роста третьего эластичного элемента в восемь раз быстрее, чем у других эластичных элементов:
<div class="flex-container"> <div style="flex-grow: 1">1</div> <div style="flex-grow: 1">2</div> <div style="flex-grow: 8">3</div> </div>
Свойство flex-shrink
flex-shrink
Свойство определяет, на сколько сжимается определенный эластичный элемент по сравнению с другими эластичными элементами.
Значение должно быть числом, значение по умолчанию 0.
Пример
Не позволять третьему эластичному элементу сжиматься так же, как и другим эластичным элементам:
<div class="flex-container"> <div>1</div> <div>2</div> <div style="flex-shrink: 0">3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> <div>10</div> </div>
Свойство flex-basis
flex-basis
Свойство определяет начальную длину эластичного элемента.
Пример
Установить начальную длину третьего эластичного элемента в 200 пикселей:
<div class="flex-container"> <div>1</div> <div>2</div> <div style="flex-basis: 200px">3</div> <div>4</div> </div>
Свойство flex
flex
Атрибут является сокращенной формой свойств flex-grow, flex-shrink и flex-basis.
Пример
Сделать третий эластичный элемент не растяжимым (0), не сжимаемым (0) и иметь начальную длину 200 пикселей:
<div class="flex-container"> <div>1</div> <div>2</div> <div style="flex: 0 0 200px">3</div> <div>4</div> </div>
Атрибут align-self
align-self
Атрибут определяет способ выравнивания выбранного элемента в эластичном контейнере.
align-self
Свойства будут перекрывать значение по умолчанию для выравнивания, установленное свойством align-items контейнера.
В этих примерах мы используем контейнер высотой 200 пикселей, чтобы лучше продемонстрировать свойство align-self:
Пример
Выравнивает третий эластичный элемент по центру контейнера:
<div class="flex-container"> <div>1</div> <div>2</div> <div style="align-self: center">3</div> <div>4</div> </div>
Пример
Выравнивает второй эластичный элемент вверху контейнера, третий эластичный элемент внизу контейнера:
<div class="flex-container"> <div>1</div> <div style="align-self: flex-start">2</div> <div style="align-self: flex-end">3</div> <div>4</div> </div>
Адаптивная галерея изображений с использованием Flexbox
Используйте Flexbox для создания адаптивной галереи изображений, которая изменяется между четырьмя, двумя или полными изображениями в зависимости от размера экрана:
Адаптивный веб-сайт с использованием Flexbox
Используйте flexbox для создания адаптивных веб-сайтов, включая эластичную навигацию и эластичное содержимое:
Свойства CSS Flexbox
В таблице приведены свойства CSS, используемые вместе с flexbox:
Свойства | Описание |
---|---|
display | Определяет тип контейнера для HTML-элементов. |
flex-direction | Определяет направление эластичных элементов в эластичном контейнере. |
justify-content | Горизонтально выравнивает элементы, когда эластичные элементы не используют все доступное пространство по.main axis. |
align-items | Вертикально выравнивает элементы, когда эластичные элементы не используют все доступное пространство по.main axis. |
flex-wrap | Определяет, должны ли эластичные элементы переходить на новую строку, если на одной линии flex нет достаточного места для их размещения. |
align-content | Изменяет поведение свойства flex-wrap. Как и align-items, но не выравнивает эластичные элементы, а выравнивает линию flex. |
flex-flow | Сокращенные свойства свойств flex-direction и flex-wrap. |
order | Определяет порядок эластичных элементов относительно других эластичных элементов в том же контейнере. |
align-self | Предназначен для эластичных элементов. Перекрывает свойство align-items контейнера. |
flex | Сокращенные свойства свойств flex-grow, flex-shrink и flex-basis. |
- Предыдущая страница CSS Box Sizing
- Следующая страница CSS медиа-запросы