Как создать несколько столбцов из одного неупорядоченного списка?
Я хотел бы создать список из нескольких столбцов, например: https://jsfiddle.net/37dfwf4u/
Нет проблем при использовании другого списка для каждого столбца:
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
<ul>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
</ul>
ul {
display:inline-block;
}
Однако можно ли это сделать с помощью непрерывного списка и чистого CSS, чтобы CSS автоматически размещал столбцы? Например, используя гибкий макет, с которым я еще не знаком?
Ответы
Ответ 1
Да, вы можете создать список из нескольких столбцов, как описано, если вы создадите контейнер ul
flex, измените направление flex-direction
на column
, разрешите его обертывать, применяя flex-wrap: wrap
и дополнительно заставляйте его обертывать, ограничивая его height
:
ul {
height: 100px;
display: flex;
flex-direction: column;
flex-wrap: wrap;
}
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
</ul>
Ответ 2
Рассмотрите возможность использования многострочной компоновки CSS3 для этого:
CSS3 Несколько столбцов
Вы можете сделать это, используя только один список и определить количество столбцов с помощью CSS. Если вы проверяете Multi-колонки поддержки макет браузера CSS3 здесь вы можете увидеть частичную поддержку со стороны большинства браузеров, потому что они не поддерживают обкатки прежде, брейк-после и распада внутри свойства. Но они поддерживают свойства, необходимые для создания списка с несколькими столбцами с префиксом.
.container {
-webkit-column-count: 2; /* Chrome, Safari, Opera */
-moz-column-count: 2; /* Firefox */
column-count: 2;
}
ul {
margin: 0;
}
<div class="container">
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
<li>item8</li>
</ul>
</div>