基礎から学ぶJavaScript入門 90日コース | Webページを操作するDOM - Day 35:イベント処理

JavaScript 90日で身につけるJavaScript
スポンサーリンク
スポンサーリンク
  1. Day 35:イベント処理(前半)
  2. イベント処理の考え方をシンプルに整理する
    1. イベントとは何か
    2. addEventListener()とは何か
  3. clickイベントにフォーカスする
    1. clickイベントとは
  4. 実践①:ボタンクリックでメッセージを変更する基本例
    1. 目標イメージ
    2. HTML+JavaScriptコード例(最もシンプルな形)
    3. このコードで押さえておきたいポイント
  5. 実践②:クリック回数に応じてメッセージを変える
    1. 目標イメージ
    2. HTML+JavaScriptコード例(カウンター付き)
    3. 重要なポイントの深掘り
  6. 実践③:ボタンクリックでCSSクラス+メッセージを同時に変える
    1. 目標イメージ
    2. HTML+CSS+JavaScriptコード例(イベント+CSS+メッセージ)
    3. ここで意識してほしいこと
  7. Day 35 前半 練習用テンプレート
  8. Day 35 前半のまとめ
  9. Day 35:イベント処理(後半)
  10. イベント処理の基本構造を“3ステップ”で捉える
    1. イベント処理の3ステップ
  11. addEventListener()を“設計の道具”として見る
    1. 基本形の再確認
  12. 実践①:ボタンクリックでメッセージを“段階的に”変える
    1. シナリオを先に言葉で書いてみる
    2. コード例:2段階でメッセージを変える
    3. 深掘りポイント
  13. 実践②:ボタンクリックで“ON/OFFメッセージ”を切り替える
    1. シナリオを言葉で整理する
    2. コード例:ON/OFF切り替えメッセージ
    3. 深掘りポイント
  14. 実践③:イベント処理+CSS+メッセージの“ミニアプリ”
    1. シナリオ
    2. コード例:ダークモード+メッセージ切り替えミニアプリ
    3. 深掘りポイント
  15. Day 35 後半 練習用テンプレート
  16. Day 35 後半のまとめ

Day 35:イベント処理(前半)

「addEventListenerで“ユーザーの行動”に反応するページを作る」

Day 35前半では、Webページを「ただ表示するだけ」から一歩進めて、 ユーザーの操作(クリック)に反応するページを作ることを目標にします。

キーワードは、

  • addEventListener()
  • click イベント

そして実践テーマは、

  • ボタンクリック
  • メッセージ変更

です。

イベント処理の考え方をシンプルに整理する

イベントとは何か

Webページ上では、ユーザーがさまざまな「行動」をします。

  • ボタンをクリックする
  • マウスを動かす
  • キーボードを押す
  • 画面をスクロールする

これらの「行動」が、JavaScriptの世界では イベント と呼ばれます。

イベント処理とは、

「あるイベントが起きたときに、指定した処理を実行する」

という仕組みです。

addEventListener()とは何か

addEventListener() は、

「この要素で、指定した種類のイベントが起きたときに、この処理を実行してね」

とブラウザに登録するためのメソッドです。

基本形は次のようになります。

要素.addEventListener('イベントの種類', 実行したい処理);
JavaScript

例えば、

buttonElement.addEventListener('click', function () {
  console.log('ボタンがクリックされました');
});
JavaScript

というコードは、

buttonElement がクリックされたら、この無名関数の中身を実行する」

という意味になります。

clickイベントにフォーカスする

clickイベントとは

click は、 「ユーザーが要素をクリックしたとき」に発生するイベントです。

  • ボタン
  • リンク
  • 画像
  • その他の要素

などに対して、click イベントを設定することができます。

初心者の方にとっては、

「まずはボタンにclickイベントを付ける」

ところから始めるのが、一番分かりやすいです。

実践①:ボタンクリックでメッセージを変更する基本例

目標イメージ

  • 最初は「まだボタンは押されていません」というメッセージ。
  • ボタンを押すと「ボタンが押されました!」というメッセージに変わる。

