【JavaScript / DOM】要素ノードのスタイル - ブラウザ上の見た目をプログラムから変更する
JavaScript/DOMのスタイルについて解説します。
検証環境
要素ノードのスタイル
要素ノードはスタイルを表すstyleプロパティを持ちます。
このプロパティを使用して、スタイルの取得や設定が可能です。
スタイル一覧
スタイル一覧はstyleプロパティに格納されます。
基本構文
要素ノード.style
サンプル
<h1 id="title" style="color: red; font-size: 2.5rem;">JavaScriptとは</h1>
<script type="text/javascript">
let node = document.getElementById("title");
___ih_hl_start
console.log(node.style);
___ih_hl_end
for( let p of node.style ) {
console.log(p);
}
</script>
CSSStyleDeclaration {0: 'color', 1: 'font-size', …}
color
font-size
styleプロパティはインラインスタイル(style属性値)のみ格納します。
そのため、style要素や外部スタイルシートの適用スタイルプロパティは含まれません。
全てのスタイルプロパティを取得するgetComputedStyleメソッドは後述で解説します。
各スタイルの取得
各スタイルはstyleプロパティ経由で取得します。
基本構文
要素ノード.style["スタイルプロパティ名"]
//または
要素ノード.style.スタイルプロパティ名
サンプル
<h1 id="title" style="color: red; font-size: 2.5rem;">JavaScriptとは</h1>
<script type="text/javascript">
let node = document.getElementById("title");
___ih_hl_start
console.log(node.style['font-size']);
console.log(node.style.color);
___ih_hl_end
</script>
2.5rem
red
6行目はブランケット記法、7行目はドット記法でアクセスしています。
どちらでもスタイルプロパティ値を取得できますが、font-size
のようにハイフン(-
)などのプロパティ名に使用不可な文字を含む場合はブランケット記法で記述します。
各スタイルの設定
各スタイルはstyleプロパティ経由で設定します。
基本構文
要素ノード.style["スタイルプロパティ名"] = 値
//または
要素ノード.style.スタイルプロパティ名 = 値
サンプル
<h1 id="title" style="color: red; font-size: 2.5rem;">JavaScriptとは</h1>
<script type="text/javascript">
let node = document.getElementById("title");
___ih_hl_start
node.style['font-size'] = "1.0rem";
node.style.color = "blue";
___ih_hl_end
console.log(node.style['font-size']);
console.log(node.style.color);
</script>
1rem
blue
各スタイルの取得と同様にプロパティ名に使用不可な文字を含む場合はブランケット記法で記述します。
各スタイルの初期化
各スタイルの初期化はスタイルプロパティの値をnullに設定します。
<h1 id="title" style="color: red; font-size: 2.5rem;">JavaScriptとは</h1>
<script type="text/javascript">
let node = document.getElementById("title");
___ih_hl_start
node.style['font-size'] = null;
node.style.color = null;
___ih_hl_end
console.log(node.style['font-size']);
console.log(node.style.color);
</script>
全スタイルプロパティ
上記で説明した通り、styelプロパティはインラインスタイルのみの値です。
そのため、style要素や外部スタイルシートで適用したスタイルプロパティは含みません。
<style>
h1 {
color: red;
}
</style>
<h1 id="title" style="font-size: 2.5rem;">JavaScriptとは</h1>
<script type="text/javascript">
let node = document.getElementById("title");
console.log(node.style);
console.log(node.style.color);
</script>
CSSStyleDeclaration {0: 'font-size', …}
このコードではstyle
要素でh1
要素のカラーをred
に設定していますが、実行結果からstyleプロパティに含まれないことが分かります。
style要素や外部スタイルシート等の全てのスタイルを取得するには、window
オブジェクトのgetComputedStyle
メソッドを使用します。
<style>
h1 {
color: red;
}
</style>
<h1 id="title" style="font-size: 2.5rem;">JavaScriptとは</h1>
<script type="text/javascript">
let node = document.getElementById("title");
let style = window.getComputedStyle(node);
console.log(style);
console.log(style.color);
</script>
CSSStyleDeclaration {0: 'accent-color', 1: 'align-content', 2: 'align-items' …}
rgb(255, 0, 0)
color
の値を関数表記で取得できました。
なお、window
オブジェクトはウィンドウ(タブ)を表わすオブジェクトです。
ブラウザ実行のJavaScriptで自動で生成され、画面上に表示するオブジェクトの最上位オブジェクトになります。