2016-05-25 1 views
1

私はセレクタではバグを発見したと思います。私はCSSでバグをどこに提出するのか分かりません。:していないとテキスト装飾のバグ?これを送る場所

テキストの装飾は、内の要素に適用されます:

は、私が一緒に入れているこの小さなcodepenが表示されない下線ではありませんが、色が正しく適用されています。

https://codepen.io/miketricking/pen/YWKGyJ

p { 
 
    color: #000000; 
 
} 
 

 
:not(p) { 
 
    color: red; 
 
    text-decoration: underline; 
 
}
<h1>This is a heading</h1> 
 

 
<p>This is a paragraph.</p> 
 
<p>This is another paragraph.</p> 
 

 
<div>This is some text in a div element.</div>

+0

@BoltClockが言っているように、スタイルは 'html'と' body'要素から継承されています。これはブラウザの開発者ツールで見ることができます - [ここをクリック](http://s33.postimg.org/4e9ba8j4v/ Screen_Shot_2016_05_25_at_13_47_53.png) – Vucko

答えて

7

テキスト装飾は、 H1およびDIVとともに、本体とhtmlに適用されています。 4つの要素すべてが一致します:not(p)。本文からの装飾がp要素に伝播しています。そのため、赤い下線が表示されます(そのcolor: red宣言が下線の描画に使用されているためです)。これはどんなブラウザでもバグではなく、仕様の間違いでもありません。反対に、これはstated very deliberately in the specです。

セレクタにbodyを追加することで回避できますが、トップレベルのp要素でのみ動作し、一致する他の要素には表示されません。 :

p { 
 
    color: #000000; 
 
} 
 

 
body :not(p) { 
 
    color: red; 
 
    text-decoration: underline; 
 
}
<h1>This is a heading</h1> 
 

 
<p>This is a paragraph.</p> 
 
<p>This is another paragraph.</p> 
 

 
<div>This is some text in a div element.</div>

残念ながら、あなたはそれらの表示タイプを変更し、その過程で自分のレイアウトを壊すことなく、あなたのp要素に伝播されることから、テキスト装飾を防ぐことはできません。 this answerを参照してください。

+0

これは完璧な意味があります。ありがとうございました! –

関連する問題