CSSの:first-child
は兄弟要素の中のグループの中の最初の要素を表す擬似クラスです。
よく:first-of-type
と混同されますので、まず:first-child
と:first-of-type
の違いを見ていきましょう。
:first-of-type
は兄弟要素の中で「その要素」の最初の要素を表します。一方で:first-child
は兄弟要素の中の最初の要素を表します。
言葉だとわかりにくいため、下記のサンプルコードを見てみましょう。
上記のサンプルコードではp:first-of-type
の擬似クラスの指定では色が青くなります。div
要素が2つあり、その中にp
要素が並んでいますが、2つのdiv要素の中のp
要素のグループの中で最初のp
要素の色が青くなっています。
一方でp:first-child
では2つのdiv
要素の中でそれぞれ先頭の要素でp
要素のものが、背景色を緑となります。(前者のdiv
要素は最初がh1
要素のため、スタイルは効かない)
このように:first-child
と:first-of-type
は似ているようですが、意味合いが異なるため注意しましょう。
/* 構文 */
:first-child
/* 設定例 */
p:first-child {
color: blue;
}
.sample p:first-child {
color: blue;
}
上記のサンプルコードではp:first-child
の疑似クラスを指定によって、その兄弟要素の中の最初のp要素の色が青になります。
つまり.sample-1
と.sample-2
のクラスセレクタのdiv
要素の内部にある、p
要素でそれぞれ最初のp
要素の色が青になります。
上記のサンプルコードでは.sample-1
のクラスセレクタのdiv
要素の内部にh1
要素を先頭に追加しました。
このh1
要素の追加により、div
要素の兄弟要素の中で最初の要素はh1
要素となり、p:first-child
の指定からは外れる事になります。
また、もしも各div
要素の中の最初のp
要素の文字を青くしたい場合は下記のようにしましょう。
CSSの:first-child
はモダンなブラウザのほぼ全てで対応しています。:first-child
の各ブラウザ毎の対応状況を確認したい方は下記よりご確認頂けます。
:first-child
の擬似クラスでCSSを組んでいる時に、:first-child
が思うように効かないという場合があります。その場合の対処法について下記で解説していますのでぜひ参考にしてみて下さい。