oddと2n+1は奇数、evenと2nは偶数。
例えば、E:nth-child(odd)の場合「奇数番目の要素が E だった場合」に適用。
<div id="nth-child-1">
<h2>
<span class="odd">E:nth-child(odd)</span><br />
<span class="even">E:nth-child(even)</span>
</h2>
<ol>
<li>E:nth-child(n)</li>
~略~
<li>E:nth-child(n)</li>
</ol>
</div>
<div id="nth-child-2">
<h2>
<span class="odd">E:nth-child(2n+1)</span><br />
<span class="even">E:nth-child(2n)</span>
</h2>
<ol>
<li>E:nth-child(n)</li>
~略~
<li>E:nth-child(n)</li>
</ol>
</div>
#nth-child-1 li:nth-child(odd),
#nth-child-2 li:nth-child(2n+1){
background-color:DarkOliveGreen;
color:WhiteSmoke;
}
#nth-child-1 li:nth-child(even),
#nth-child-2 li:nth-child(2n){
background-color:DarkSlateGray;
color:WhiteSmoke;
}
Xn+Y / Y番目の要素からスタート、何も指定しなかったら0。その後、X個おきに繰り返す。
なので、3n+1や4n+10だとこうなる。
li:nth-child(3n+1),
li:nth-child(4n+10){
background-color:LavenderBlush;
}
li:nth-child(3n),
li:nth-child(4n+3){
background-color:aliceblue;
}
<h2>E:nth-of-type(n)</h2>
<p>Lorem ipsum dolor sit amet,~Donec sollicitudin. </p>
<h2>E:nth-of-type(n)</h2>
<p>Lorem ipsum dolor sit amet,~Donec sollicitudin. </p>
h2:nth-child(odd) {
background-color:SteelBlue;
color:WhiteSmoke;
}
h2:nth-child(even) {
background-color:Olive;
color:WhiteSmoke;
}
<h2>は奇数番目にしか登場しないのでこうなる。
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
n番目の E に適用するには
h2:nth-of-type(odd) {
background-color:SteelBlue;
color:WhiteSmoke;
}
h2:nth-of-type(even) {
background-color:Olive;
color:WhiteSmoke;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut tempus porttitor metus, nec placerat purus eleifend nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent in leo sem. Aenean non orci lacus. Donec sollicitudin.
width:337px;のulに、floatで並べたliが4つ、それぞれpadding-right:5pxを指定。
liのなかには80pxのimgがリンク付きで入っている場合。
通常、ulのwidth不足((80+5)*4=340px-337px=3px足りない)でカラム落ちする。
画像にするとこんな感じ。

/*最後の要素がliだった場合、paddingを0に。*/
li:nth-last-child(1){
padding-right:0;
border:1px solid tomato;/*効いてるか確認しやすくする為に*/
}
/*最後のli要素のpaddingを0に。*/
li:nth-last-of-type(1){
padding-right:0;
border:1px solid tomato;/*効いてるか確認しやすくする為に*/
}
<li>は簡単だなぁ。
WordPressだとclass="alignleft"みたいな感じだけど、今回はstyleで省略。
<p>
<a href="#"><img src="" style="float:left" /></a>
<a href="#"><img src="" style="float:left" /></a>
<a href="#"><img src="" style="float:left" /></a>
<a href="#"><img src="" style="float:left" /></a>
</p>img:nth-last-child(1),img:nth-last-of-type(1){
padding-right:0;
border:1px solid tomato;
}
aの中にimgは1つしかないので全部に反応してしまう。
a:nth-last-child(1),a:nth-last-of-type(1){
padding-right:0;
border:1px solid tomato;
}
あれ、なんでimgが飛び出るんだろう?(Firefoxだとaにborderがつく、chromeはborder付かない)。 でももう一息な感じ。
擬似クラスの後にセレクタを追加するのって見慣れてないから出来ないと決めつけてたところがあった、反省。
このページは乱雑モックアップのサンプルページです。