列表中的项目从上到下而不是从左到右

时间:2015-02-10 08:15:07

标签: html css css3 responsive-design multiple-columns

我有按字母顺序排列的国家/地区列表:

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列?

2 个答案:

答案 0 :(得分:7)

使用CSS3 multi-column layoutBrowser 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>

答案 1 :(得分:0)

只是要从Salman中弄清楚答案(我从post的第三个解决方案“ Text Columns”(文本列)中读到第三个解决方案后,才明白他的答案),这是更改{ {1}}从左到右,从上到下的顺序为:

li

萨尔曼(Salman)的所有其他答案是对大/小屏幕进行调整