Флексбокс с пунктами, расположенными на одинаковом расстоянии, по вертикали и горизонтали
Я пытаюсь создать меню из flexbox со следующими идеями: расстояние между элементами, одинаковая высота, центрированный текст (горизонтальный и вертикальный).
ul {
display: flex;
justify-content: space-between;
flex-direction: row;
justify-content: center;
}
li {
width: 32.25%;
align-items: center;
}
span {
text-align: center;
display: block;
height: 100%;
}
<ul>
<li><span>Item</span></li>
<li><span>Item</span></li>
<li><span>Item - much much much much much much much much much much more longer</span></li>
</ul>
Что я должен сделать, чтобы получить правильное меню, что я должен сделать, чтобы центрировать текст по горизонтали и (!) По вертикали?
у.е.
2 ответа
Сделать li
гибкие родители тоже. Нет необходимости для установки высоты. li
будет все одинаковой высоты (самой высокой) и с display:flex
Вы можете выровнять содержание li
как требуется.
ul {
margin: 0;
padding: 0;
list-style-type: none;
display: flex;
justify-content: space-between;
}
li {
display: flex;
flex: 0 0 32.5%;
align-items: center;
justify-content: center;
border: 1px solid grey;
}
span {
text-align: center;
}
<ul>
<li><span>Item</span></li>
<li><span>Item</span></li>
<li><span>Item - much much much much much much much much much much more longer</span></li>
</ul>
Добавлять align-items: center;
к ul
,
Свойство CSS align-items определяет, как браузер распределяет пространство между и вокруг флекс-элементов вдоль поперечной оси их контейнера. Это означает, что он работает как justify-content, но в перпендикулярном направлении.
Для получения дополнительной информации следуйте статье MDN
Ссылочный код:
ul {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
li {
width: 32.25%;
align-items: center;
}
span {
text-align: center;
display: block;
height: 100%;
}
<ul>
<li><span>Item</span></li>
<li><span>Item</span></li>
<li><span>Item - much much much much much much much much much much more longer</span></li>
</ul>