2017-07-26 8 views
5

私は擬似要素のスタイルで遊んと擬似要素のスタイル優先

は、次のCSSとhtml

HTML考えてみましょう私を困惑行動に出くわした:

<p> 
     Note: As a rule, double colons (::) should be used instead of a single colon (:). This distinguishes pseudo-classes from pseudo-elements. However, since this distinction was not present in older versions of the W3C spec, most browsers support both syntaxes for the sake of compatibility. Note that ::selection must always start with double colons ::. 
    </p> 

とスタイルを

p::first-letter { 
    font-size: 20px; 
    color: red; 
} 

p::first-line { 
    font-variant: small-caps; 
    color: green; 
} 

p::before { 
    content: 'Start'; 
    color: blue; 
} 

Chromeでは、次のような動作があります。 pと:beforeスタイルの内容が青色に色を上書きしないにもかかわらず、tは赤色に着色されます。また enter image description here

そこには文字がコンテンツの前に::ではないと私はそこ&または*を置く - すべての最初の行には、緑と全くなっていない::最初の文字と::をスタイルが適用される前に。

Firefoxでは提供されているコードの結果は以下のようになります: enter image description here

私は誰もが理由を説明でき::コンテンツは他で選択される前に、Ubuntuの17.04

の下で、最新バージョンのブラウザを使用しています擬似要素セレクタが適用され、スタイルが適用されています。なぜなら、own :: beforeスタイルは「後で」スタイルであってもそれらを上書きしません。

+0

すべてのセレクタの特異性は2であるので、私は最後のものが勝つと思います。しかし、それはありません –

+0

いいえ、私の最初の手紙は赤ではなく、青ではありません –

+0

ああ、お詫び、あなたの投稿を誤って投稿hahaは私のコメントを削除します:) – ThisGuyHasTwoThumbs

答えて

3

最初の行と最初の文字については、これは実際には特異性の問題ではありません。定期的な要素の内容と同様に

、 の生成されたコンテンツ:: beforeと::それは、ちょうどこのように指定されます擬似要素は、任意の に含まれていてもよい後::最初の行と::初段元の要素の に適用された文字の擬似要素。

source

+0

ありがとう、これは:: first-lineと:: first-letterのスタイルが適用される理由を説明しています。しかし、なぜ最後のもの(前にあるの?)が勝たないのはなぜですか? –

+0

@OlenaHoral私はこのことについては不明です。擬似要素は、それ自体がルールの結果として存在するため、擬似要素をスタイルするときに不特定の(または少なくとも不明瞭な)振る舞いがたくさんあるようです。 –

+0

@OlenaHoralどんな場合でも私の答えは受け入れないでください。あなたの質問はより良い答えに値するでしょう。 –