У меня есть список элементов, которые я хочу разместить в пространстве, которое ограничено по вертикали:
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
Так как я не хочу, чтобы в списке было больше определенной высоты, но я могу свободно его расширять по горизонтали, я хочу разделить список на столбцы, например:
One Two Three
Four Five Six
Или, альтернативно (в моем случае порядок не важен)
One Three Five
Two Four Six
Свойство css column-count
позволяет разбить список на столбцы, но принимает только фиксированное количество столбцов. Я не знаю количество элементов, которые у меня есть (он может идти от 1 до более 40), поэтому, если я установил количество столбцов на 3, любой список с более чем 6 элементами будет слишком высоким, и если есть только 4 элемента, то только первый столбец будет иметь два элемента, и он будет выглядеть неравномерно.
Итак, в идеале мне понадобится свойство row-count
, но оно не существует. Думаю, я тоже могу это сделать в Javascript, но я ищу решение только для CSS.
Я что-то пробовал: float:left
на каждом li
помещает список в одну строку. Чтобы разбить его на две строки, мне не нужно применять float:left
к элементу N/2. Я не знаю, как это сделать.
Я также знаю, что могу сделать это, разбив его на несколько ul
, каждый из которых имеет два li
и float:left
их, но я хотел бы избежать использования HTML-кода для чего-то полностью презентационного.
У кого-то есть решение этой проблемы?
Изменить: Я думаю, что я не объяснял свои требования. Я хочу, чтобы список сортировался в столбцы, не зная, сколько элементов у меня будет, и чтобы у меня всегда было две строки.
Итак, например, с 7 элементами, я хочу иметь:
One Two Three Four
Five Six Seven
И с 3 пунктами:
One Two
Three