Если вы открыты для подхода JavaScript, вы можете просто получить высоту элемента <li>
(при условии, что все элементы <li>
имеют одинаковую высоту), умножив его на половину числа <li>'s
внутриваш элемент <ul>
и установите высоту ul в это значение.( Если число <li>'s
является нечетным числом , просто добавьте к значению высоту еще один <li>
. )
Также убедитесь, что родительский гибкий контейнер .list_number
имеет свойства flex-direction: column;
и flex-wrap: wrap;
, чтобы элементы автоматически переходили в следующий столбец, когда предыдущие элементы заполнили высоту.
Проверкаи запустите фрагмент кода ниже для практического примера того, что я описал выше:
/* JavaScript */
const div = document.querySelector(".list_number");
const lists = document.querySelectorAll(".list_number li");
const height = window.getComputedStyle(lists[0]).height;
div.style.height = (lists.length % 2 == 0) ? (parseInt(height) * lists.length / 2) + "px" : (parseInt(height) * lists.length / 2) + parseInt(height) + "px";
/* CSS */
html, body {width: 100%; height: 100%; margin: 0px; padding: 0px;}
.list_number{
list-style: none;
display: flex;
flex-direction: column;
flex-wrap: wrap;
}
<!-- HTML -->
<ul class="list_number">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>