teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

質問者の疑問点により明確に回答

2019/04/23 07:41

投稿

aKusano
aKusano

スコア3763

answer CHANGED
@@ -63,6 +63,19 @@
63
63
 
64
64
  ちなみにこれは私も今回改めて確認したことなのですが、HTML上に記述されている要素については、たとえCSSでdisplay:none;としていても :nth-childのカウント対象のままであり、非表示要素も含めて連番が振られてしまう仕様のようです。この辺がまた勘違いの原因の1つにもなっていると思います。(ややこしいですよね)
65
65
 
66
+ というわけで、質問者さんの疑問点に答えるとすると、以下のようになるかと思います。
67
+
68
+ > ①前半のコードですが、何故 !important をつけたり、cssの順番を上げ、詳細度を高めなくては反映されなかったのか?
69
+
70
+ 同じ要素に対して同じ詳細度のセレクタを複数書いたら、後から書いたほうで上書きされる当たり前のCSSの挙動となっているだけ。 !importantを使って詳細度最優先にした場合も同じ。仕様どおりの挙動です。
71
+
72
+ > ②後半の例のコードですが、何故 こちらは正常に反映されるのでしょうか?
73
+
74
+ 1つ目の例とはHTMLの構造が異なるため、:nth-child(n+2) が「説明2」以下のdivに対して有効となっているから。
75
+
76
+ です。
77
+
78
+
66
79
  今回の問題は、〜child と 〜of-type の仕様の違いをよく理解しないまま:nth-child(n+2) を使ってしまったことにあるかと思います。
67
80
  作りたいデザインを最もシンプルに作るのであれば、
68
81