包裹的<ul> </ul>上的CSS水平线

时间:2012-09-21 17:19:21

标签: css html-lists wrapping

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

<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了,但除非我知道应该连续多少(我不知道),否则我无法解决如何让它们换行的问题。 )。

prepared a jsfiddle来说明我已经走了多远,看起来应该是什么样子。有什么建议吗?

3 个答案:

答案 0 :(得分: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;
}
​

答案 1 :(得分:0)

如果inline-block不起作用,您可以尝试display: block而不是table-cell并添加一些float: left属性以保持所有内容在同一行。

您也可以使用clear: both。实际上有很多方法可以做到,这取决于你喜欢什么,如果你想让它在IE6或任何旧手机上工作......

答案 2 :(得分: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;
}

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