HTML+JavaScriptコード例(最もシンプルな形)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 前半:ボタンクリックでメッセージ変更</title>
</head>
<body>
  <h1>ボタンクリックでメッセージを変更する例</h1>

  <!-- メッセージ表示エリア -->
  <p id="message">まだボタンは押されていません。</p>

  <!-- ボタン -->
  <button id="changeButton">ここをクリック</button>

  <script>
    // ▼ メッセージを表示する<p>要素を取得します
    const messageElement = document.getElementById('message');

    // ▼ ボタン要素を取得します
    const changeButtonElement = document.getElementById('changeButton');

    // ▼ ボタンがクリックされたときの処理を登録します
    changeButtonElement.addEventListener('click', function () {
      // メッセージを変更します
      messageElement.textContent = 'ボタンが押されました!';

      // コンソールにもログを出しておきます(開発者向けの確認用)
      console.log('ボタンがクリックされました。メッセージを変更しました。');
    });
  </script>
</body>
</html>

このコードで押さえておきたいポイント

  1. 要素を取得する
    • getElementById('message') でメッセージ表示用の <p> を取得しています。
    • getElementById('changeButton') でボタンを取得しています。
  2. addEventListenerでclickイベントを登録する
    • changeButtonElement.addEventListener('click', function () { ... });
    • 「クリックされたときに、この関数の中身を実行する」という意味です。
  3. イベントが起きたときに何をするかを関数の中に書く
    • messageElement.textContent = 'ボタンが押されました!';
    • ここが「イベントに反応して行う処理」です。

実践②:クリック回数に応じてメッセージを変える

目標イメージ

  • 最初は「まだボタンは押されていません」。
  • 1回目 → 「ボタンが1回押されました」。
  • 2回目 → 「ボタンが2回押されました」。
  • 3回目以降も、回数に応じてメッセージが変わる。

HTML+JavaScriptコード例(カウンター付き)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 前半:クリック回数でメッセージ変更</title>
</head>
<body>
  <h1>クリック回数に応じてメッセージを変更する例</h1>

  <!-- メッセージ表示エリア -->
  <p id="countMessage">まだボタンは押されていません。</p>

  <!-- ボタン -->
  <button id="countButton">ボタンを押す</button>

  <script>
    // ▼ メッセージ表示用の<p>要素を取得します
    const countMessageElement = document.getElementById('countMessage');

    // ▼ ボタン要素を取得します
    const countButtonElement = document.getElementById('countButton');

    // ▼ ボタンが何回押されたかを記録する変数
    let count = 0;

    // ▼ ボタンがクリックされたときの処理
    countButtonElement.addEventListener('click', function () {
      // カウントを1増やします
      count = count + 1;

      // 現在の回数に応じてメッセージを変更します
      if (count === 1) {
        countMessageElement.textContent = 'ボタンが1回押されました。';
      } else {
        countMessageElement.textContent = `ボタンが${count}回押されました。`;
      }

      // コンソールにも現在の回数を表示します
      console.log('ボタンが押されました。現在の回数:', count);
    });
  </script>
</body>
</html>

重要なポイントの深掘り

  • let count = 0; → 「状態」を表す変数です。イベントが起きるたびに変化します。
  • countButtonElement.addEventListener('click', function () { ... }); → イベントが起きるたびに、この関数が呼ばれます。
  • count = count + 1; → 「前の状態に1を足す」という形で、状態を更新しています。

イベント処理では、

「イベントが起きるたびに、状態を更新し、その状態に応じて画面を変える」

という流れが非常に重要です。

実践③:ボタンクリックでCSSクラス+メッセージを同時に変える

Day 34で学んだ classList と組み合わせると、 「メッセージ」と「見た目」を同時に変えることができます。

目標イメージ

  • 最初は「ライトモードです」というメッセージ。
  • ボタンを押すと「ダークモードです」に変わり、背景も暗くなる。
  • もう一度押すと、元に戻る。

