HTML:
<ul>
<li></li>
<li></li>
<li class="img"></li>
<li></li>
<li class="img"></li>
<li class="img"></li>
<li></li>
</ul>
CSS:
ul {
list-style-type: none;
}
li {
background-color: red;
margin: 5px;
width: 30px;
height: 30px;
float: left;
}
li.img:not(:first-child) {
background-color: blue;
}
结果:
http://jsfiddle.net/benfosterdev/K3ZnA/
我希望除第一个li.img
以外的所有人都有蓝色背景。
答案 0 :(得分:17)
您无法使用:not(:first-child)
执行此操作,因为除了第一个li.img
之外的所有li
元素(无论是否为.img
)确实不是他们的第一个孩子家长。因此,只有当第一个li.img
没有资格时,选择器才会排除第一个li
。
但是,您可以使用general sibling combinator ~
:
li.img ~ li.img {
background-color: blue;
}
此选择器会匹配任何其他li.img
的兄弟li.img
,但会按照文档顺序显示在其后面,或者换句话说,每个li.img
只显示第一个。{/ p>
See it in action ,请注意IE&lt; 9不支持此选择器。
答案 1 :(得分:6)
如果你想选择所有其他li.img并给它们一个不同的backgroundColor:
li.img ~ li.img {
background-color: blue;
}
答案 2 :(得分:0)
可能是,您可以添加一个javascript,如果IE 8(及更早版本)或此类浏览器不支持Jon选择器,如上所述:
document.getElementsByClassName("img")[0].style.backgroundColor = "red";