[解決済み] cssファイルをオンザフライで置き換える(そして新しいスタイルをページに適用する)。
2023-05-04 22:40:32
質問
私は、あるページで
<link>
という名前の CSS を読み込むヘッダがあります。
light.css
. という名前のファイルも持っています。
dark.css
. 私は、ページのスタイルをすべて一緒に交換するボタンが必要です(CSSファイルで使用されている40のセレクタがあり、いくつかは2つのファイルで一致しません)。
への参照を削除するにはどうすればよいですか?
light.css
への参照を JS で取り除き、適用されているスタイルをすべて削除してから
dark.css
を読み込んで、そこからすべてのスタイルを適用するのですか?スタイルの一部は異なるcssファイルを通して適用され、一部はJSによって動的に生成されるため、私は単純にすべての要素をリセットすることはできません。ページを再読み込みすることなく、それを行うための簡単で効果的な方法はありますか?バニラJSが望ましいですが、私はとにかく後の処理にjQueryを使用するので、jQも大丈夫です。
どのように解決するのですか?
新しいリンクを作成し、古いリンクを新しいリンクに置き換えることができます。 関数に入れれば、必要な場所で再利用することができます。
ジャバスクリプトが
function changeCSS(cssFile, cssLinkIndex) {
var oldlink = document.getElementsByTagName("link").item(cssLinkIndex);
var newlink = document.createElement("link");
newlink.setAttribute("rel", "stylesheet");
newlink.setAttribute("type", "text/css");
newlink.setAttribute("href", cssFile);
document.getElementsByTagName("head").item(cssLinkIndex).replaceChild(newlink, oldlink);
}
HTMLのことです。
<html>
<head>
<title>Changing CSS</title>
<link rel="stylesheet" type="text/css" href="positive.css"/>
</head>
<body>
<a href="#" onclick="changeCSS('positive.css', 0);">STYLE 1</a>
<a href="#" onclick="changeCSS('negative.css', 0);">STYLE 2</a>
</body>
</html>
簡単のために、インラインのjavascriptを使用しました。 実運用では、控えめなイベントリスナーを使用したいと思うでしょう。
関連
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] セレクトボックスのオプションをすべて削除してから、オプションを1つ追加して、jQueryで選択するにはどうすればよいですか?
-
[解決済み] CSSは常にJavascriptより優先されるべきか?
-
[解決済み] CSSの爆発を管理する
-
[解決済み] ユーザーエージェントスタイルシートとは何ですか?
-
[解決済み] なぜブラウザはCSSセレクタを右から左へマッチングさせるのですか?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
最新
-
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を使用してHTML要素に属性を追加/更新するには?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?