HTML+CSS+JavaScriptコード例(イベント+CSS+メッセージ)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 前半:クリックでダークモード+メッセージ変更</title>
  <style>
    /* 通常モード */
    body {
      background-color: #ffffff;
      color: #000000;
      font-family: sans-serif;
      transition: background-color 0.3s, color 0.3s;
    }

    /* ダークモード */
    body.dark-mode {
      background-color: #121212;
      color: #f0f0f0;
    }

    #toggleButton {
      margin-top: 16px;
      padding: 8px 16px;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <h1>イベント処理+CSS+メッセージ変更</h1>

  <!-- メッセージ表示エリア -->
  <p id="modeMessage">現在はライトモードです。</p>

  <!-- ボタン -->
  <button id="toggleButton">ダークモードに切り替える</button>

  <script>
    // ▼ body要素を取得します(背景色を変えるため)
    const bodyElement = document.body;

    // ▼ メッセージ表示用の<p>要素を取得します
    const modeMessageElement = document.getElementById('modeMessage');

    // ▼ ボタン要素を取得します
    const toggleButtonElement = document.getElementById('toggleButton');

    // ▼ ボタンがクリックされたときの処理
    toggleButtonElement.addEventListener('click', function () {
      // dark-modeクラスをON/OFF切り替えます
      bodyElement.classList.toggle('dark-mode');

      // 現在ダークモードかどうかを判定します
      const isDarkMode = bodyElement.classList.contains('dark-mode');

      // 状態に応じてメッセージとボタンのラベルを変更します
      if (isDarkMode) {
        modeMessageElement.textContent = '現在はダークモードです。';
        toggleButtonElement.textContent = 'ライトモードに戻す';
        console.log('ダークモードを有効にしました。');
      } else {
        modeMessageElement.textContent = '現在はライトモードです。';
        toggleButtonElement.textContent = 'ダークモードに切り替える';
        console.log('ダークモードを解除しました。');
      }
    });
  </script>
</body>
</html>

