Одна из главных фишек флекс — возможность выравнивание контента по любой из осей. Будь то главная или побочная ось, вы всегда можете воспользоваться несколькими свойствами, чтобы автоматически разместить элементы на странице.
В этом уроке мы изучим свойства justify-content
и align-items
, которые позволяют расположить элементы по главной и побочной оси соответственно.
Для разбора работы свойств используем следующий пример:
Серым цветом обозначен Flex-контейнер. Именно к нему и будут применяться все свойства из этого урока
Для выравнивания по главной оси используется свойство justify-content
. Оно указывается у контейнера (блок со свойством display: flex
) и может иметь множество значений. Разберём самые распространённые значения:
flex-start
— выравнивание по началу оси. Хоть это и не значение по умолчанию, но оно выглядит именно так, как на примере вышеflex-end
— выравнивание по концу осиcenter
— выравнивание контента по центру контейнераspace-between
— первый и последний элемент прижимаются к началу и концу оси, а остальные элементы распределяются по остальному пространствуspace-around
— принцип такой же, как и у значения space-between
, но первый и последний элемент так же получают отступы, которые равны половине отступов у остальных элементовflex-start
flex-end
center
space-between
space-around
Помимо выравнивания элементов по главной оси, флекс позволяет одновременно выравнять элементы по побочной оси. Именно для понимания этого эффекта примеры в этом уроке имеют большую высоту контейнера чем необходимо.
Чтобы выровнять элементы по побочной оси используется свойство align-items
. В нём также много значений, но рассмотрим работу самых популярных:
flex-start
— выравнивание по началу побочной осиflex-end
— выравнивание по концу побочной осиcenter
— выравнивание по центруflex-start
flex-end
center
Как видите, значений тут сильно меньше, чем при выравнивании по главной оси. Помните про две оси — если воспользоваться свойством flex-direction: column
, то визуально выравнивание изменится. В этом случае для выравнивания по вертикали будет использоваться свойство justify-content
:
flex-direction: column и justify-content: space-between
Заказчик захотел, чтобы в блоке «Вопрос-ответ» появилась стрелка, которая визуально свяжет вопрос и ответ. Доработайте функционал блока
<style>
.qa {
font: 18px/1.5 sans-serif;
}
.question {
width: 400px;
padding: 20px;
color: #fff;
background: #8ea7e9;
}
.answer {
width: 400px;
padding: 20px;
}
.arrow {
margin: 0 10px;
}
</style>
<div class="qa">
<div class="question">Какие языки программирования наиболее востребованы в 2023?</div>
<div class="arrow">→</div>
<div class="answer">Самыми популярными языками для изучения в 2023 году остаются Python и JavaScript</div>
</div>
Стрелка визуально находится по середине относительно блоков с вопросом и ответом. Используя Flex доработайте блок и, используя выравнивание, разместите блоки по центру
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.