スペックは不明。それを見るには2つの方法があります:
- これは WebKit/IE9 のバグです。値を上書きする場合、重要
color
であろうとなかろうと、古い値が残っている理由はありません。
- WebKit/IE9 は正しいです。DOM インターフェイスは、 CSS 宣言ブロックと見なされる要素
style
のプロパティを操作します。CSS ブロックでは、設定されたプロパティは、設定されていないプロパティよりも常に優先されます。その規則により、「赤」への変更は効果がないはずなので、効果的に無視されます。style
!important
後者の説明が最も可能性が高いと思います。次のような宣言を検討してください。
p { color: red !important; }
color
なしで 2 番目のルールを追加し!important
ても、効果はありません。
p {
color: red !important;
color: blue;
}
/* the color is still red */
同じことが、HTMLstyle
属性を直接操作する場合にも当てはまります。
そのため、Chrome/Safari/IE9 での動作は CSS カスケード ルールと一致していますが、FF と Opera は DOM スタイルをカスケード ルールに関係なく単純なオブジェクトとして扱い、CSS 宣言へのインターフェイスとしてではありません。
http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-CSSStyleDeclaration
興味深い事実: webkit は に対して文字列の一致を行っているように見えるためimportant
、これも機能します。
elem.style.setProperty('color', 'red', 'this is a really important rule');
ヒント: 次回はより良い色のペアを選択してください。色弱者にとっては助けになりません :)