質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

745閲覧

.container *:first-child と .container > *:first-child の違いは?

退会済みユーザー

退会済みユーザー

総合スコア0

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/06/25 12:26

html

1<body> 2 3<style> 4.container *:first-child { color: blue; } 5.container > *:first-child { color: red; } 6</style> 7 8<div class="container"> 9 <p>paragraph 1</p> 10 <p>paragraph 2</p> 11 <p>paragraph 3</p> 12 13 <ul> 14 <li>list-item 1</li> 15 <li>list-item 2</li> 16 <li>list-item 3</li> 17 </ul> 18 19 <table> 20 <tr> 21 <th>Fruits</th> 22 <th>Vegetables</th> 23 </tr> 24 <tr> 25 <td>Apple</td> 26 <td>Potato</td> 27 </tr> 28 <tr> 29 <td>Orange</td> 30 <td>Carrot</td> 31 </tr> 32 </table> 33 34</div> 35</body>

▼ 実行結果
![イメージ説明]

.container > *:first-child { color: red; } では一番上の paragrah 1 のみがマッチします。これは「.container 直下のすべての要素のうち、一番最初の要素」だと理解しています。

ただ、.container *:first-child { color: blue; } で画像のようにマッチする理由がわかりません。僕の予想では「.container 内の(子孫含む)すべての要素のうち、一番最初の要素」にマッチする、つまり .container > *:first-child { color: red; } で赤くなっているのと同じ部分だけがマッチするのだと思ったのですが。

質問

.container *:first-child はどのようなマッチの挙動になっているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「.container 内の(子孫含む)すべての要素のうち、一番最初の要素」

「.container 内の(子孫含む)すべての要素のうち、(兄弟要素の中で)一番最初の要素」です。

投稿2020/06/25 12:30

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/25 12:50 編集

ありがとうございます!ということは、 「<p> * 3, <ul>, <table> の兄弟で最初 → paragraph 1」 「<li> 3兄弟の中で最初 → list-item 1」 ですね。 <table> の中身がすべてマッチするのはなぜでしょうか? 「<tr>3兄弟の最初、かつ<th>の最初」で Fruits のみマッチするのでは?とおもったのですが。 ※訂正追記 「<tr>3兄弟それぞれの中身の最初」で Fruits, Apple, Orange, のみマッチするのではと思いました。
kei344

2020/06/25 12:59

tableは省略してもtbodyがあるので、それが「一番最初の要素」でその中身は全部青色です。(colorは指定が無い限り継承します)
退会済みユーザー

退会済みユーザー

2020/06/25 13:07

なるほど、tbodyの省略について考えていませんでした……!とてもスッキリしました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問