【JS&CSS】ボタンを押したらメッセージを表示する方法4選

ボタンクリック(タップ)でメッセージを表示する4つの方法を紹介します。

ダイアログボックス(アラート)

OKボタン付きのダイアログボックスを表示。

アコーディオン

ボタン下にメッセージを表示。
もう一度ボタンをクリックすると消える。

モーダルウィンドウ

ボタンをクリックすると画面が暗くなり、画面中央にメッセージを表示。暗い部分をクリックすると元の画面に戻る。

ポップアップメッセージ

ボタンをクリックすると、画面下からフワッとメッセージが表示される。メッセージは3秒後に消える。

目次

【ボタン1】ダイアログボックス(アラート)を表示する

JavaScriptの標準機能であるalert()関数を使うことで、指定したテキストとOKボタンをもつダイアログボックスを表示します。4つの中ではもっとも簡単に実装できます。

ダイアログボックス alert() confirm() prompt() について

JavaScriptでは、alert(表示させたい内容) と記述することで、画面上部にダイアログを表示できます。表示する内容が文字列の場合、''(シングルクォート)または ""(ダブルクォート)で囲むことを忘れないようにしましょう。

// 変数を使って "Hello" を表示するダイアログボックス
const text = "Hello";  // 変数にメッセージを代入
alert(text);  // 変数の値を表示

// 直接 "Hello" を表示するダイアログボックス
alert('Hello');  // 文字列を直接渡す
メリット

手軽に実装できる

デメリット

デザインをカスタマイズできない

使用シーン

簡単な通知(例:エラー表示)

またalert() のほかに、以下の2つのダイアログボックスを表示する関数があります。

confirm()

ユーザーに「OK」または「キャンセル」を選択させる

prompt()

ユーザーがテキストを入力できる

詳しくは以下記事で、実装例やコードを公開しているで、本記事と合わせてご覧ください。

HTML / CSS / JavaScript コード

<div class="btn-container">
  <button id="btn1">ボタン1</button>
</div>
.btn-container {
  text-align: center;
}

button {
  width: 80%;
  height: 50px;
  font-size: 18px;
  font-weight: bold;

  /* ボタンにカーソルを当てると、カーソルがポインターに変わる */
  cursor: pointer;
}

/* ボタンにカーソルを当てたとき、ボタンを半透明にする */
button:hover {
 opacity: 0.7;
}
const btn1 = document.getElementById('btn1');

btn1.addEventListener('click', () => {
  alert('ボタン1がクリックされました!');
});

【ボタン2】ボタン下にメッセージを表示する(アコーディオン or インページ通知)

ボタン下にあらかじめテキストを配置しておき、ボタンのクリックで表示・非表示を切り替えます。この方法を応用し、もっと見るボタンやFAQなどでよく見られる『アコーディオンメニュー』を作ることも可能です。

アコーディオン(インページ通知)の仕組み

  1. HTML にすべての表示内容を記述し、最初は非表示にしたい要素に適切なclassidを付与する。
  2. CSS で、指定したclassiddisplay: none;を適用し、初期状態では非表示にする。
  3. JavaScript を使用し、クリックイベントが発生したときに、該当のclassidを追加・削除して表示を切り替える。
メリット

ユーザーがクリックページ内のスペースを節約できる

デメリット

ユーザーがクリックしないと見えない

使用シーン

FAQページや詳細説明の表示


「もっと見る」「よくある質問(FAQ)」などのUIの実装方法は、以下記事で公開しています。

HTML / CSS / JavaScript コード

<div class="btn-container">
  <button id="btn2">ボタン2</button>

  <!-- クリックで表示させるテキストにはhiddenクラスを付ける -->
  <p id="btn2-text" class="hidden">ボタン2がクリックされました!</p>
</div>
.btn-container {
  text-align: center;
}

button {
  width: 80%;
  height: 50px;
  font-size: 18px;
  font-weight: bold;

  /* ボタンにカーソルを当てると、カーソルがポインターに変わる */
  cursor: pointer;
}

/* ボタンにカーソルを当てたとき、ボタンを半透明にする */
button:hover {
 opacity: 0.7;
}

/* クリックで表示させるテキストを隠す */
.hidden {
  display: none;
}

#btn2-text{
  margin: 16px 0;
  font-size: 14px;
  color: red;
}
const btn2 = document.getElementById('btn2');
const btn2Text = document.getElementById('btn2-text');

btn2.addEventListener('click', () => {
  // ボタンクリックでhiddenクラスを付け外しする
  btn2Text.classList.toggle('hidden');
});

【ボタン3】画面中央にメッセージを表示する(モーダルウィンドウ)

ボタンに加え、画面を暗くするためのマスクとメッセージウィンドウを用意しておき、ボタンのクリックでそれらを表示します。一般に『モーダルウィンドウ』と呼ばれる方法です。

モーダルウィンドウの仕組み

  1. HTML に、画面全体を覆う「マスク」と、メッセージを表示する「ウィンドウ」の2つの要素を用意し、それぞれに適切な classid を付与する。
  2. CSS で、display: none; を適用し、初期状態では非表示にする。
  3. JavaScript を使用し、特定のボタンがクリックされたときに classid を切り替え、モーダルウィンドウを開閉できるようにする。
メリット

ユーザーの注意を引ける

デメリット

実装がやや複雑

使用シーン

重要な確認メッセージ(例:削除確認)

HTML / CSS / JavaScript コード

<div class="btn-container">
  <button id="btn3">ボタン3</button>
</div>
<div id="mask" class="hidden"></div>
<section id="modal" class="hidden">
  <p>ボタン3がクリックされました!</p>
