質問

が設定された属性を持つ要素をスタイリングすることは簡単です:。E[attr]

このE[!attr]ような属性、何かの欠如に基づくCSS2を持つ要素のスタイルを設定する方法はありますか? (JavaScriptのソリューションは、オプションではありません)。

たとえば、IDルールに続くいくつかのクラス規則がある:

.abc {padding:1em;}
.def {padding:2em;}
#n a {padding:0;}

のHTMLコードは、次のとおりです。

<div id="n"><a href="" class="abc">.</a><a href="" class="def">.</a></div>

クラスabcdefので、両方aがパディング0私は上記のルールの順序を変更することはできませんが、私は自分のルールを追加し、ID-EDのルールを変更することができますを持っているID-EDルールに対するlowererの優先順位を持っています。私は(多くはそこにいる)すべてのクラスのために#n a.abcようなルールを書き込まないようにしたいです。代わりに、私はすべてそのままクラス-EDの#n a[!class]sを維持するためにaのようなものを必要としています。

役に立ちましたか?

解決

悲しいことではなく、CSS2インチあなたができる最善のは、あなたの宣言をカスケード接続することです。

E {color: red}
E[attr] {color: blue}
IE6は、属性セレクタを尊重しないと

しかし、たとえこれは本当に、当てにすることはできません。

CSS3では、しかし、美しいとされている ":いない" 擬似セレクタ( http://www.w3.org/TR/css3-selectors/#negation に)。

EDIT

明確にしてくれてありがとう。いかがます:

.abc {padding:1em; !important} .def{padding:2em; !important}

#n a{padding: 1em}

他のヒント

私は、これはCSS2で行うことができるとは思いません。 CSS3では、あなたは "ない" 構文:

input:not([type="file"])
scroll top