#html #css #list #flexbox #height
#HTML #css #Список #flexbox #высота
Вопрос:
У меня есть 2 динамических списка, которые располагаются как братья и сестры один поверх другого, используя макет гибкого столбца. Моя дилемма заключается в том, что я не могу заставить списки / элементы списка поддерживать одинаковую высоту сгибания, поскольку список с меньшим количеством элементов всегда, кажется, увеличивает высоту своих элементов.
Пожалуйста, посмотрите мой код ниже. Обратите внимание, как «элемент 1, список 2» растянулся? Я хочу, чтобы все элементы списка для обоих списков соответствовали и имели одинаковую высоту для заполнения основного родительского контейнера. A ul
с одним li
элементом должен иметь размер до высоты одного li
элемента.
.container {
display: flex;
flex-direction: column;
height: 500px;
border: 1px solid black;
}
.list {
list-style-type: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
flex: 1 0 auto;
border: 1px solid black;
}
.list-item {
flex: 1 0 auto;
border: 1px solid black;
}
<div class="container">
<ul class="list">
<li class="list-item">item 1, list 1</li>
<li class="list-item">item 2, list 1</li>
<li class="list-item">item 3, list 1</li>
<li class="list-item">item 4, list 1</li>
</ul>
<ul class="list">
<li class="list-item">item 1, list 2</li>
</ul>
</div>
Комментарии:
1. Просто для ясности, вы хотите, чтобы
li
элементы имели одинаковую высоту независимо от того, в какомul
они отображаются?2. Вы видите, как список 2, элемент один, растянулся, чтобы заполнить почти половину контейнера? Я хочу, чтобы он составлял 1/5 размера вместе с остальными элементами списка. конечно, их высота может меняться по мере добавления большего количества элементов, но все они должны быть одинаковой высоты. Короче говоря — да.
3. Спасибо за подтверждение. Что должно произойти с родительским
ul
элементом? Должен ли он уменьшаться до размера одногоli
или должен оставаться на высоте по умолчанию?4. Он должен уменьшиться до размера одного
li
5. У тебя есть какие-нибудь идеи @Martin? Я вроде как потерялся, ха-ха
Ответ №1:
Я думаю, что, возможно, решил вашу проблему. Прежде всего, потому что вы дали этому элементу класса контейнера ** height: 500px; ** это влияет на высоту ваших ul, li элементов. Я удалил их из вашего CSS и в классе list-item добавил min-height:100px; но вы можете изменить высоту элементов li в соответствии с тем, что вы хотите.
.container {
display: flex;
flex-direction: column;
width:100%;
flex:0 0 100%;
border: 1px solid black;
}
.list {
list-style-type: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
flex: 1 0 auto;
border: 1px solid black;
}
.list-item {
min-height:100px;
border: 1px solid black;
}
<div class="container">
<ul class="list">
<li class="list-item">item 1, list 1</li>
<li class="list-item">item 2, list 1</li>
<li class="list-item">item 3, list 1</li>
<li class="list-item">item 4, list 1</li>
</ul>
<ul class="list">
<li class="list-item">item 1, list 2</li>
</ul>
</div>