公開日:
擬似クラスというのはセレクタに追加して指定できるキーワード。
例えばhover、first-child、nth-childなどは非常に良く使います。
一方、擬似要素でよく使うのはafterやbeforeではないでしょうか。
ちなみにCSS3では、擬似クラスはコロンひとつ( : )、擬似要素はコロンふたつ( :: )の後に書きます。
そしてこれらは繋げて使うことも出来て意外と便利なケースがあります。
<ul> <li>えんぴつ</li> <li>消しゴム</li> <li>ボールペン</li> <li>万年筆</li> <li>三角定規</li> </ul>
例えばulのliタグにfirst-childやlast-child、もしくはnth-childを指定することが良くありますが、liのdisplayをinlineにして単語を横にずらずらと並べるとしましょう。
その時、単語と単語の間は「、」等で区切るとします。
li { display: inline; } li::after { content: '、'; }
liの擬似要素afterにcontentを指定して「、」を表示させれば、liの後ろにこれが出てくるので単語間を区切ることができます。
しかし最後のliの後ろにもこれが出てくるのは変です。
最後のliにだけ何か別のことを指定したい時にすぐ思い浮かぶのはlast-childです。というわけでこんな時はlast-childの後にafterを繋げて書けば良いわけです。
li:last-child::after { content: none; }
これで最後のliの後ろに「、」は表示されなくなりました。
ちなみにこの時、last-childが先でafterは後ろという順番を間違えないようにしましょう。
これが逆になるとちゃんとCSSが適用されません。
ところでdlのdtとddですが、HTML5からこれらは一対一でなくても良くなりました。
dtがひとつの後にddがたくさんあってもいいですし、dtがたくさんある後にddがひとつだけでも文法的にOKです。
<dl> <dt>筆記用具</dt> <dd>えんぴつ</dd> <dd>消しゴム</dd> <dd>ボールペン</dd> <dd>万年筆</dd> <dd>三角定規</dd> </dl>
つまりddが複数ある場合にも、上記のliの例と同じような使い方が出来ます。
dd { display: inline; } dd::after { content: '、'; } dd:last-child::after { content: none; }