PR

【コピペOK】セレクトボックスで背景色を変えるJavaScriptの実装

【広告】

セレクトボックスは、選択肢の中から1つを選べる入力欄です。
選んだ色に合わせて、ページの背景色が変わります。
JavaScriptの基本的なコードを使えば、この操作を簡単に実装できます。

まずは実際に動かしてみましょう!

下のセレクトボックスから色を選ぶと、上のエリアの背景色が変わります。

背景色チェンジ

コードを書いてみよう

HTMLで骨組みを作り、CSSでデザインを整え、JavaScriptで動きを実装していきましょう。

HTMLの構成

<body>
  <div class="container">
    <div id="changeColorArea" class="changeColorArea">
      <p>背景色チェンジ</p>
    </div>

    <div class="colorSelectArea">
      <label for="colorSelect">背景色を選択:</label>

      <select id="colorSelect">
        <option value="" disabled selected>
          --好きな色を選んでください--
        </option>
        <option value="red">赤</option>
        <option value="blue">青</option>
        <option value="green">緑</option>
        <option value="yellow">黄色</option>
        <option value="purple">紫</option>
        <option value="orange">オレンジ</option>
        <option value="pink">ピンク</option>
        <option value="black">黒</option>
        <option value="white">白</option>
      </select>
    </div>
  </div>
  <script src="app.js"></script>
</body>
  • #changeColorArea (div) 色を反映させる対象。
  • #colorSelect (select) 色の値を取得する入力パーツ。
  • app.js (script) 操作を実行するプログラムの読み込み。

CSSの構成

.container {
  width: 90%;
  margin: 20px auto 0;
  padding: 20px;
  border: 1px solid #999;
  background-color: #fffff0;
}
.changeColorArea {
  width: 100%;
  height: 200px;
  border: 1px solid #999;
  margin-bottom: 20px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background-color: white;
}
.changeColorArea p {
  font-size: 1.5em;
  padding: 10px 20px;
  margin: 0;
  background: white;
  border: 1px solid #ccc;
  box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.3);
}
.colorSelectArea label {
  display: block;
  margin-bottom: 10px;
  font-size: 1.2em;
}
.colorSelectArea select {
  width: 100%;
  font-size: 1.1em;
  padding: 6px;
}

@media (min-width: 576px) {
  .container {
    width: 576px;
  }
}
  • .container:全体のレイアウト
  • .changeColorArea:背景色が変わるエリア(Flexboxで中央揃え)
  • @media:スマホ・PCのレスポンシブ対応

JavaScriptの構成

// 背景色を変更するエリアを取得
const changeColorArea = document.querySelector('#changeColorArea');

// セレクトボックスを取得
const colorSelect = document.querySelector('#colorSelect');

// セレクトボックスの値が変更されたら、背景色を変更
colorSelect.addEventListener('change', function () {
  changeColorArea.style.backgroundColor = colorSelect.value;
});

1. 背景色を変更するエリアを取得

const changeColorArea = document.querySelector('#changeColorArea');

背景色を変える対象の要素(#changeColorArea)を、document.querySelector で探して取得しています。
取得した要素は、後で操作しやすいように const(定数)に入れておきます。

2. セレクトボックスを取得

const colorSelect = document.querySelector('#colorSelect');

操作のきっかけとなるセレクトボックス(#colorSelect)を取得します。
この変数(colorSelect)を通して、ユーザーが今どの色を選んでいるかを確認できるようになります。

3. セレクトボックスの値が変更されたら

colorSelect.addEventListener('change', function () { ... });

セレクトボックスで選択が変わった瞬間に、特定の処理を実行させる仕組み(イベントリスナー)です。
'change' というキーワードを指定することで、「値が切り替わったとき」という条件を設定しています。

4. 背景色を変更

changeColorArea.style.backgroundColor = colorSelect.value;

セレクトボックスで選ばれた値(colorSelect.value)を、エリアの背景色に代入しています。
この一行が実行されることで、CSSの background-color が書き換わり、画面の色が即座に切り替わります。

基本の組み合わせ次第で、文字の色やサイズなども同じ仕組みで変更できます。ぜひ応用してみてください。

タイトルとURLをコピーしました