2016-10-23 7 views
3

私が予想したように、テキスト"Color Blue"の背景は、青色で、"No color"ではありません。しかし、それらのどれも着色されていません。Css:not not working

<html> 
 
    <style> 
 
    #main > :not(a) { 
 
     background: blue; 
 
    } 
 
    </style> 
 
    </head> 
 
    <body> 
 
     <div id="main"> 
 
     Color Blue  
 
     <br> 
 
     <a>No color</a> 
 
     </div> 
 
    </body> 
 
    </html>

どのように私は HTMLコードを変更することなく、青い内のテキスト "カラーブルー" のBGを色付けすることができますか? は、ここで要求されるように期待される出力です:

enter image description here

+0

を確認することができます:あなたが背景スタイリングにちょうど「カラーブルー」のテキストを適用しようとしています。 div全体にバックグラウンドスタイルを適用し、バックグラウンドを「no color」に設定して別のカラーワークにすることはできますか?確かに – Dexter

+0

はい。可能であれば、htmlコードを変更したくありません。テキストだけ "カラーブルー" – TSR

+0

最終出力はどのように見えますか?リンクを除いて#mainのeveythingに青い背景を付けることはできませんか? – Dexter

答えて

3

あなたのCSSセレクタ#main > :not(a)はマッチ「の要素を除いて#mainの直接の子、ある任意の要素を」と言います。

残念ながら、「Color Blue」は子要素には含まれていないため、CSSセレクタは一致しません。同様に不幸なことに、テキストノードを直接ターゲットにすることはできません(Is there a CSS selector for text nodes?参照)ので、「カラーブルー」テキストのスタイルを変更することはできません。

代わりに#mainの全体をスタイルすることができます。 aの背景色は別のものになるのですか?例えば

#main { background: blue; } 
#main > a { background: white; } 
0

これは必要なのですか?私に知らせてください:)ここ

は、あなたの出力です:

img

a { 
 
    background: white; 
 
} 
 
:not(a) { 
 
    background: blue; 
 
}
<html> 
 
<body> 
 
    <div id="main"> 
 
    Color Blue 
 
    <br> 
 
    <a>No color</a> 
 
    </div> 
 
</body> 
 
</html>

0

あなたが表示されるタグを作る考慮するかもしれない テキスト・ノードのためのスタイルがありませんインラインブロック/ブロックを使用して別の行に追加

チェックth e。次のスニペット

#main a{ 
 
    display:block; 
 
} 
 
#main *:not(a){ 
 
    background:blue; 
 
}
<div id="main"> 
 
     <span>Color Blue </span> 
 
     
 
     <a>No color</a> 
 
     </div>

希望これは