#html #css
#HTML #css
Вопрос:
Я не знаю, возможно ли это в CSS, но я бы хотел, чтобы общая роль не применялась к определенному элементу в моем случае id=special
. В моем примере весь DIV должен быть красным, но я хочу только id=special
, чтобы этот цвет не применялся. Я понимаю, что всегда могу перезаписать элемент, id=special
но мне интересно знать, возможно ли какое-то исключение из общей роли.
Есть идеи в CSS 2 и CSS 3?
Пример:
<div>this is red</div>
<div>this is red</div>
<div id="special">this one must be blus</div>
div>this is red</div>
// My General Role
div
{
background-color:Red;
}
Комментарии:
1. почему бы не создать стиль
#special { background-color: blue; }
— это сделало бы то, что вы хотите2. спасибо aleks за ваше предложение
Ответ №1:
CSS3 позволяет :not()
использовать селектор:
div:not([id])
-or-
div:not(#special)
depending on what you want to exclude
Вы можете прочитать все о селекторах в документах w3c.
Что касается CSS2, то существует ограниченный набор селекторов, и они не учитывают отрицание.
Комментарии:
1. Спасибо за ваше решение, только дополняющее, в моем случае я использовал: label:not(.radio){} где radio — это другой класс стиля. 😉
Ответ №2:
Решение CSS2
div {
color: red;
}
div#special {
color: inherit;
}
демонстрация: http://jsfiddle.net/zRxWW/1 /
Ответ №3:
Решение CSS3:
div:not(#special)
Комментарии:
1. круто! любое другое решение, кроме как в CSS 2? Спасибо, что уделили этому время!
2. Боюсь, что переопределение … css2 не имеет решения для этого. Вы всегда можете использовать решение GerManson, но я бы посчитал это также переопределяющим.
3. Указание стилей по идентификатору (которые переопределяют стили элементов) существует со времен CSS1
4. @GibboK — Что мешает вам использовать это? Типичное отсутствие поддержки IE?
5. У меня возникла некоторая проблема с IE, но я намеренно попросил learning предложить спасибо за ваш ответ.
Ответ №4:
Вы хотели бы использовать div:not(#special)
, но если он все равно будет синим, тогда вы можете просто переопределить правило. :not()
Селектор является свойством CSS3 и, следовательно, поддерживается не всеми браузерами.
Комментарии:
1. Потрясающее решение! Мощность CSS3 🙂 Мне очень помогла
Ответ №5:
Это отличный пример того, как работает специфика CSS. Общее правило, применяемое ко всем элементам определенного типа (ваше div
правило окрашивает фон в красный цвет), заменяется более конкретным правилом, применяемым к идентификатору. Эта концепция существует со времен CSS1 и доступна во всех браузерах. Таким образом:
div {
background-color:red;
}
#special {
background-color: blue;
}
… оставит все divs красными. Применяя special
идентификатор к div, этот один div будет синим.
Посмотрите на это в действии: http://jsfiddle.net/9Hyas /
Ознакомьтесь с этими статьями, чтобы узнать больше о специфике CSS: http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know / и http://www.htmldog.com/guides/cssadvanced/specificity /