Стилизация с помощью CSS2, когда атрибут не установлен - PullRequest
0 голосов
/ 16 декабря 2009

Создать элемент с набором атрибутов легко: E[attr].

Есть ли способ стилизовать элемент с помощью CSS2, основанный на отсутствии атрибута, что-то вроде этого E[!attr]? (Решение 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>

Классы abc и def имеют более низкий приоритет по сравнению с правилом id-ed, поэтому оба параметра a имеют отступ 0. Я не могу изменить последовательность правил выше, но я могу изменить правило id-ed и добавить свое собственное правила. Я хочу избежать написания правил, таких как #n a.abc для каждого класса (их много). Вместо этого мне нужно что-то вроде #n a[!class], чтобы сохранить целостность всех классов a.

Ответы [ 2 ]

3 голосов
/ 16 декабря 2009

К сожалению, не в CSS2. Лучшее, что вы можете сделать - это каскадировать ваши декларации:

E {color: red}
E[attr] {color: blue}

Но даже на это нельзя полагаться, поскольку IE6 не поддерживает селекторы атрибутов.

В CSS3, однако, есть прекрасный псевдоселектор ": not"

EDIT

Спасибо за разъяснения. Как насчет:

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

#n a{padding: 1em}
0 голосов
/ 16 декабря 2009

Я не думаю, что это можно сделать в CSS2. В CSS3 вы бы использовали синтаксис "not" :

input:not([type="file"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...