【6日でできるJavaScript入門】スタイルの変更

 Webページをより魅力的に・インタラクティブにするためには、JavaScriptで要素のCSS(スタイル)を動的に変更することが不可欠です。
 たとえば、ボタンを押して文字サイズを変えたり、画像にマウスを乗せて色を変えたりすることで、ユーザー体験を向上させることができます。

JavaScriptでは、styleプロパティを通じて様々なCSSの値を変更できます。
 ここでは、「スタイル変更の基礎」「プロパティ名の書き方」「具体例」「イベントと連携」まで、表やサンプルとともに解説します。

概要内容例
styleプロパティ要素のCSSを書き換える
キャメルケース表記font-size → fontSizeなど
イベント連携ボタン・マウス操作でスタイル変更
thisの利用複数要素の一括的な書式制御

1.JavaScriptによるスタイル変更の基本

JavaScriptでは、HTML要素のstyleプロパティを使って、個別にCSSの値を変更できます。

目的書き方の例
文字色を変える要素.style.color = '#FF0000';
文字サイズ変更要素.style.fontSize = '18px';
背景色変更要素.style.backgroundColor = '#CCFFCC';

1.1. キャメルケースによるCSSプロパティ名

JavaScriptでCSSプロパティ名を指定するときは、キャメルケース(小文字+大文字)で書きます。

CSSプロパティJavaScriptでの書き方
font-sizefontSize
background-colorbackgroundColor
border-radiusborderRadius
text-aligntextAlign

2.サンプル:文字サイズと背景色の切り替え

2.1. 例:「文字の大きさ」と「背景色」を変更する

ファイル名: lesson20-1.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>🎨 スタイルの変更デモ</title>
  <style>
    #content {
      margin: 20px auto;
      padding: 15px;
      width: 450px;
      background-color: #f8f8ff;
      font-size: 16px;
      border-radius: 8px;
      transition: all 0.4s;
    }
  </style>
</head>
<body>
  <h1>🎨 スタイルの変更デモ</h1>
  <button onclick="changeSmall()">小さく</button>
  <button onclick="changeMedium()">標準</button>
  <button onclick="changeLarge()">大きく</button>
  <button onclick="changeBg()">背景色変更</button>
  <div id="content">
    <p>この文章のスタイルを変更してみましょう。ボタンを押すと文字サイズや背景色が変わります。</p>
  </div>
  <script>
    const content = document.getElementById('content');
    function changeSmall() {
      content.style.fontSize = '13px';
      content.style.color = '#2d5a7e';
    }
    function changeMedium() {
      content.style.fontSize = '16px';
      content.style.color = '#222222';
    }
    function changeLarge() {
      content.style.fontSize = '22px';
      content.style.color = '#b84a00';
    }
    function changeBg() {
      // 背景色をランダムに変更
      const colors = ['#f8f8ff', '#ffe4b5', '#e0f7fa', '#fff0f5'];
      content.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];
    }
  </script>
</body>
</html>

ブラウザの出力例

出力例(例:ボタンを押したとき)

  • 「大きく」→ 文字が大きく・色がオレンジ系に
  • 「背景色変更」→ 背景色がランダムに変化

タグと構文解説

タグ・構文解説
<div id="content">...</div>操作対象となる要素。JavaScriptで取得しやすい
.style.プロパティstyle属性を通してCSS値を設定
transition: all 0.4s;CSSでアニメ風のなめらかな変化を実現
onclick="関数名()"ボタンクリック時に関数実行

3.複数要素のスタイル変化:画像ギャラリーに応用

3.1. 例:「画像にマウスを乗せたとき」だけ鮮明に

素材のダウンロード

以下のリンクから使用する素材をダウンロードできます。

pic01.pngpic02.pngpic03.png

ファイル名: lesson20-2.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>🖼️ 画像ギャラリー・スタイル操作</title>
  <style>
    #gallery {
      display: flex;
      gap: 8px;
      background-color: #222;
      padding: 10px;
    }
    #gallery img {
      opacity: 0.5;
      border: solid 2px #ccc;
      border-radius: 8px;
      width: 240px;
      transition: all 0.3s;
    }
  </style>
</head>
<body>
  <h1>🖼️ 画像ギャラリー・スタイル操作</h1>
  <div id="gallery">
    <img src="pic01.png" alt="写真1" onmouseover="hoverImg(this)" onmouseout="leaveImg(this)">
    <img src="pic02.png" alt="写真2" onmouseover="hoverImg(this)" onmouseout="leaveImg(this)">
    <img src="pic03.png" alt="写真3" onmouseover="hoverImg(this)" onmouseout="leaveImg(this)">
  </div>
  <p>画像にマウスを乗せると明るく・枠色が変わります。</p>
  <script>
    function hoverImg(obj) {
      obj.style.opacity = 1.0;
      obj.style.border = 'solid 2px #ffb300';
    }
    function leaveImg(obj) {
      obj.style.opacity = 0.5;
      obj.style.border = 'solid 2px #ccc';
    }
  </script>
</body>
</html>

ブラウザの出力例

出力例

  • 画像にマウスを乗せると、くっきり&オレンジ枠になる
  • マウスを外すと、半透明&グレー枠に戻る

構文のポイント

構文解説
onmouseover="..."マウスが画像上に来たときのイベント
thisイベント発生元(ここではimg要素自身)
.style.プロパティその要素だけのCSSを書き換える

4.CSSの値を取得する場合

  • JavaScriptで取得できるのは「要素のstyle属性で直接指定されている値」のみです。
  • <style>や外部CSSの値を取得したい場合は、getComputedStyle()を使う必要があります(ここでは基礎のみに留めます)。

まとめ

  • JavaScriptでのスタイル変更は、要素.style.プロパティで実現します。
  • CSSのプロパティ名はキャメルケース(例:fontSize, backgroundColor)で指定。
  • ボタンやマウスイベントと組み合わせて、文字サイズ・色・背景・画像の効果を自在に変化できる。
  • thisや引数を活用すると、複数要素もシンプルに制御できる。

 スタイルの動的な変更はWeb体験を大きく広げる力です。小さな効果から試し、少しずつ応用範囲を広げていきましょう!