Конспект «Микросетки. Продолжение». Раздел 1
Поперечная ось и свойство align-items (флекс)
Во флексах свойство align-items управляет расположением элементов на поперечной оси.
Поперечная ось идёт перпендикулярно главной оси и по умолчанию направлена сверху вниз:
Во флекс-контейнере свойство align-items может иметь следующие значения:
stretch— значение по умолчанию; элементы растягиваются на всю высоту поперечной оси.flex-start— элементы сжимаются до содержимого и располагаются в начале поперечной оси (по умолчанию сверху);flex-end— элементы сжимаются до содержимого и располагаются в конце поперечной оси (по умолчанию снизу);center— элементы сжимаются до содержимого и располагаются по центру поперечной оси;
Поворот главной оси, свойство flex-direction
Главную ось поворачивают, чтобы сохранить внутри флекс-контейнера направление потока сверху вниз. За направление главной оси отвечает свойство flex-direction. По умолчанию у него значение row (ряд), но его можно изменить на column (колонка):
flex-container {
display: flex;
flex-direction: column;
}В этом случае главная ось будет направлена сверху вниз, а поперечная — слева направо. В результате флекс-элементы выстроятся сверху вниз.
По умолчанию флекс-элементы сжимаются по главной оси и растягиваются по поперечной. Таким образом, если главная ось направлена слева направо, то элементы сжимаются по горизонтали и растягиваются по вертикали.
Если же главная ось направлена сверху вниз, то сжатие происходит по вертикали, а растяжение — по горизонтали.
Получается, чтобы при повёрнутых осях выровнять элемент по горизонтали, нужно задать ему выравнивание по поперечной оси.
Свойство align-self (флекс)
Свойство align-self задаётся флекс-элементу и говорит, как ему расположиться на поперечной оси. Значения у этого свойства такие же, как у align-items: stretch (значение по умолчанию), flex-start, flex-end и center.
.element {
align-self: flex-end;
}Свойство order
Чтобы изменить визуальный порядок элементов, удобно использовать свойство order. В качестве значения свойство принимает число, причём оно может быть как положительным, так и отрицательным. По умолчанию у всех элементов свойство order равно нулю.
.element {
order: 5;
}Элементы выстраиваются от меньшего значения order к большему. Если у нескольких элементов одинаковое значение, используется их порядок в разметке.
Свойство order работает только в грид- и флекс-контейнерах.
Отступы у флекс-элементов
Внешние отступы у соседних флекс-элементов складываются.
Чтобы не запутаться и получить именно те размеры, которые указаны в макете, верстальщики добавляют элементам внешние отступы только с одной стороны. Часто внешние отступы задают в направлении потока. Если элементы выстроены горизонтально, то отступ задают справа, а у последнего элемента обнуляют:
Если элементы выстроены вертикально, то отступ добавляют снизу. Исключение — самый последний элемент (например, подвал страницы), ему при необходимости задают отступ сверху:
В этом случае, даже если изменить порядок секций, они не слипнутся, а между ними не появятся лишние отступы.
Уменьшение изображений с сохранением пропорций
Если использовать картинку большего размера, чем родительский элемент, она выпадет из контейнера. Чтобы не допускать подобного, верстальщики добавляют картинкам такие стили:
img {
max-width: 100%;
height: auto;
}Свойство max-width задаёт максимальную ширину, а значение 100% говорит, что элемент не должен становиться больше ширины родителя.
Свойство height задаёт высоту элемента. Значение auto используют, чтобы изображение не деформировалось и сохраняло свои пропорции. Если его не указать, то будет использовано значение атрибута height из разметки, и картинка, скорее всего, исказится.
Этот способ работает, потому что у CSS-свойств max-width и height приоритет выше, чем у атрибутов width и height в разметке.