CSSのfirst-childやlast-childが効かない原因と解決方法
こんにちは。テイクです。ホームページを作り続けて9年になります。
要素の最初と最後の要素に対する指定といえば疑似クラス:first-child :last-childです。
しかしある条件により効かないことがあります。
CSSのfirst-childやlast-childが効かない原因と解決方法を説明します。
結論
:first-of-typeや:last-of-typeを使う
以下で詳しく説明します。
CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。
↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓
↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。
成功例
:first-of-typeや:last-of-typeを使った場合
タイトル
本文1
本文2
本文3
本文4
html
<h2 style="font-size: 100%;">タイトル</h2>
<p>本文1</p>
<p>本文2</p>
<p>本文3</p>
<p>本文4</p>
<div>フッター</div>
CSS
<style>
p:first-of-type{
color: red;
}
p:last-of-type{
color: blue;
}
</style>
first-of-typeやlast-of-typeを使うと「要素の一番目のp」 「要素の最後のp」に対する指定ができます。
では、first-childやlast-childとどう違うのでしょうか。
失敗例と合わせて説明します。
失敗例
:first-childや:last-childを使った場合
タイトル
本文1
本文2
本文3
本文4
html
<h2 style="font-size: 100%;">タイトル</h2>
<p>本文1</p>
<p>本文2</p>
<p>本文3</p>
<p>本文4</p>
<div>フッター</div>
CSS
p:first-child{
color: red;
}
p:last-child{
color: blue;
}
上記の「p:first-child」は「要素の一番目のp」ではなく、「要素の一番目がpなら」という指定です。
「p:last-child」も同様に「要素の最後のp」ではなく、「要素の最後がpなら」という指定です。
first-of-typeとfirst-childは微妙に仕様が異なるので使い分けが肝心です。
子要素の一番目がなんであれ指定したいとき
タイトル
本文1
本文2
本文3
本文4
html
<div class="example">
<h2 style="font-size: 100%;">タイトル</h2>
<p>本文1</p>
<p>本文2</p>
<p>本文3</p>
<p>本文4</p>
<div>フッター</div>
</div>
CSS
.example :first-child{
color: red;
}
.example :last-child{
color: blue;
}
「親要素+半角スペース+疑似クラス」のように指定するとタグに関わらず、○番目の要素に対する指定ができます。
その他
上記にも当てはまらない場合、他が原因かもしれません。
↓こちらの記事を参考にしてみてください。
ほかにも疑似要素などまとめています。
まとめ
必ず指定したいとき
first-of-typeやlast-of-typeを使う
条件として指定したいとき
first-childやlast-childを使う
子要素の一番目がなんであれ指定したいとき
(空白スペース) :first-childや :last-childを使う
以上、CSSのfirst-childやlast-childが効かない原因と解決方法でした。
「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。