2013-05-11 71 views
7

我不太确定这是可能的(至少不是我的经验或谷歌搜索),但我想知道是否有办法强制CSS列的顺序。例如,而不是:横向扩展CSS列而不是纵向

item1  item4  item7 
item2  item5  item8 
item3  item6  item9 

为了他们是这样的:

item1  item2  item3 
item4  item5  item6 
item7  item8  item9 

给定的HTML这样的:

<ul> 
    <li>item1</li> 
    <li>item2</li> 
    etc... 
</ul> 

当然,我可以用一个表(不,谢谢)或浮动,但我希望能够使用CSS columns属性。

+2

不能使用列属性,但是这有什么错花车? – 2013-05-11 18:51:52

+1

这就是说,表格有什么问题? – 2013-05-11 18:52:42

+0

因为在我的例子中,使用表格没有意义。这是一个列表。本质上,浮动没有错,我只是好奇,如果可能的CSS列属性。 – Jason 2013-05-11 18:54:23

回答

0

有两种方法可以做到这一点。

可以使用display:inline-block;或使用display:flex;

这里是显示:inline-block;例如:

ul { 
 
\t margin-left: .25em; 
 
\t padding-left: 0; 
 
\t list-style: none; 
 
} 
 
li { 
 
\t margin-left: 0; 
 
\t padding-left: 0; 
 
\t display: inline-block; 
 
\t width: 30%; 
 
\t vertical-align: top; 
 
}
<ul> 
 
    <li>item 1</li> 
 
    <li>item 2</li> 
 
    <li>item 3</li> 
 
    <li>item 4</li> 
 
    <li>item 5</li> 
 
    <li>item 6</li> 
 
    <li>item 7</li> 
 
    <li>item 8</li> 
 
    <li>item 9</li> 
 
</ul>

这里是显示:弯曲;例如:

注:Flex在IE11中有所支持,但在Edge中完全支持。它在所有常青树中得到充分支持。

ul { 
 
\t margin-left: .25em; 
 
\t padding-left: 0; 
 
\t list-style: none; 
 
\t display: flex; 
 
\t flex-wrap: wrap; 
 
} 
 
li { 
 
\t margin-left: 0; 
 
\t padding-left: 0; 
 
\t width: 33.3%; 
 
}
<ul> 
 
    <li>item 1</li> 
 
    <li>item 2</li> 
 
    <li>item 3</li> 
 
    <li>item 4</li> 
 
    <li>item 5</li> 
 
    <li>item 6</li> 
 
    <li>item 7</li> 
 
    <li>item 8</li> 
 
    <li>item 9</li> 
 
</ul>

+0

谢谢。虽然当我问这个问题时,我希望在'columns'家族中有一些财产,但我认为:) – Jason 2016-05-06 15:44:24

+1

是的,想到了很多,但想要给你另外两个选项,以防你找不到列解决方案。 – haltersweb 2016-05-06 16:39:25