#html #css #flexbox #height
Вопрос:
Я работаю над адаптивным дизайном, в котором у меня есть ul
некоторые li
элементы внутри, с различной длиной текста. Я хочу li
, чтобы элементы заполняли высоту ul
, но у меня возникли некоторые проблемы с этим. li
Элементы имеют разную высоту, когда содержимое одного из них становится слишком длинным. Пример можно найти ниже:
ul {
display: flex;
align-items: center;
width: 650px;
background: red;
}
li {
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
height: 100%;
}
<ul>
<li>Longer text here 1-2-3</li>
<li>About</li>
<li>Payment</li>
<li>Payment step 2</li>
<li>Receipt</li>
</ul>
Как сделать li
элементы одинаковой высоты, независимо от их содержимого?
Комментарии:
1. Я не уверен, где в своем посте я сказал, что @s.kuznetsov?
Ответ №1:
Заменить align-items: center
на align-items: stretch
in ul
. И уберите height: 100%
внутрь li
.
ul {
display: flex;
align-items: stretch;
width: 650px;
background: red;
}
li {
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
}
<ul>
<li>Longer text here 1-2-3</li>
<li>About</li>
<li>Payment</li>
<li>Payment step 2</li>
<li>Receipt</li>
</ul>
Как следует из названий элементов, это подразумевает меню со ссылками?! Я вставляю a
бирку в каждую li
бирку.
Наследование li
правила flex от родителя путем добавления display: inherit
. И добавьте этот css, который центрирует ваши проколы вертикально:
ul li a {
margin: auto 0 auto 0;
}
ul {
display: flex;
align-items: stretch;
width: 650px;
background: red;
}
li {
display: inherit;
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
}
ul li a {
margin: auto 0 auto 0;
}
<ul>
<li><a href="">Longer text here 1-2-3</a></li>
<li><a href="">About</a></li>
<li><a href="">Payment</a></li>
<li><a href="">Payment step 2</a></li>
<li><a href="">Receipt</a></li>
</ul>
Комментарии:
1. Добавить особо нечего — это полностью решило мою проблему, хотя мне, конечно, пришлось добавить
display: flex; align-items: center
кli
элементам, чтобы содержимое было сосредоточено в них. Спасибо!2. @Loyalar, если вы центрируете
li
, он будет выглядеть неравномерно по отношению к элементам, охватывающим более одной линии.3. Это определенно верно, но в моем случае это выглядит лучше, но я понимаю, что это будет не во всех ситуациях 🙂
4. @s.кузнецов Да, это именно то, что мне было нужно.
5. @Loyalar, я сделал второй фрагмент.