【JS基礎-3】CSSはJSに書くな!「classList」でクラスを付け外しする方法

前回、ボタンをクリックして「背景色を変える」ことに成功しました。
その時、こんなコードを書きましたね。

element.style.backgroundColor = "red";

これでも動きますが、もし「文字色も変えて、枠線もつけて、フォントも大きくしたい」となったらどうでしょう?
JSの中にCSSの命令がズラズラ並んでしまい、読みづらくて仕方がありません。

そこで、プロが使うスマートな方法を紹介します。
「classList(クラスリスト)」を使って、あらかじめ用意したCSSクラスをペタッと貼る方法です。

イメージは「着せ替え人形」

直接 `style` を書き換えるのは、人形の体に直接絵の具を塗るようなものです(後で消すのが大変!)。

対して `classList` は、「赤い服」や「青い服」をあらかじめ用意しておいて、それを着せたり脱がせたりするイメージです。

3つの基本コマンド

使うのは以下の3つだけです。

コマンド 意味 使い道
classList.add(“クラス名”) クラスをつける 「正解!」の時に赤くする、など
classList.remove(“クラス名”) クラスを外す リセットボタンを押した時、など
classList.toggle(“クラス名”) つけ外しする
(スイッチ)
メニューの開閉、ダークモード切替

特に toggle(トグル) は最強です。
「ついていれば外す、外れていればつける」を自動で判断してくれるので、IF文を書く必要すらありません。

実践:1秒で作る「ダークモード」スイッチ

では、最近流行りのダークモード切り替えボタンを作ってみましょう。
JSのコードが驚くほど短くなることに注目してください。

<!DOCTYPE html>
<html lang="ja">
<head>
    <style>
        /* ベースのスタイル(ライトモード) */
        body {
            background-color: white;
            color: black;
            transition: 0.5s; /* ふわっと切り替える */
            padding: 20px;
        }

        /* ダークモード用のクラス(着せ替え用の服) */
        .dark-theme {
            background-color: #333;
            color: white;
        }

        /* ボタンのデザイン */
        button {
            padding: 10px 20px;
            font-size: 16px;
            cursor: pointer;
        }
    </style>
</head>
<body>

    <h1>ダークモードのテスト</h1>
    <p>ボタンを押すと、画面の色が反転します。</p>
    <button id="toggle-btn">モード切り替え</button>

    <script>
        const btn = document.querySelector("#toggle-btn");

        // ボタンが押されたら...
        btn.addEventListener("click", function() {
            
            // bodyタグに「dark-theme」クラスをつけ外しする!
            document.body.classList.toggle("dark-theme");
            
        });
    </script>

</body>
</html>

解説:役割分担ができている

このコードの素晴らしい点は、「デザイン(CSS)」と「動き(JS)」が完全に分かれていることです。

  • CSSの役割: 「ダークモードになったら黒くする」という見た目を定義。
  • JSの役割: 「クリックされたらクラスを付け替える」というスイッチ操作だけ担当。

これなら、後で「ダークモードの色を紺色にしたい」と思っても、CSSだけ書き換えればOKですよね。
これがメンテナンスしやすいコードの秘訣です。

【応用】ハンバーガーメニューも同じ仕組み

Web制作で必ず出てくる「スマホ用のメニューが開く動き」。
実はこれも、toggle を使って作られています。

  1. CSSで、.open というクラスがついたら「メニューを画面内にスライドさせる」と書いておく。
  2. JSで、ハンバーガーボタンが押されたら、メニューに classList.toggle("open") をする。

たったこれだけです。
「動くサイト」の正体は、実は単純な「クラスの付け替え」だったのです。

まとめ

  • スタイルを直接いじらず、クラス操作を使おう。
  • つけるなら add、外すなら remove
  • スイッチ機能なら toggle が最強!

これで「見た目をガラッと変える機能」が作れるようになりました。
次回は、入力フォームに入れた文字を受け取って計算する「フォーム操作」に挑戦しましょう!

📝 今日のミニテスト

クリックで答え合わせ!

Q1. 要素にクラス「active」を追加する正しいコードは?

正解:element.classList.add("active")
クラス名の前のドット(.)は不要です! add(".active") と書かないように注意しましょう。

Q2. クラスがついているか自動判定して、ON/OFFを切り替えるメソッドは?

正解:toggle(トグル)
これを使えば、「if文でクラスがあるかチェックして…」という処理を書かなくて済みます。

Q3. 実践問題:ID=”box” の要素から、クラス “hidden” を削除するコードを書いてください。
const box = document.querySelector("#box");
box.classList.①( ② );

// 答え
// ① remove
// ② "hidden"
タイトルとURLをコピーしました