У меня есть горизонтальная гибкая коробка (т.е. flex-direction: row
, то есть бок о бок) с несколькими элементами. Каждый элемент может быть одной строкой текста или может иметь несколько строк. Я хочу вертикально выровнять содержимое каждого элемента flex.
Если каждый элемент имел прозрачный фон, я мог бы легко использовать align-items: center
. Тем не менее, я хочу, чтобы каждый элемент растягивался вертикально, потому что я хочу установить фон (или, может быть, границы или, возможно, это область с кликом) на всю доступную высоту.
До сих пор я знаю:
- Растяжка:
align-items: stretch
- Выравнивание:
align-items: center
- Растяжение и выравнивание:
Демонстрация доступна на http://codepen.io/denilsonsa/pen/bVBQNa
ul {
display: flex;
flex-direction: row;
}
ul.first {
align-items: stretch;
}
ul.second {
align-items: center;
}
ul > li {
flex-grow: 1;
flex-shrink: 0;
flex-basis: 5em;
text-align: center;
}
ul > li:nth-child(2) {
background: #CFC;
}
/* Visual styles, just ignore. */
html, body { font-family: sans-serif; font-size: 25px; }
ul, li { list-style: none; margin: 0; padding: 0; }
ul { background: #CCF; width: 25em; }
<ul class="first">
<li>Sample</li>
<li><span>span</span></li>
<li><span>multiple</span> <span>span</span></li>
<li>text <span>span</span></li>
<li>multi<br>line</li>
</ul>
<hr>
<ul class="second">
<li>Sample</li>
<li><span>span</span></li>
<li><span>multiple</span> <span>span</span></li>
<li>text <span>span</span></li>
<li>multi<br>line</li>
</ul>