CSS第n个子表达式,以避免最多有3个元素的行

前端之家收集整理的这篇文章主要介绍了CSS第n个子表达式,以避免最多有3个元素的行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建的列表显示为三列,每个< li>有一个边框底部像这样:
x | x | x
---------    
x | x | x
---------      
z | z | z
---------  

<ul>
    <li>x</li><li>x</li><li>x</li>
    <li>x</li><li>x</li><li>x</li>
    <li>z</li><li>z</li><li>z</li>
</ul>

我想做的是创建一个第n个子表达式,以删除三个最后一行的边框底部,因此上述示例将是:

ul li:nth-child(-n+6) {
    border-bottom:0;
}

问题

然而,稍微复杂一点的是,列表中的项目数量会有所不同,因此可能会出现以下任何情况:

情景1

x | x | x
---------   
x | x | x
---------   
z |
---  

<ul>
    <li>x</li><li>x</li><li>x</li>
    <li>x</li><li>x</li><li>x</li>
    <li>z</li>
</ul>

情景2

x | x | x
---------   
x | x | x
---------   
z | z |
-------

<ul>
    <li>x</li><li>x</li><li>x</li>
    <li>x</li><li>x</li><li>x</li>
    <li>z</li><li>z</li>
</ul>

情景3

x | x | x
---------   
z | z |
-------

<ul>
    <li>x</li><li>x</li><li>x</li>
    <li>z</li><li>z</li>
</ul>

结论

我的目的是总是删除最后一行的边框底部(或在本例中为字符z),以便它不具有应用的样式.

一个理想的选择是:

ul {
    padding-bottom:-20px;
}

但是padding-bottom: – #px; CSS不支持

我可以想到的唯一其他方法是创建一个第n个子表达式,以仅捕获包含3,不是最后一行的行?

我想这可能需要一些3分才能寻找适用的金额呢?

解决方法

到目前为止,我已经创建了一个将样式应用到最后一行的选择器
/* all the cells */
li {
   background: #ccc;
}

/* last row,doesn't matter how many cells */
li:nth-last-child(-n + 3):nth-child(3n + 1),/* first element of the last row */
li:nth-last-child(-n + 3):nth-child(3n + 1) ~ li /* all its following elements */
{
   /* reset the style,eg: */
   background: transparent;
}

您可以在这里看到一个现场示例http://jsbin.com/ufosox/1/edit

当然这不支持IE8和更少.

猜你在找的CSS相关文章