На моей веб-странице есть «тонкий» список: например, список из 100 элементов по одному слову каждый. Чтобы уменьшить прокрутку, я хочу представить этот список в двух или даже четырех столбцах на странице. Как мне сделать это с помощью CSS?
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
Я предпочитаю, чтобы решение было гибким, так что если список вырастет до 200 элементов, мне не нужно будет делать много ручных корректировок для соответствия новому списку.
css
html-lists
user776676
источник
источник
Ответы:
Решение CSS: http://www.w3.org/TR/css3-multicol/
Поддержка браузера - это именно то, что вы ожидаете ..
Работает "везде", кроме Internet Explorer 9 и старше: http://caniuse.com/multicolumn
См .: http://jsfiddle.net/pdExf/
Если требуется поддержка IE, вам придется использовать JavaScript, например:
http://welcome.totheinter.net/columnizer-jquery-plugin/
Другое решение - вернуться к нормальному состоянию только
float: left
для IE . Порядок будет неправильным, но хотя бы похожим:См .: http://jsfiddle.net/NJ4Hw/
Вы можете применить этот запасной вариант с помощью Modernizr, если вы уже его используете.
источник
li
в каждом столбце?list-style-position: inside;
которое, по моему мнению, конкретно решает проблему, указанную @vsync.li { break-inside: avoid; }
: jsfiddle.net/thirtydot/pdExf/903 . Я не слишком знаком с столбцами CSS, так что может быть способ получше.Если вы ищете решение, которое также работает в IE, вы можете разместить элементы списка слева. Однако в результате получится список, который закручивается змейкой, например:
Вместо аккуратных столбиков вроде:
Код для этого будет:
Вы можете добавить нижнюю границу к
li
s, чтобы сделать поток элементов слева направо более очевидным.источник
Если вам нужно заранее заданное количество столбцов, вы можете использовать количество столбцов и промежуток между столбцами, как упоминалось выше.
Однако, если вам нужен один столбец с ограниченной высотой, который при необходимости может быть разбит на большее количество столбцов, этого можно довольно просто добиться, изменив отображение на гибкий.
Это не будет работать в IE9 и некоторых других старых браузерах. Вы можете проверить поддержку на Могу ли я использовать
источник
column-count
будет делать нечетное количество строк в столбцах. Примерно 6 пунктов в первом столбце, затем 4, затем 6, затем 5.Этот ответ не обязательно масштабируется, а требует лишь незначительных корректировок по мере роста списка. Семантически это может показаться немного нелогичным, поскольку это два списка, но в остальном он будет выглядеть так, как вы хотите, в любом браузере, когда-либо созданном.
источник
2020 - будь проще, используйте CSS Grid
Многие из этих ответов устарели, это 2020 год, и мы не должны разрешать людям, которые все еще используют IE9. Намного проще использовать CSS-сетку .
Код очень прост, и вы можете легко настроить количество столбцов, используя расширение
grid-template-columns
. Посмотрите на это, а затем поиграйте с этой скрипкой чтобы она соответствовала вашим потребностям.источник
Я обнаружил, что (в настоящее время) Chrome (
Version 52.0.2743.116 m
) имеет массу причуд и проблем с csscolumn-count
отношении элементов переполнения и элементов с абсолютным позиционированием внутри элементов, особенно с некоторыми переходами измерений.это полный беспорядок, который нельзя исправить, поэтому я попытался решить эту проблему с помощью простого javascript и создал библиотеку, которая делает это - https://github.com/yairEO/listBreaker
Демо-страница
источник
Если вы можете его поддержать, CSS Grid, вероятно, самый чистый способ превратить одномерный список в макет из двух столбцов с адаптивным внутренним пространством.
Это две ключевые строки, которые дадут вам макет из двух столбцов.
источник
Способ, ориентированный на мобильные устройства, - использовать столбцы CSS для создания опыта для небольших экранов, а затем использовать запросы мультимедиа для увеличения количества столбцов в каждой из определенных точек останова вашего макета.
источник
Вот что я сделал
источник