从上到下而不是从左到右列出列中的项目
List items in columns from top to bottom instead of left to right
我有一个按字母顺序排列的国家/地区列表,例如:
Albania
Andorra
Armenia
Austria
Azerbaijan
Belarus
Belgium
Bosnia and Herzegovina
Bulgaria
Croatia
Cyprus
Czech Republic
Denmark
Estonia
Finland
France
Georgia
Germany
Greece
...
我将它们显示在列表中:
<ul class="mylist">
<li>Albania</li>
<li>Andorra</li>
<li>Armenia</li>
<li>Austria</li>
<li>Azerbaijan</li>
...
</ul>
列表在大显示器上显示 4 列:
ul.mylist li {
float: left;
width: 25%;
}
和 2 个在小显示器上:
ul.mylist li {
float: left;
width: 50%;
}
这会产生如下列表(大显示):
Albania Andorra Armenia Austria
Azerbaijan Belarus Belgium Bosnia and Herzegovina
Bulgaria Croatia...
好的,现在是棘手的部分:显示的国家/地区数量可能因过滤器选项而异。我想以另一种方式(从上到下,从左到右)对国家/地区进行排序,如下所示:
Albania Bosnia and Herzegovina Finland [4th col]
Andorra Bulgaria France ...
Armenia Croatia Georgia
Austria Cyprus Germany
Azerbaijan Czech Republic ...
Belarus Denmark
Belgium Estonia
如何做到牢记 CSS 会在小显示器上将列表折叠成 2 列?
使用 CSS3 multi-column layout for this. Browser support is questionable 所以请使用供应商前缀。
ul {
margin: 0;
padding: 0;
}
li {
display: inline-block;
width: 100%;
}
/* default */
ul {
-moz-column-count: 4;
-webkit-column-count: 4;
column-count: 4;
}
/* < 800px */
@media screen and (max-width: 799px) {
ul {
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
}
}
/* < 400px */
@media screen and (max-width: 399px) {
ul {
-moz-column-count: 2;
-webkit-column-count: 2;
column-count: 2;
}
}
<ul>
<li>Albania</li>
<li>Andorra</li>
<li>Armenia</li>
<li>Austria</li>
<li>Azerbaijan</li>
<li>Belarus</li>
<li>Belgium</li>
<li>Bosnia and Herzegovina</li>
<li>Bulgaria</li>
<li>Croatia</li>
<li>Cyprus</li>
<li>Czech Republic</li>
<li>Denmark</li>
<li>Estonia</li>
<li>Finland</li>
<li>France</li>
<li>Georgia</li>
<li>Germany</li>
<li>Greece</li>
</ul>
只是为了从 Salman A 的回答中弄清楚(我只有在阅读了这个 post 的第三个解决方案后才理解他的回答——"Text Columns" 那个),代码的主要部分是将 li
顺序从左到右从上到下更改为:
ul {
column-count: 4;
column-gap: 0;
}
li {
display: inline-block;
}
Salman 中的其他所有内容答案是针对 large/small 屏幕进行调整
我有一个按字母顺序排列的国家/地区列表,例如:
Albania
Andorra
Armenia
Austria
Azerbaijan
Belarus
Belgium
Bosnia and Herzegovina
Bulgaria
Croatia
Cyprus
Czech Republic
Denmark
Estonia
Finland
France
Georgia
Germany
Greece
...
我将它们显示在列表中:
<ul class="mylist">
<li>Albania</li>
<li>Andorra</li>
<li>Armenia</li>
<li>Austria</li>
<li>Azerbaijan</li>
...
</ul>
列表在大显示器上显示 4 列:
ul.mylist li {
float: left;
width: 25%;
}
和 2 个在小显示器上:
ul.mylist li {
float: left;
width: 50%;
}
这会产生如下列表(大显示):
Albania Andorra Armenia Austria
Azerbaijan Belarus Belgium Bosnia and Herzegovina
Bulgaria Croatia...
好的,现在是棘手的部分:显示的国家/地区数量可能因过滤器选项而异。我想以另一种方式(从上到下,从左到右)对国家/地区进行排序,如下所示:
Albania Bosnia and Herzegovina Finland [4th col]
Andorra Bulgaria France ...
Armenia Croatia Georgia
Austria Cyprus Germany
Azerbaijan Czech Republic ...
Belarus Denmark
Belgium Estonia
如何做到牢记 CSS 会在小显示器上将列表折叠成 2 列?
使用 CSS3 multi-column layout for this. Browser support is questionable 所以请使用供应商前缀。
ul {
margin: 0;
padding: 0;
}
li {
display: inline-block;
width: 100%;
}
/* default */
ul {
-moz-column-count: 4;
-webkit-column-count: 4;
column-count: 4;
}
/* < 800px */
@media screen and (max-width: 799px) {
ul {
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
}
}
/* < 400px */
@media screen and (max-width: 399px) {
ul {
-moz-column-count: 2;
-webkit-column-count: 2;
column-count: 2;
}
}
<ul>
<li>Albania</li>
<li>Andorra</li>
<li>Armenia</li>
<li>Austria</li>
<li>Azerbaijan</li>
<li>Belarus</li>
<li>Belgium</li>
<li>Bosnia and Herzegovina</li>
<li>Bulgaria</li>
<li>Croatia</li>
<li>Cyprus</li>
<li>Czech Republic</li>
<li>Denmark</li>
<li>Estonia</li>
<li>Finland</li>
<li>France</li>
<li>Georgia</li>
<li>Germany</li>
<li>Greece</li>
</ul>
只是为了从 Salman A 的回答中弄清楚(我只有在阅读了这个 post 的第三个解决方案后才理解他的回答——"Text Columns" 那个),代码的主要部分是将 li
顺序从左到右从上到下更改为:
ul {
column-count: 4;
column-gap: 0;
}
li {
display: inline-block;
}
Salman 中的其他所有内容答案是针对 large/small 屏幕进行调整