スペックは不明。それを見るには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');
ヒント: 次回はより良い色のペアを選択してください。色弱者にとっては助けになりません :)