4

我有一个来自数据库的项目列表:

<ul>
    <li>Jon Skeet</li>
    <li>Darin Dimitrov</li>
    <li>Marc Gravell</li>
    <li>BalusC</li>
    <li>Hans Passant</li>
    <li>SLaks</li>
    <li>VonC</li>
    <li>Greg Hewgill</li>
    <li>JaredPar</li>
</ul>

该列表将在必要时换行,并且每一行都应该有水平线,看起来有点像这样:

____________________________________________________
 Jon Skeet   Darin Dimitrov   Marc Gravell   BalusC
____________________________________________________
 Hans Passant   SLaks   VonC   Greg Hewgill
____________________________________________________
 JaredPar
____________________________________________________

但是,我不知道如何让行有全长行,所以它看起来像:

____________________________________________________
 Jon Skeet   Darin Dimitrov   Marc Gravell   BalusC
____________________________________________
 Hans Passant   SLaks   VonC   Greg Hewgill
__________
 JaredPar
__________

我试过使用display:table-cell,但我不知道如何让它们包装,除非我知道应该连续有多少(我不知道)。

准备了一个 jsfiddle来说明我已经走了多远,以及它应该是什么样子。有什么建议么?

4

3 回答 3

2

您可以使用重复的线性渐变 - DEMO

ul, section {
    margin: 40px;
    max-width: 350px;
    border-bottom: 1px solid #000;

    background: -moz-repeating-linear-gradient(to bottom, black, black 1px, white 1px, white 36px);
    background: -webkit-repeating-linear-gradient(black 0, white 1px, white 36px);
}

li {
    display: inline-block;
    padding: 0.5em;
}
​
于 2012-09-21T17:45:41.313 回答
0

如果 inline-block 不能解决问题,您可以尝试display: block添加table-cell一些float: left属性以将所有内容保持在同一行。

你也可以玩弄clear: both。实际上有很多方法可以做到这一点,这取决于你喜欢什么,如果你想让它在 IE6 或任何旧手机上运行......

于 2012-09-21T17:51:54.907 回答
0

这个适用于不同的字体大小,甚至适用于不同高度的元素:

ul {
    overflow: hidden;
    width: 300px;
    border: solid #000;
    border-width: 1px 0;
    padding: 0;
}

li {

    padding: 5px 20px;
    display: inline-block;
    vertical-align: top;
    position: relative;
}

li:before {
    content: '';
    display: block;
    position: absolute;
    top: -1px;
    left: 0;
    background: #000;
    height: 1px;
    width: 300px;
}

这会在每个元素的顶部添加一条绝对定位的全宽线,然后隐藏多余的部分。

于 2014-11-13T09:20:31.307 回答