Помимо работы с гибкостью элементов, модуль Flex позволяет для каждого элемента внутри флекс-контейнера устанавливать месторасположение относительно других элементов. Для этого существует два свойства, которые мы рассмотрим в этом уроке:
- order
- align-self
Для рассмотрения этих свойств возьмем CodePen и расположим три элемента внутри флекс-контейнера. Как и в прошлых уроках, вы можете изменять код внутри CodePen, что очень поможет вам в изучении данных свойств.
https://codepen.io/hexlet/pen/LYYWLgZ
Блоки специально сделаны разной высоты для большей наглядности работы свойств.
order
Свойство order отвечает за порядок расположения элементов внутри контейнера. Это удобная функция, позволяющая, например, перемещать элементы внутри контейнера при открытии страницы на разных устройствах.
В качестве значения order может принимать любое число, которое укажет номер расположения элемента по главной оси. Попробуем поменять первый и третий элемент внутри нашего демонстрационного примера:
https://codepen.io/hexlet/pen/ExxWXMV
Также возможно использование отрицательного значения. В таком случае никакой магии не произойдет, просто элементы с отрицательным значением order будут находиться раньше элементов с положительным значением.
Обратите внимание, что если свойство order указано не у всех элементов, то элементы без этого свойства будут выведены в месте, согласно своему расположению внутри документа. Причем первыми всегда будут выведены те элементы, у которых свойство order отсутствует, что наглядно видно в примере ниже:
https://codepen.io/hexlet/pen/mddWMKz
Такое поведение будет только в случае положительных значений свойства order
. Элементы с отрицательным order
расположатся до элементов без этого свойства. Это связано с тем, что flex-элементы по умолчанию имеют значение свойства order равное нулю.
Цвета элементов без свойства order были сделаны немного темнее, чтобы точно можно было соотнести их расположение в браузере и в верстке. Приглядитесь к тому, где расположены блоки с классами .bg-red-one
, bg-green-two
и bg-blue-three
. Поэтому, если хотите сохранить полный контроль над расположением блоков, выставляйте свойство order для всех элементов внутри контейнера, если это свойство вам понадобилось.
align-self
Свойство align-self по своему назначению похоже на свойство align-items, которое мы рассмотрели в одном из прошлых уроков. Главным отличием является то, что свойство align-self применяется не ко всему флекс-контейнеру, а к одному конкретному элементу внутри контейнера, для которого мы хотим сменить расположение по поперечной оси.
Основными значениями свойства align-self являются:
- center
- flex-start
- flex-end
- baseline
https://codepen.io/hexlet/pen/RwwpjyV
В данном CodePen были добавлены следующие классы:
- align-self-center
- align-self-start
- align-self-end
- align-self-baseline
Попробуйте изменять классы внутри контейнера, чтобы увидеть, как будет расположен элемент.
Документация
- order
- align-self
Дополнительные материалы
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.