根据列表元素的数量为li第一个孩子设置不同的边距

时间:2015-05-27 21:25:28

标签: html css css-selectors siblings

我试图在UL中为LI的第一个元素设置不同的CSS边距值,具体取决于LI元素的数量。 即

<ul>
 <li> (margin: 20%)
 <li>
 <li>
</ul>

<ul>
 <li> (margin: 40%)
 <li>
</ul>

尝试:nth-last-child(n + 3),但它不起作用。 有什么建议? 感谢

1 个答案:

答案 0 :(得分:3)

DEMO

  

样式可以根据数量应用于子节点   他们有兄弟姐妹。

HTML

<ul>
    <li>one item</li>
</ul>

<ul>
    <li>two items</li>
    <li>two items</li>
</ul>

<ul>
    <li>three items</li>
    <li>three items</li>
    <li>three items</li>
</ul>

<ul>
    <li>four items</li>
    <li>four items</li>
    <li>four items</li>
    <li>four items</li>
</ul>

CSS

 li:first-child:nth-last-child(1) {
    margin-left: 0px;
}

li:first-child:nth-last-child(2) ~ li {
    margin-left: 0px;
}

li:first-child:nth-last-child(3) ~ li {
    margin-left: 0px;
}

li:first-child:nth-last-child(4) ~ li {
    margin-left: 0px;
}

 li:first-child:nth-last-child(4) {
     margin-left:10px;
    color:red;
 }

 li:first-child:nth-last-child(3) {
     margin-left:20px;
    color:green;
 }

 li:first-child:nth-last-child(2) {
     margin-left:30px;
    color:blue;
 }

 li:first-child:nth-last-child(1) {
     margin-left:40px;
     color:gray;
 }

参考:Can CSS detect the number of children an element has?