Какой селектор сильнее?Какой CSS-селектор сильнее?
#nav li.current
или
div #nav li
и второй
a.test
или
.test .test
Каков ответ?
Какой селектор сильнее?Какой CSS-селектор сильнее?
#nav li.current
или
div #nav li
и второй
a.test
или
.test .test
Каков ответ?
От spec:
Специфичность селектора вычисляется следующим образом:
- подсчитать количество ID селекторов в селекторе (= а)
- подсчитать количество селекторов класса , селекторов атрибутов и псевдоклассов в селекторе (= b)
- подсчитывает количество селекторов и псевдоэлементов типа в селекторе (= c)
- игнорировать универсальный селектор
селекторов внутри отрицания псевдо-класса подсчитывают как и любой другой, но само отрицание не считается псевдо-класса.
Сочетание трех чисел a-b-c (в системе с большим основанием) дает специфику.
Примеры:
* /* a=0 b=0 c=0 -> specificity = 0 */ LI /* a=0 b=0 c=1 -> specificity = 1 */ UL LI /* a=0 b=0 c=2 -> specificity = 2 */ UL OL+LI /* a=0 b=0 c=3 -> specificity = 3 */ H1 + *[REL=up] /* a=0 b=1 c=1 -> specificity = 11 */ UL OL LI.red /* a=0 b=1 c=3 -> specificity = 13 */ LI.red.level /* a=0 b=2 c=1 -> specificity = 21 */ #x34y /* a=1 b=0 c=0 -> specificity = 100 */ #s12:not(FOO) /* a=1 b=0 c=1 -> specificity = 101 */
Вы можете следовать следующим правилам для расчета селекторы точек.
Селектор тегов стоит 1 балл.
Селектор классов стоит 10 баллов.
Селектор ID стоит 100 баллов.
Встраиваемый стиль стоит 1000 баллов.
#nav li.current
= 100 + 1 + 10 = 111
div #nav li
= 1 + 100 + 1 = 102
a.test
= 1 + 10 = 11
.test .test
= 10 + 10 = 20
Означает ли это, что вы можете перезаписать встроенный стиль, используя '#foo #bar #baz #quux # foo2 # bar2 # baz2 # quux2 # foo3 # bar3 # baz3'? – jcubic
Не работает http://jsfiddle.net/QNztu/. Встроенный стиль не перезаписывается. – jcubic
@ jcubic AFAIK, css селекция работает справа налево. поэтому, если первый выбор - это идентификатор, тогда он ** не ** ищет следующий выбор, потому что идентификаторы должны быть уникальными. Итак, точки для ваших вышеперечисленных селекторов css - это просто '100'. –
Первый «1,1,1», тогда как второй - «1,0,2», поэтому первый сильнее. Во второй части у вас есть «1,1» против «2,0», что делает вторую сильнее. –
Лучше задать вопрос, как определить силу селектора, тогда вы можете рассчитать его самостоятельно. –
Попробуйте сами, воспользовавшись калькулятором спецификаций http://specificity.keegan.st/ – pwdst