Як створити правило css для всіх елементів, крім одного класу?


95

Я створив таблицю стилів CSS для свого проекту. Чи можу я якось створити правило css, яке застосовується до всіх елементів таблиці, окрім елементів таблиці, що належать до класу "dojoxGrid"? Щось на зразок:

.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

так, мені це потрібно для роботи на основних браузерах. Чи є інший спосіб досягти цього, а не за допомогою сценаріїв? ура
Нік

Підхід Корі працюватиме на браузерах аж до ie4, можливо раніше.
kibibu

Відповіді:


183

Заперечення псевдо-класу , здається, що ви шукаєте.

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

Однак це не підтримується ≤ IE8 .


2
це хороший селектор css3, про який слід пам’ятати - сподіваємось, він може бути використаний в IE9.
cori

4
хоча мій коментар не стосується безпосередньо питання, варто зазначити, що :notМОЖЕ використовуватися як селектор jquery. тобто $("[data-name='bob']:not(a)"), що приємно.
пряник

3
Це має бути прийнятою відповіддю, оскільки це відповідь на бажаний ефект. Поточна прийнята відповідь є альтернативним способом досягнення бажаного ефекту, але насправді не відповідає на питання. Люди, які знаходять це питання, дуже ймовірно шукають відповідь на те, що саме задано, в більшості випадків альтернативний спосіб не застосовується.
Педро Морейра,

У ≤IE8 це буде повністю проігноровано, змушуючи жодних таблиць отримати color:red. Це може бути добре для деяких, але для мене я сподівався, що він прочитає це як table {color:red;}і просто ігнорує :not().
DutGRIFF

7
@FranciscoCorralesMorales :not(.classOne):not(.classTwo)порівняй stackoverflow.com/a/5684168/248058
Knu

12

Чи не встановити правило css для всіх таблиць, а потім наступне для таблиць, де працює class = "dojoxGrid"? Або мені чогось не вистачає?


3
Так, це абсолютно спрацювало б, але ви б встановили для всіх цих властивостей значення. Якщо ви хотіли залишити їх "не встановленими", тоді ні. Імовірно, Нік намагається не обмежувати значення dojoxGrid, як вони встановлені деінде.
kibibu

1
Я думаю, що це було б. Однак я встановлюю купу властивостей для всіх таблиць, я міг би знову перезаписати їх значеннями за замовчуванням, необхідними для dojoxGrid. Однак я не впевнений, що це за значення за замовчуванням, оскільки вони генеруються бібліотекою dojo. Тому я шукав інший спосіб його досягнення.
Нік

4

Найбезпечніша ставка - створити клас за цими столами та використовувати його. В даний час отримати подібне до роботи у всіх основних браузерах навряд чи вдасться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.