JavaScriptで新しいCSSルールを動的に挿入する方法
JavaScriptで新しいCSSルールを挿入するには?
JavaScriptから動的にスタイルを追加したい場合、sheetオブジェクトのinsertRule()メソッドを使用すると簡単に実現できます。
基本的な流れは以下の2ステップです。
- document.createElement("style")でスタイル要素を作成し、document.head.appendChild()を使ってドキュメントのheadに追加します。
- 作成したスタイル要素のsheetプロパティに対してinsertRule()を呼び出し、新しいCSSルールを挿入します。
サンプルコード
以下が実際のコード例です。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<body>
<div id="demo">
This is a JavaScript program
</div>
</body>
<script>
var creatingStyle = document.createElement("style");
document.head.appendChild(creatingStyle);
creatingStyle.sheet.insertRule(`#demo{
background-color: red;
}`);
</script>
</html>
この例では、idが「demo」のdiv要素に対して背景色を赤にするCSSルールを、JavaScriptから動的に挿入しています。
プログラムの実行方法
上記のプログラムを実行するには、ファイル名を「index.html」などの任意の名前で保存します。次に、VSCodeエディタでそのファイルを右クリックし、「Open with Live Server」を選択してください。
出力結果
実行すると、以下のように出力されます。

補足:insertRule()の応用ポイント
- insertRule()は第2引数にインデックス番号を指定できるため、ルールを挿入する位置を細かく制御できます。
- 挿入済みのルールを削除したい場合は、同じくsheetオブジェクトのdeleteRule()メソッドを使用します。
- テンプレートリテラル(バッククォート)を使うことで、複数行にわたるCSSルールも読みやすく記述できます。
-
JavaScriptで文字列を改行する方法
JavaScriptで文字列に改行を挿入するには? JavaScriptで文字列を改行して表示したい場合は、HTMLの <br> タグを使用します。文字列同士を + 演算子で連結し、その間に <br> を挟むことで、ブラウザ上で改行された状態で表示されます。 サンプルコード 以下は、innerHTML プロパティと <br> タグを組み合わせて、見出し内のテキストを2行に分けて表示するコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta
-
【JavaScript】ドキュメント全体のHTMLを文字列として取得する方法を解説
Webページのソースコード全体を取得して処理したい場面は、デバッグや動的なコンテンツ操作など、JavaScript開発では意外と多くあります。この記事では、ドキュメント全体のHTMLを文字列として取得する方法を、具体的なコード例とともにわかりやすく解説します。 innerHTMLプロパティを使った取得方法 ドキュメント全体のHTMLを文字列として取得するには、document.documentElementのinnerHTMLプロパティを利用します。 document.documentElement.innerHTML; document.documentElementはHTML文書のルート要