</section>
  • 画面を暗くする#maskとメッセージウィンドウである#modalを記述しておき、それぞれにクラス属性hiddenを付けておく。
.btn-container {
  text-align: center;
}

button {
  width: 80%;
  height: 50px;
  font-size: 18px;
  font-weight: bold;

  /* ボタンにカーソルを当てると、カーソルがポインターに変わる */
  cursor: pointer;
}

/* ボタンにカーソルを当てたとき、ボタンを半透明にする */
button:hover {
 opacity: 0.7;
}

.hidden {
  display: none;
}

#mask {
  background: rgba(0, 0, 0, 0.7);
  position: fixed;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  z-index: 1;
}

#modal {
  background: #fff;
  width: 50%;
  padding: 24px;
  border-radius: 4px;
  color: red;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  margin: 0 auto;
  z-index: 2;
}
  • #maskposition: fixed;とし、 top bottom right leftをすべて0にすると、マスクの領域(暗い部分)が画面全体に広がる。
  • #modalposition: fixed;とし、表示位置をtop right leftで画面中央にくるよう調整。
    また、z-indexを一番大きい値(ここでは2)とすることで、メッセージウィンドウが画面の前面にくるようになる。
const btn3 = document.getElementById('btn3');
const mask = document.getElementById('mask');
const modal = document.getElementById('modal');

btn3.addEventListener('click', () => {
  mask.classList.remove('hidden');
  modal.classList.remove('hidden');
});

mask.addEventListener('click', () => {
  mask.classList.add('hidden');
  modal.classList.add('hidden');
});
  • ボタンをクリックすると、マスクとメッセージウィンドウからhiddenクラスが外れて画面に表示される。
  • マスク部分(暗い部分)をクリックすると、逆にマスクとメッセージウィンドウにhiddenクラスが追加され、非表示になる。

【ボタン4】画面下からフワッとメッセージを表示する(ポップアップメッセージ)

画面下にあらかじめメッセージボックスを配置しておき、ボタンクリックでメッセージボックスをフワッと表示します。

ポップアップメッセージの仕組み

ポップアップ表示のような複雑なアニメーションには、CSSプロパティの@keyframesを使います。キーフレーム毎に適用したいCSSプロパティを指定することで、連続したアニメーションを設定できます。

メリット

スタイリッシュで動きがある

デメリット

一定時間後に消えるので見逃す可能性あり

使用シーン

送信成功メッセージや小さな通知

HTML / CSS / JavaScript コード

<div class="btn-container">
  <button id="btn4">ボタン4</button>
</div>
<p id="btn4-text" class="hidden">ボタン4がクリックされました!</p>
.btn-container {
  text-align: center;
}

button {
  width: 80%;
  height: 50px;
  font-size: 18px;
  font-weight: bold;

  /* ボタンにカーソルを当てると、カーソルがポインターに変わる */
  cursor: pointer;
}

/* ボタンにカーソルを当てたとき、ボタンを半透明にする */
button:hover {
 opacity: 0.7;
}

/* ポップアップメッセージを隠す */
.hidden {
  display: none;
}

/* ポップアップメッセージを画面右下に配置 */
#btn4-text {
  height: 72px;
  padding: 8px 16px;
  border-radius: 8px;
  background: #ddd;
  font-weight: bold;
  text-align: center;
  line-height: 72px;
  position: fixed;
  right: 5%;
  bottom: 10%;
}

/* ポップアップアニメーションを3秒かけて実行 */
.popup-message {
  animation: popup 3s forwards;
}

@keyframes popup {
  0% {
    transform: translateY(15%);
    opacity: 0;
  }
  10%, 90% {
    transform: none;
    opacity: 1;
  }
  100% {
    transform: translateY(15%);
    opacity: 0;
    pointer-events: none;
  }
}
  • @keyframesでpopupというアニメーションを設定。
    • 最初(0%)はtransform: translateY(15%);で画面下側に配置しておく。
    • transform: none;で元の位置に戻してしばらくそのまま(10〜90%)。
    • 最後(100%)は再びtransform: translateY(15%);で画面下側に戻す。
      • opacityも設定しておくことで、下からフワッと出て再びフワッと下に消えるようなアニメーションになる。
  • JavaScriptで、このアニメーションを設定したクラス(popup-message)をボタンクリックで付け外しする。
const btn4Text = document.getElementById('btn4-text');
const btn4 = document.getElementById('btn4');

btn4.addEventListener('click', () => {
  btn4Text.classList.remove('hidden');
  btn4Text.classList.add('popup-message');
});

btn4Text.addEventListener('animationend', () => {
  btn4Text.classList.remove('popup-message');
  btn4Text.classList.add('hidden');
});

まとめ

以上、ボタンをクリックすることでメッセージを表示させる具体的な方法を4つ紹介しました。

表示方法特徴適したシチュエーション
ダイアログボックスシンプル・手軽に実装可能簡単な通知
アコーディオンスペースを取らないFAQページ
モーダル画面に集中させる重要な確認メッセージ
ポップアップ一時的な通知成功メッセージ など

本記事ではメッセージ(文字列)を出したり消したりする実装でしたが、同じ方法で画像などの要素にも対応できます。また、どの方法も用途に応じて使い分けるのがポイントです。ぜひ、ご自身のWebサイトに合った方法を試してみてください!

【おまけ】ボタンを立体的にする方法

思わずクリックしたくなるような、ちょっとしたアニメーション付きのボタンをCSSで実装できます。

コードは以下記事で公開していますので、本記事と合わせてご覧ください。


当サイトで公開しているWebデザインやUIの実装例は、一覧として以下記事に纏めています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次