Флексбокс с пунктами, расположенными на одинаковом расстоянии, по вертикали и горизонтали

Я пытаюсь создать меню из 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>

Что я должен сделать, чтобы получить правильное меню, что я должен сделать, чтобы центрировать текст по горизонтали и (!) По вертикали?

у.е.

Меню Volker с flexbox

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>

Другие вопросы по тегам