Конкретный вопрос о специфике CSS - PullRequest
1 голос
/ 23 августа 2011

У меня очень специфический вопрос о CSS Specificity, который я не мог четко понять; http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

Если у меня есть 2 селектора, которые определяют непротиворечивые свойства / атрибуты, оба атрибута будут по-прежнему применяться ИЛИ как он работает, он просто сравнивает селекторы, не беспокоясь о том, что определено внутри них.

Так что, если у нас есть;

.menu1 {color:red}
p.menu1 {font-size:10px}

Здесь оба селектора относятся к «menu1», но определяют несвязанные атрибуты (цвет / размер шрифта)

Итак, мой вопрос: специфичность все еще имеет значение, и будет рассматриваться только 1 из 2? Мой вопрос больше о том, как происходит фактическая реализация.

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Нет, в этом случае специфика не имеет значения, поскольку вы просто добавляете дополнительное свойство к классу menu1, которое не меняет никаких существующих правил.Однако если вы измените порядок правил и попытаетесь переопределить color:

p.menu1 {color:blue}
.menu1 {color:red}

, то менее конкретное правило .menu1 {color:red} не будет переопределять более конкретно p.menu1 {color:blue}, даже если после синего правила (1014) появляется * красное правило .

Конечно, если выизмените второе правило на p.menu1 {color:red}, оно будет переопределено, поскольку эти два правила будут иметь одинаковую специфичность.

1 голос
/ 23 августа 2011

В обзоре статьи пункт 11 гласит:

11.Последнее определенное правило переопределяет любые предыдущие конфликтующие правила.

(где «последнее правило» может быть заменено «последним или наиболее конкретным правилом»)

Так что если есть разные свойства, то ничего не переопределяется.Два правила объединены, поэтому p.menu1 будет иметь размер шрифта 10 пикселей и будет красного цвета.Второе правило по-прежнему имеет более конкретный селектор, но оно просто не актуально, пока вы не укажете общий стиль, который потенциально может быть переопределен.

То, как все это делается в реализации, - это, конечно, подробности реализации, поэтомуЯ не знаю.

...