При применении правил специфичность селектора рассчитывается путем подсчета всех простых селекторов (связанных любыми комбинаторами), а не только ключевого селектора. Это означает, что вы не просто сравниваете эти два селектора:
div
#firstDiv
Но вы сравниваете эти два селектора:
#container > div:not(:last-of-type)
#firstDiv
Здесь первый селектор более конкретен, потому что он имеет:
Селектор идентификатора, #container
Селектор типа (элемента), div
; и
Псевдокласс, в данном случае :last-of-type
; сам псевдокласс :not()
не учитывает специфичность селектора
В то время как второй селектор состоит только из идентификатора. Обратите внимание, что сами комбинаторы, такие как >
в первом примере, не учитывают специфичность селектора.
В спецификации селекторов имеется целый раздел, посвященный способам расчета специфичности селектора.