Свойство style
на узлах DOM по сути является аксессором / мутатором для атрибута style
для этих узлов DOM.
Для целей этого ответа рассмотрим node.style.color = 'red'
как эквивалентное node.setAttribute(node.getAttribute('style') + ' color: red')
*.
С этим вопрос можно перефразировать как
Какова специфика CSS правил в атрибуте style
?
ИтакКонечно, ответ заключается в том, что спецификация определяет это поведение
Специфика селектора рассчитывается следующим образом:
...
Примечание: специфика стилей, указанных в атрибуте стиля HTML, описана в CSS 2.1. [CSS21] .
Да, я слышал, вам понравились спецификации
Из CSS 2.1:
Специфичность селектора рассчитывается следующим образом:
- count 1, если декларация from является атрибутом 'style', а не правилом сселектор , 0 в противном случае (= a) (В HTML значения атрибута «style» элемента являются правилами таблицы стилей. Эти правила не имеют селекторов, поэтому a = 1, b = 0, c = 0 и d =0.)
- подсчитать количество атрибутов ID в селекторе (= b)
- подсчитать количество других атрибутов и псевдоклассов в селекторе (= c)
- подсчитать количество имен элементов и псевдоэлементов в селекторе (= d)
выделение шахты
Таким образом, фактическая расчетная специфичностьdocument.getElementById("demo").style.color = "red";
is 1,0,0,0
* Это, конечно, игнорирование существующих правил в style
.