1つのクラスを除くすべての要素のCSSルールを作成するにはどうすればよいですか?


95

プロジェクト用のCSSスタイルシートを作成しました。クラス「dojoxGrid」に属するテーブル要素を除くすべてのテーブル要素に適用されるcssルールを作成する方法はありますか?何かのようなもの:

.not(dojoxGrid) table{
    width:100%;
    border-top:1px solid #dddddd;
    border-left:1px solid #dddddd;
    border-right:1px solid #dddddd;
    margin:1em auto;
    border-collapse:collapse;
}

クロスブラウザを動作させるためにこれが必要ですか?ブラウザーは、より柔軟なCSSセレクターに対して異なるサポートを持っています。それが絶対に必要で、クロスブラウザである必要がある場合は、スクリプトで実行できるものかもしれません。
kibibu 2010年

はい、主要なブラウザで動作させるために必要です。スクリプトを使用する以外に、他に方法はありますか?乾杯
Nick

Coriのアプローチは、IE4までさかのぼってブラウザーで機能するでしょう。
kibibu 2010年

回答:


181

否定擬似クラスは、あなたが探しているもののようです。

table:not(.dojoxGrid) {color:red;}

ただし、IE8以下ではサポートされていません


2
これは、知っておくとよいcss3セレクタです。うまくいけば、IE9で使用できます。
cori 2010年

4
私のコメントは質問に直接適用できませんが:not、jqueryセレクターとして使用できることは注目に値します。すなわち$("[data-name='bob']:not(a)")、それはいいです。
gingerbreadboy

3
これは、望ましい効果に対する答えであるため、受け入れられる答えになるはずです。現在受け入れられている答えは、望ましい効果を達成するための代替方法ですが、実際には質問には答えません。この質問を見つけた人は、正確に尋ねられた答えを探している可能性が高く、ほとんどの場合、別の方法は適用されません。
ペドロモレイラ2014

≤IE8では、これは完全に無視され、取得するテーブルはありませんcolor:red。これは一部の人にとっては良いかもしれませんが、私はそれがそのように読まれtable {color:red;}、単に無視されることを望んでいました:not()
DutGRIFF 2014年

7
@FranciscoCorralesMorales :not(.classOne):not(.classTwo)CF stackoverflow.com/a/5684168/248058
KNU

12

すべてのテーブルにCSSルールを設定してから、class = "dojoxGrid"が機能するテーブルに後続のルールを設定しませんか?それとも何か不足していますか?


3
ええ、それは絶対に機能しますが、これらのプロパティをすべて値に設定することになります。「未設定」のままにしたい場合は、いいえ。おそらくニックは、dojoxGridの値が他の場所で設定されているため、その値を上書きしないようにしています。
kibibu 2010年

1
そうだと思います。ただし、すべてのテーブルに一連のプロパティを設定しているため、dojoxGridに必要なデフォルト値でそれらを再度上書きすることができます。ただし、これらのデフォルト値は、dojoライブラリーによって生成されるため、どのようなものかわかりません。したがって、私はそれを達成する別の方法を探していました。
ニック

4

最も安全な方法は、それらのテーブルにクラスを作成し、それを使用することです。現在、このようなものをすべての主要なブラウザで動作させることはほとんどありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.