JavaScriptでCSS :root の色変数を変更する方法
2023-08-03 18:59:36
質問
さて、私は、ユーザーがテーマを変更できるようにするウェブページのシステムを作成しています。どのようにこれを達成したいかというと、すべての色を変数として持ち、色は CSS の :root 部分に設定されます。
私がしたいことは、JavaScriptを介してこれらの色を変更することです。それを行う方法を調べましたが、私が試したものは何も実際に適切に動作しませんでした。以下は、私の現在のコードです。
CSSです。
:root {
--main-color: #317EEB;
--hover-color: #2764BA;
--body-color: #E0E0E0;
--box-color: white;
}
JSです。
(テーマを設定するコード、ボタンをクリックすると実行されます) - ダークテーマでは動作しないので、他の2つのテーマにはわざわざ :root の変更を追加しませんでした。
function setTheme(theme) {
if (theme == 'Dark') {
localStorage.setItem('panelTheme', theme);
$('#current-theme').text(theme);
$(':root').css('--main-color', '#000000');
}
if (theme == 'Blue') {
localStorage.setItem('panelTheme', 'Blue');
$('#current-theme').text('Blue');
alert("Blue");
}
if (theme == 'Green') {
localStorage.setItem('panelTheme', 'Green');
$('#current-theme').text('Green');
alert("Green");
}
}
(htmlが読み込まれた時に実行されるコード)
function loadTheme() {
//Add this to body onload, gets the current theme. If panelTheme is empty, defaults to blue.
if (localStorage.getItem('panelTheme') == '') {
setTheme('Blue');
} else {
setTheme(localStorage.getItem('panelTheme'));
$('#current-theme').text(localStorage.getItem('panelTheme'));
}
}
アラートは表示されますが、実際には何も変更されません。どなたか正しい方向を示していただけませんか?
どのように解決するのですか?
リンクを提供してくださった@pvgさん、ありがとうございました。何が起こっているのか理解するために少しじっと見ていましたが、やっとわかりました。
私が探していた魔法のセリフはこれでした。
document.documentElement.style.setProperty('--your-variable', '#YOURCOLOR');
まさに私がやりたかったことをやってくれました!ありがとうございます。
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行