JavaScriptでCSS擬似クラスを設定
JavaScriptからCSS擬似クラスルールを設定する
JavaScriptからCSSの擬似クラスルールを設定することで、動的なユーザーインターフェイスを作成することができます。擬似クラスは、要素の状態やイベントに基づいてスタイルを適用する特別なセレクタです。
擬似クラスの例
:checked
: チェックボックスやラジオボタンがチェックされたとき:focus
: 要素がフォーカスされたとき:active
: 要素がクリックされたとき:hover
: マウスポインタが要素の上に置かれたとき
JavaScriptで擬似クラスルールを設定するには、要素のスタイルプロパティに直接アクセスします。
const element = document.getElementById("myElement");
// :hover擬似クラスのスタイルを設定
element.style.hover = "background-color: yellow;";
// :active擬似クラスのスタイルを設定
element.style.active = "background-color: green;";
// :focus擬似クラスのスタイルを設定
element.style.focus = "border: 2px solid blue;";
// :checked擬似クラスのスタイルを設定
element.style.checked = "color: red;";
重要な注意点
- ブラウザの互換性には注意してください。一部の擬似クラスは古いブラウザでサポートされていない場合があります。
- 上記の方法では、擬似クラスのすべての状態に対してスタイルを設定します。特定の状態に対してのみスタイルを設定する場合は、条件文やイベントリスナーを使用する必要があります。
例: マウスオーバー時に要素の色を変更する
const element = document.getElementById("myElement");
element.addEventListener("mouseover", function() {
element.style.backgroundColor = "yellow";
});
element.addEve ntListener("mouseout", function() {
element.style.backgro undColor = "white";
});
このコードでは、要素にマウスポインタが乗ったときに背景色を黄色に変更し、マウスポインタが外れたときに白色に戻します。
const element = document.getElementById("myElement");
element.addEventListener("mouseover", function() {
element.style.backgroundColor = "yellow";
});
element.addEve ntListener("mouseout", function() {
element.style.backgro undColor = "white";
});
解説
addEventListener
メソッドを使用して、要素にイベントリスナーを登録します。mouseover
イベントが発生したときに、element.style.backgroundColor = "yellow"
で背景色を黄色に変更します。
document.getElementById("myElement")
で、IDが"myElement"の要素を取得します。
例2: チェックボックスがチェックされたときにラベルの色を変更する
const checkbox = document.getElementById("myCheckbox");
const label = document.getElementById("myLabel");
checkbox.addEventListener("change ", function() {
if (checkbox.checked) {
label.style.color = "green";
} else {
label.style.color = "black";
}
});
addEventListener
メソッドを使用して、チェックボックスにイベントリスナーを登録します。change
イベントが発生したときに、チェックボックスがチェックされているかどうかを判定します。- チェックされている場合は、ラベルの色を緑に変更します。
document.getElementById("myCheckbox")
で、IDが"myCheckbox"のチェックボックスを取得します。
例3: フォーカスされた入力フィールドのボーダー色を変更する
const input = document.getElementById("myInput");
input.addEventListener("focus", function() {
input.style.borderColor = "blue";
});
input.addEventListener("blur", function() {
input.style.borderColor = "gray";
});
addEventListener
メソッドを使用して、入力フィールドにイベントリスナーを登録します。focus
イベントが発生したときに、入力フィールドのボーダー色を青に変更します。
CSSのクラス名を切り替える
JavaScriptで要素のクラス名を切り替えることで、CSSの擬似クラスルールを適用することができます。
const element = document.getElementById("myElement");
element.classList.add("hover"); // :hover擬似クラスのスタイルを適用
element.classList.remove("hover"); // :hover擬似クラスのスタイルを解除
CSSの属性セレクタを使用する
JavaScriptで要素の属性値を変更し、CSSの属性セレクタを使用して擬似クラスルールを適用することができます。
const element = document.getElementById("myElement");
element.setAttribute("data-hover", "true"); // :hover擬似クラスのスタイルを適用
element.removeAttribute("data-hover"); // :hover擬似クラスのスタイルを解除
CSSのカスタムプロパティを使用する
JavaScriptでCSSのカスタムプロパティを設定し、CSSの擬似クラスルールでカスタムプロパティを参照することができます。
const element = document.getElementById("myElement");
element.style.setProperty("--hover-color", "yellow"); // :hover擬似クラスのスタイルを適用
element.style.setProperty("--hover-color", "transparent"); // :hover擬似クラスのスタイルを解除
CSSのメディアクエリを使用する
JavaScriptでブラウザのウィンドウサイズやデバイスの種類を検出し、CSSのメディアクエリを使用して擬似クラスルールを適用することができます。
const element = document.getElementById("myElement");
if (window.innerWidth < 768) {
element.classList.add("mobile"); // モバイルデバイス用のスタイルを適用
} else {
element.classList.remove("mobile");
}
.container {
container-type: inline-size;
}
.container:has(.element:hover) {
background-color: yellow;
}
javascript css pseudo-class