12

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青色の背景にしたい。

4

3 に答える 3

26

最初の要素を除く:not(:first-child)すべての要素(そうであるかどうかに関係なく) は、実際には親の最初の子ではないため、これを行うことはできません。したがって、そのセレクターは、最初の修飾子がない場合にのみ、最初のものを除外します。li.imgli.imgli.imgli

ただし、一般的な兄弟コンビネータ ~を使用して実行できます。

li.img ~ li.img {
    background-color: blue;
}

li.imgこのセレクターは、他のセレクターの兄弟であるli.imgがドキュメント順でその後にあるもの、つまりli.img最初以外のすべてのセレクターに一致します。

実際の動作を確認し、IE < 9 はこのセレクターをサポートしていないことに注意してください。

于 2013-01-26T19:24:06.167 に答える
9

他のすべての li.img を選択して異なる backgroundColor を指定する場合:

li.img ~ li.img {
   background-color: blue;
}
于 2013-01-26T19:23:44.433 に答える
-2

おそらく、IE 8(およびそれ以前)の場合のようにJavaScriptを追加するか、上記のJonが言ったようにそのようなブラウザーが〜セレクターをサポートしていない可能性があります。

document.getElementsByClassName("img")[0].style.backgroundColor = "red";
于 2013-01-26T19:40:12.867 に答える