ここで意識してほしいこと

  • イベント(click)が「状態の切り替え」のきっかけになっていること。
  • 状態(ダークモードかどうか)に応じて、
    • CSSクラス(dark-mode
    • メッセージ(modeMessageElement.textContent
    • ボタンラベル(toggleButtonElement.textContent) を同時に変えていること。

イベント処理は、

「ユーザーの行動をトリガーにして、状態とUIを更新する」

という仕組みだと捉えると、理解しやすくなります。

Day 35 前半 練習用テンプレート

最後に、ボタンクリックとメッセージ変更をまとめて練習できる テンプレートを紹介します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 前半:イベント処理 練習テンプレート</title>
</head>
<body>
  <h1>Day 35 前半:イベント処理 練習</h1>

  <!-- セクション1:シンプルなメッセージ変更 -->
  <section>
    <h2>シンプルなボタンクリック</h2>
    <p id="simpleMessage">まだボタンは押されていません。</p>
    <button id="simpleButton">ここをクリック</button>
  </section>

  <!-- セクション2:クリック回数に応じたメッセージ -->
  <section>
    <h2>クリック回数でメッセージ変更</h2>
    <p id="countMessage">まだボタンは押されていません。</p>
    <button id="countButton">ボタンを押す</button>
  </section>

  <script>
    console.log('--- イベント処理 練習開始 ---');

    // ▼ セクション1:シンプルなメッセージ変更
    const simpleMessageElement = document.getElementById('simpleMessage');
    const simpleButtonElement = document.getElementById('simpleButton');

    simpleButtonElement.addEventListener('click', function () {
      simpleMessageElement.textContent = 'ボタンが押されました!';
      console.log('シンプルボタンがクリックされました。');
    });

    // ▼ セクション2:クリック回数に応じたメッセージ変更
    const countMessageElement = document.getElementById('countMessage');
    const countButtonElement = document.getElementById('countButton');
    let count = 0;

    countButtonElement.addEventListener('click', function () {
      count = count + 1;

      if (count === 1) {
        countMessageElement.textContent = 'ボタンが1回押されました。';
      } else {
        countMessageElement.textContent = `ボタンが${count}回押されました。`;
      }

      console.log('カウントボタンがクリックされました。現在の回数:', count);
    });

    console.log('--- イベント処理 練習テンプレートの準備が完了しました ---');
  </script>
</body>
</html>

Day 35 前半のまとめ

Day 35前半では、

  • イベントとは「ユーザーの行動」であり、 addEventListener() で「その行動が起きたときの処理」を登録することを学んだこと。
  • click イベントを使って、ボタンクリックに反応する基本的なコードを書いたこと。
  • 状態(クリック回数やモード)を変数で管理し、 その状態に応じてメッセージを変更する流れを体験したこと。
  • イベント処理が「ユーザーの行動 → 状態更新 → UI更新」という流れで動いていることを理解したこと。

を整理しました。

この「イベント+状態+UI」の組み合わせは、 今後のフォーム処理、ゲーム、インタラクティブなアプリケーションなど、 あらゆる場面で登場する基礎パターンです。

今日のコードを何度か書き直しながら、

「どのイベントに、どんな処理を紐づけるか」

を意識して練習していくことで、 JavaScriptで「動くWebページ」を作る感覚が、ぐっと掴みやすくなっていきます。


Day 35:イベント処理(後半)

「addEventListenerとclickで“気持ちよく動くボタン”を設計する」

Day 35後半では、前半で触れた addEventListener()click を、 もう一歩踏み込んで「設計の目線」で整理していきます。

単に「動くコードを書く」だけでなく、

  • どの要素に
  • どのイベントを
  • どんな処理として

結びつけるかを、ステップで考えられるようになることを目標にします。

イベント処理の基本構造を“3ステップ”で捉える

イベント処理の3ステップ

イベント処理は、次の3ステップで考えると整理しやすくなります。

  1. 対象要素を決めて取得する
    • どのボタン・どのテキストを操作したいか
  2. どのイベントに反応するか決める
    • 今回は click
  3. イベントが起きたときに何をするか決める
    • メッセージ変更、CSS変更など

この3つを順番に決めていくと、 「なんとなく書くJavaScript」から「設計されたJavaScript」に変わっていきます。

addEventListener()を“設計の道具”として見る

基本形の再確認

addEventListener() の基本形は次の通りです。

要素.addEventListener('イベントの種類', 実行したい処理);
JavaScript

例えばボタンなら、

buttonElement.addEventListener('click', function () {
  // ここにクリックされたときの処理を書く
});
JavaScript

ここで大事なのは、

  • 「どの要素か」 → buttonElement
  • 「どのイベントか」 → 'click'
  • 「何をするか」 → function () { ... } の中身

という3つを、意識的に分けて考えることです。

実践①:ボタンクリックでメッセージを“段階的に”変える

シナリオを先に言葉で書いてみる

まず、コードを書く前に「やりたいこと」を日本語で整理します。

  • ページを開いたときは「まだボタンは押されていません」と表示する。
  • ボタンを押したら「ボタンが押されました!」に変える。
  • もう一度押したら「もう一度押されました!」に変える。

このように、 「状態の変化」 を言葉で書いてからコードに落とすと、 迷いが減ります。

コード例:2段階でメッセージを変える

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 後半:段階的なメッセージ変更</title>
</head>
<body>
  <h1>ボタンクリックで段階的にメッセージを変更する例</h1>

  <!-- メッセージ表示エリア -->
  <p id="stepMessage">まだボタンは押されていません。</p>

  <!-- ボタン -->
  <button id="stepButton">ボタンを押す</button>

  <script>
    // ▼ メッセージ表示用の<p>要素を取得します
    const stepMessageElement = document.getElementById('stepMessage');

    // ▼ ボタン要素を取得します
    const stepButtonElement = document.getElementById('stepButton');

    // ▼ 現在の「段階」を表す変数(0:未クリック, 1:1回目, 2:2回目以降)
    let step = 0;

    // ▼ ボタンがクリックされたときの処理
    stepButtonElement.addEventListener('click', function () {
      // 段階を1つ進めます
      step = step + 1;

      // 段階に応じてメッセージを変更します
      if (step === 1) {
        stepMessageElement.textContent = 'ボタンが押されました!';
      } else if (step === 2) {
        stepMessageElement.textContent = 'もう一度押されました!';
      } else {
        stepMessageElement.textContent = `ボタンが合計${step}回押されています。`;
      }

      console.log('ボタンがクリックされました。現在の段階:', step);
    });
  </script>
</body>
</html>

深掘りポイント

  • let step = 0; → 「状態」を変数で持つことがイベント処理の基本です。
  • step = step + 1; → イベントが起きるたびに状態が変化します。
  • if / else if / else → 状態に応じてUI(メッセージ)を変えるロジックです。

イベント処理は、

「イベント → 状態更新 → UI更新」

という流れで考えると、整理しやすくなります。

実践②:ボタンクリックで“ON/OFFメッセージ”を切り替える

シナリオを言葉で整理する

  • 最初は「OFFです」と表示する。
  • ボタンを押すと「ONです」に変わる。
  • もう一度押すと「OFFです」に戻る。

これは、 「真偽値(true / false)で状態を持つ」 練習として最適です。

コード例:ON/OFF切り替えメッセージ

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 後半:ON/OFFメッセージ切り替え</title>
</head>
<body>
  <h1>ON/OFFメッセージ切り替え</h1>

  <!-- メッセージ表示エリア -->
  <p id="switchMessage">現在はOFFです。</p>

  <!-- ボタン -->
  <button id="switchButton">ONにする</button>

  <script>
    // ▼ メッセージ表示用の<p>要素を取得します
    const switchMessageElement = document.getElementById('switchMessage');

    // ▼ ボタン要素を取得します
    const switchButtonElement = document.getElementById('switchButton');

    // ▼ 現在ONかOFFかを表す真偽値(false:OFF, true:ON)
    let isOn = false;

    // ▼ ボタンがクリックされたときの処理
    switchButtonElement.addEventListener('click', function () {
      // 状態を反転させます(false→true, true→false)
      isOn = !isOn;

      // 状態に応じてメッセージとボタンのラベルを変更します
      if (isOn) {
        switchMessageElement.textContent = '現在はONです。';
        switchButtonElement.textContent = 'OFFにする';
      } else {
        switchMessageElement.textContent = '現在はOFFです。';
        switchButtonElement.textContent = 'ONにする';
      }

      console.log('スイッチボタンがクリックされました。現在の状態:', isOn ? 'ON' : 'OFF');
    });
  </script>
</body>
</html>

深掘りポイント

  • let isOn = false; → 真偽値で状態を持つと、ON/OFFのような2値の切り替えが分かりやすくなります。
  • isOn = !isOn;! は「反転」を意味し、falsetruetruefalse に切り替えます。
  • メッセージとボタンラベルを同時に変えることで、 「状態に応じてUI全体を更新する」感覚が身につきます。

実践③:イベント処理+CSS+メッセージの“ミニアプリ”

Day 34で学んだ classList と、Day 35の addEventListener を組み合わせて、 「ボタンクリックで見た目とメッセージを同時に変える」ミニアプリを作ってみます。

シナリオ

  • 最初はライトモードで「ライトモードです」と表示。
  • ボタンを押すとダークモードになり、「ダークモードです」と表示。
  • もう一度押すとライトモードに戻る。

コード例:ダークモード+メッセージ切り替えミニアプリ

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 後半:イベント+CSS+メッセージ ミニアプリ</title>
  <style>
    /* ライトモード */
    body {
      background-color: #ffffff;
      color: #000000;
      font-family: sans-serif;
      transition: background-color 0.3s, color 0.3s;
    }

    /* ダークモード */
    body.dark-mode {
      background-color: #121212;
      color: #f0f0f0;
    }

    #modeToggleButton {
      margin-top: 16px;
      padding: 8px 16px;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <h1>ダークモード切り替えミニアプリ</h1>

  <!-- メッセージ表示エリア -->
  <p id="modeMessage">現在はライトモードです。</p>

  <!-- ボタン -->
  <button id="modeToggleButton">ダークモードに切り替える</button>

  <script>
    // ▼ body要素を取得します(背景色を変えるため)
    const bodyElement = document.body;

    // ▼ メッセージ表示用の<p>要素を取得します
    const modeMessageElement = document.getElementById('modeMessage');

    // ▼ ボタン要素を取得します
    const modeToggleButtonElement = document.getElementById('modeToggleButton');

    // ▼ ボタンがクリックされたときの処理
    modeToggleButtonElement.addEventListener('click', function () {
      // dark-modeクラスをON/OFF切り替えます
      bodyElement.classList.toggle('dark-mode');

      // 現在ダークモードかどうかを判定します
      const isDarkMode = bodyElement.classList.contains('dark-mode');

      // 状態に応じてメッセージとボタンのラベルを変更します
      if (isDarkMode) {
        modeMessageElement.textContent = '現在はダークモードです。';
        modeToggleButtonElement.textContent = 'ライトモードに戻す';
      } else {
        modeMessageElement.textContent = '現在はライトモードです。';
        modeToggleButtonElement.textContent = 'ダークモードに切り替える';
      }

      console.log('モード切り替えボタンがクリックされました。現在のモード:', isDarkMode ? 'ダーク' : 'ライト');
    });
  </script>
</body>
</html>

深掘りポイント

  • イベント(click)が「状態切り替え」のトリガーになっていること。
  • 状態(ダークかライトか)に応じて、
    • CSSクラス(dark-mode
    • メッセージ(modeMessageElement.textContent
    • ボタンラベル(modeToggleButtonElement.textContent) を同時に更新していること。

ここまで来ると、

「イベント処理は、ユーザーの行動をきっかけに状態とUIを更新する仕組み」

だと、かなりはっきり見えてくるはずです。

Day 35 後半 練習用テンプレート

最後に、今日の内容をまとめて練習できるテンプレートを紹介します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Day 35 後半:イベント処理 総合練習テンプレート</title>
  <style>
    body {
      font-family: sans-serif;
    }
    section {
      margin-bottom: 24px;
    }
  </style>
</head>
<body>
  <h1>Day 35 後半:イベント処理 総合練習</h1>

  <!-- セクション1:段階的メッセージ変更 -->
  <section>
    <h2>段階的メッセージ変更</h2>
    <p id="stepMessage">まだボタンは押されていません。</p>
    <button id="stepButton">ボタンを押す</button>
  </section>

  <!-- セクション2:ON/OFF切り替え -->
  <section>
    <h2>ON/OFFメッセージ切り替え</h2>
    <p id="switchMessage">現在はOFFです。</p>
    <button id="switchButton">ONにする</button>
  </section>

  <script>
    console.log('--- イベント処理 総合練習開始 ---');

    // ▼ セクション1:段階的メッセージ変更
    const stepMessageElement = document.getElementById('stepMessage');
    const stepButtonElement = document.getElementById('stepButton');
    let step = 0;

    stepButtonElement.addEventListener('click', function () {
      step = step + 1;

      if (step === 1) {
        stepMessageElement.textContent = 'ボタンが押されました!';
      } else if (step === 2) {
        stepMessageElement.textContent = 'もう一度押されました!';
      } else {
        stepMessageElement.textContent = `ボタンが合計${step}回押されています。`;
      }

      console.log('段階的メッセージ:現在の段階', step);
    });

    // ▼ セクション2:ON/OFFメッセージ切り替え
    const switchMessageElement = document.getElementById('switchMessage');
    const switchButtonElement = document.getElementById('switchButton');
    let isOn = false;

    switchButtonElement.addEventListener('click', function () {
      isOn = !isOn;

      if (isOn) {
        switchMessageElement.textContent = '現在はONです。';
        switchButtonElement.textContent = 'OFFにする';
      } else {
        switchMessageElement.textContent = '現在はOFFです。';
        switchButtonElement.textContent = 'ONにする';
      }

      console.log('ON/OFFメッセージ:現在の状態', isOn ? 'ON' : 'OFF');
    });

    console.log('--- イベント処理 総合練習テンプレートの準備が完了しました ---');
  </script>
</body>
</html>

Day 35 後半のまとめ

Day 35後半では、

  • イベント処理を「要素取得 → イベント選択 → 処理定義」の3ステップで考える視点を持ったこと。
  • addEventListener('click', ...) を、単なる文法ではなく「設計の道具」として捉え直したこと。
  • 段階的なメッセージ変更、ON/OFF切り替え、ダークモード+メッセージのミニアプリを通して、 「イベント → 状態更新 → UI更新」という流れを体験したこと。

この感覚が身につくと、 ボタンだけでなく、フォーム入力、スクロール、キーボード操作など、 さまざまなイベントを使ったインタラクティブなページ作りに、自然と踏み出せるようになります。

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