Bagaimana cara membuat aturan css untuk semua elemen kecuali satu kelas?

95

Saya telah membuat lembar gaya CSS untuk proyek saya. Apakah ada cara agar saya dapat membuat aturan css yang berlaku untuk semua elemen tabel KECUALI elemen tabel yang termasuk dalam kelas "dojoxGrid"? Sesuatu seperti:

.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;
}
Nick
sumber
Apakah Anda memerlukan ini untuk bekerja lintas browser? Browser memiliki dukungan berbeda untuk pemilih CSS yang lebih fleksibel. Ini mungkin sesuatu yang dapat Anda lakukan dalam skrip jika benar-benar diperlukan, dan perlu lintas-browser.
kibibu
ya, saya membutuhkannya untuk berfungsi di browser utama. Apakah ada cara lain yang bisa saya lakukan selain melalui skrip? tepuk tangan
Nick
Pendekatan Cori akan bekerja di browser kembali ke ie4, mungkin lebih awal.
kibibu

Jawaban:

183

The negasi pseudo-class tampaknya menjadi apa yang Anda cari.

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

Ini tidak didukung oleh ≤ IE8 .

Knu
sumber
2
itu pemilih css3 yang bagus untuk diperhatikan - semoga dapat digunakan di IE9.
cori
4
sementara komentar saya tidak secara langsung berlaku untuk pertanyaan tersebut, perlu dicatat bahwa :notDAPAT digunakan sebagai pemilih jquery. yaitu $("[data-name='bob']:not(a)"), mana yang bagus.
gingerbreadboy
3
Ini harus menjadi jawaban yang diterima, karena ini adalah jawaban untuk efek yang diinginkan. Jawaban yang diterima saat ini adalah cara alternatif untuk mencapai efek yang diinginkan, tetapi tidak benar-benar menjawab pertanyaan tersebut. Orang-orang yang menemukan pertanyaan ini, sangat mungkin mencari jawaban dari apa yang sebenarnya ditanyakan, dalam kebanyakan kasus cara alternatif tidak berlaku.
Pedro Moreira
Dalam ≤IE8 ini akan diabaikan sama sekali sehingga tidak memaksa tabel untuk diambil color:red. Ini mungkin bagus untuk beberapa tetapi bagi saya saya berharap itu akan membacanya seperti table {color:red;}dan mengabaikan :not().
DutGRIFF
7
@FranciscoCorrales :not(.classOne):not(.classTwo)cf stackoverflow.com/a/5684168/248058
Knu
12

Tidakkah menetapkan aturan css untuk semua tabel, dan kemudian yang berikutnya untuk tabel di mana class = "dojoxGrid" berfungsi? Atau apakah saya melewatkan sesuatu?

cori
sumber
3
Ya itu benar-benar akan berhasil, tetapi Anda akan menyetel semua properti itu ke sebuah nilai. Jika Anda ingin membiarkannya "tidak disetel" maka tidak. Agaknya Nick mencoba untuk tidak memaki nilai dojoxGrid seperti yang ditetapkan di tempat lain.
kibibu
1
Saya pikir itu akan. Namun saya menetapkan sekumpulan properti untuk semua tabel, saya dapat menimpanya lagi dengan nilai default yang diperlukan untuk dojoxGrid. Namun saya tidak yakin apa nilai default ini karena mereka dihasilkan oleh pustaka dojo. Oleh karena itu saya mencari cara lain untuk mencapainya.
Nick
4

Taruhan teraman adalah membuat kelas di meja itu dan menggunakannya. Saat ini tidak mungkin mendapatkan sesuatu seperti ini untuk bekerja di semua browser utama.

Joel
sumber