Как создать правило css для всех элементов, кроме одного класса?


97

Я создал таблицу стилей 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

да, мне это нужно для работы в основных браузерах. Есть ли другой способ добиться этого, кроме сценариев? ура
Ник

Подход Cori будет работать в браузерах вплоть до IE4, а может быть, и раньше.
kibibu

Ответы:


189

Отрицание псевдо-класса , кажется, что вы ищете.

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)cf 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.