JavaScript から CSS 疑似クラスルールを設定する 質問する

JavaScript から CSS 疑似クラスルールを設定する 質問する

JavaScript から疑似クラスセレクター (:link、:hover など) の CSS ルールを変更する方法を探しています。

つまり、CSS コードに相当するものがa:hover { color: red }JS にあります。

他の場所では答えを見つけることができませんでした。これがブラウザでサポートされていないものであることを知っている人がいれば、それも役立つ結果になるでしょう。

ベストアンサー1

インライン style="..." 属性に疑似クラスを設定できないのと同じように、特定の要素のみに疑似クラスのスタイルを設定することはできません (セレクターがないため)。

たとえば、次のルールを追加するなどして、スタイルシートを変更することでこれを実行できます。

#elid:hover { background: red; }

影響を与える各要素には、選択できるように一意の ID があることを前提としています。

理論的には、あなたが欲しい文書はhttp://www.w3.org/TR/DOM-Level-2-Style/概要つまり、(既存の埋め込みまたはリンクされたスタイルシートがある場合) 次のような構文を使用できます。

document.styleSheets[0].insertRule('#elid:hover { background-color: red; }', 0);
document.styleSheets[0].cssRules[0].style.backgroundColor= 'red';

もちろん、IE には独自の構文が必要です。

document.styleSheets[0].addRule('#elid:hover', 'background-color: red', 0);
document.styleSheets[0].rules[0].style.backgroundColor= 'red';

古いブラウザやマイナーなブラウザは、どちらの構文もサポートしていない可能性があります。動的なスタイルシートの調整は、正しく行うのが非常に面倒で、めったに必要とされず、歴史的に面倒なため、めったに行われません。

おすすめ記事