私は次のマークアップ使用しています:Selectors Level 3 specificationから兄弟セレクタ* + *と*〜*の背後にあるロジックは何ですか?この質問のために
<body>
<p>1</p> <!-- Paragraph 1 -->
<p>2</p> <!-- Paragraph 2 -->
<p>3</p> <!-- Paragraph 3 -->
</body>
を次のセレクタルールが適用され、:
* any element
E + F an F element immediately preceded by an E element
E ~ F an F element preceded by an E element
これに基づき、次のことが発生した場合:
body + * { } /* Selects nothing as no elements precede body */
body ~ * { } /* As above. */
p + * { } /* Selects Paragraph 2 and Paragraph 3 as these are preceded by p */
p ~ * { } /* As above. */
* + * { } /* As above. */
* ~ * { } /* As above. */
False!
* + *
と* ~ *
は何とか2と3と一緒にパラグラフ1を選択することができます!第1項は、何が付いていないので、アクセスを不可能にする必要があります:
body + * { background: #000; }
body ~ * { background: #000; }
p ~ * { color: #f00; }
p + * { font-weight: bold; }
* + * { text-decoration: underline; }
* ~ * { font-style: italic; }
結果:あなたが見ることができるように
、第1項は、body
かが付いていませんファントムp
ですが、明らかに先行しています。カスタムスタイリングはまったく適用されてはいけませんが、最後の2つのセレクターの影響を受けます。これの背後にある論理は何ですか?
'*〜body'と' * + body'がありません –
同じ結果 - http://jsfiddle.net/WM4mu/1/ – Michael
私はちょうど '*〜*'が_like_ '*〜 bodyと '* + *'は '* + body'を' body + 'に書くと' 'body''に適用され、bodyは' 'unterline''と' italic'スタイルを持ちます。 –