[解決済み] first-childと:first-of-typeの違いは何ですか?
質問
の区別がつきません。
element:first-child
と
element:first-of-type
例えば、Divの
div:first-child
→ 全て
<div>
要素で、その親の最初の子であるもの。
div:first-of-type
→ 全て
<div>
要素で、最初の
<div>
要素で、その親の最初の
これは全く同じことのように思えますが、動作が異なります。
どなたか説明していただけませんか?
どのように解決するのですか?
親要素は1つ以上の子要素を持つことができます。
<div class="parent">
<div>Child</div>
<div>Child</div>
<div>Child</div>
<div>Child</div>
</div>
これらの子供のうち、1つだけが最初になることができます。これは、マッチングされる
:first-child
:
<div class="parent">
<div>Child</div> <!-- :first-child -->
<div>Child</div>
<div>Child</div>
<div>Child</div>
</div>
との違いは
:first-child
と
:first-of-type
は、その
:first-of-type
はその要素タイプの最初の要素にマッチし、HTMLではそのタグ名で表されます。
の最初の子要素でない場合でも、その要素にマッチします。
. ここまでのところ、私たちが見ている子要素はすべて
div
ですが、我慢してください。
今のところ、逆もまた真なりです:任意の
:first-child
はまた
:first-of-type
である。ここでの最初の子は、最初の
div
にもマッチするので
の両方が
擬似クラスと同様に、タイプセレクタの
div
:
<div class="parent">
<div>Child</div> <!-- div:first-child, div:first-of-type -->
<div>Child</div>
<div>Child</div>
<div>Child</div>
</div>
ここで、最初の子プロセスの型を
div
から他のものに変更すると、例えば
h1
に変更した場合、それはまだ最初の子でありますが、 もはや最初の
div
にはならず、代わりに最初の(そして唯一の)
h1
. もし他の
div
要素がある場合、その最初の子である
div
要素にマッチします。
div:first-of-type
. この例では、2 番目の子が最初の
div
に変更された後、最初の子プロセスが
h1
:
<div class="parent">
<h1>Child</h1> <!-- h1:first-child, h1:first-of-type -->
<div>Child</div> <!-- div:nth-child(2), div:first-of-type -->
<div>Child</div>
<div>Child</div>
</div>
なお
:first-child
と同じです。
:nth-child(1)
.
これはまた、どの要素もマッチする子要素を一つしか持てないが
:first-child
にマッチする子要素を一度にいくつでも持つことができ、また持つことになります。
:first-of-type
擬似クラスと同じ数の子を持つことができ、また、持つことになります。この例では、セレクタ
.parent > :first-of-type
(暗黙の
*
を修飾する
:first-of-type
擬似) にマッチします。
に
要素にマッチします。
<div class="parent">
<h1>Child</h1> <!-- .parent > :first-of-type -->
<div>Child</div> <!-- .parent > :first-of-type -->
<div>Child</div>
<div>Child</div>
</div>
についても同様です。
:last-child
と
:last-of-type
: いずれも
:last-child
は必然的に
:last-of-type
であり、その親の中でそれに続く他の要素が全くないためです。しかし、最後の
div
は最後の子でもあるので
h1
はその型の最後の子であるにもかかわらず、最後の子であることはできません。
:nth-child()
そして
:nth-of-type()
は、任意の整数の引数で使用された場合、原理的には非常によく似た働きをします(たとえば
:nth-child(1)
がマッチする要素の数が異なるだけです。
:nth-of-type()
. これについては
p:nth-child(2) と p:nth-of-type(2) の違いは何ですか?
関連
-
[CSSチュートリアル】CSSアニメーション 途中で止める方法とポーズを維持する方法
-
[CSSチュートリアル]CSSは、2列のレイアウト、固定幅の左側、適応するためのさまざまな方法の右側を達成するために
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] SCSSとSassの違いは何ですか?
-
[解決済み] visibility:hiddenとdisplay:noneの違いは何ですか?
-
[解決済み] CSSセレクタの"~"(チルダ/スクイグル/ツイドル)はどういう意味ですか?
-
[解決済み] CSSセレクタの「+」(プラス記号)の意味は何ですか?
-
[解決済み] Normalize.cssとReset CSSの違いは何ですか?
-
[解決済み] なぜブラウザはCSSセレクタを右から左へマッチングさせるのですか?
-
[解決済み】CSSで子DIVの幅を親DIVより広くする方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[CSSチュートリアル】CSSスコープ(スタイル分割)の使い方まとめ
-
[CSSチュートリアル】CSSのクラスとidの共通命名規則
-
[CSSチュートリアル】height:100%と書いても効かない理由
-
[CSSチュートリアル】CSSの新機能には、ページの再描画や並び替えの問題をコントロールする機能が含まれています。
-
[CSSチュートリアル】ピュアCSSで作るスクロールシャドウ効果
-
[CSSチュートリアル】よく使われるnth-childセレクタをまとめる
-
[CSSチュートリアル】CSSでマウスの位置をマッピングし、マウスの動きでページ要素を制御する効果を実現する(コード例)
-
[css3]CSS3遷移回転遠近法2D3Dアニメーションなどの効果を持つサンプルコード
-
[css3]本のページをめくるような効果を実現するcss3サンプルコード
-
[解決済み] 最初の要素にクラスを指定するCSSセレクタ