[初心者シリーズ]ホバーで変わるボタンの作り方

CSS、JavaScript
4,368 文字 約 11 分で読めます

Webサイトでよく見かける「ホバーするとボタンが反応して動く」あの演出。
実は、ほんの数行のCSSだけで実装できることをご存じですか?
今回は初心者シリーズとして、色が変わる・影が増える・拡大するといった基本的なマイクロインタラクションの作り方を紹介します。

マイクロインタラクションとは

マイクロインタラクションとは、ユーザーの操作に対して起こる小さなアニメーションや変化のことを指します。
たとえばボタンをホバーしたときにふわっと浮き上がったり、クリックしたときに反応したりといった動きが代表的です。
このような小さな動きがあるだけで、サイト全体の印象がぐっと洗練され、操作の心地よさが生まれます。

サンプルコード紹介

色が変わるボタン

See the Pen 110801 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

<a href="#" class="color-btn">色が変わる</a>
.color-btn {
  background-color: #0078ff;
  color: #fff;
  padding: 14px 28px;
  border-radius: 8px;
  text-decoration: none;

  /* ▼ transition(トランジション)
     背景色が変わるときのスピードや動きを指定します。
     書き方:transition: プロパティ名 変化時間 イージング;
       - background-color:色の変化だけにアニメーションを適用
       - 0.25s:0.25秒かけて変化(数値を大きくするとゆっくり)
       - ease:自然な加速と減速をつけて“ふわっ”とした動きに
     例:
       ・もっとゆっくり変えたい → 0.25s → 0.8s に変更
       ・キビキビ動かしたい → ease → linear に変更
  */
  transition: background-color 0.25s ease;
}

/* ▼ マウスを乗せたとき
   背景色が自然に切り替わります。
   「transition」により、パッと変わるのではなく“ふんわり”と色が変化します。
*/
.color-btn:hover {
  background-color: #ff6b6b; /* ← 色を変える場所。好みのカラーコードに変更可能 */
}

この「ふわっと色が変わる」効果は、
視覚的にやさしく、ボタンを押す前の反応を自然に伝えるマイクロインタラクションの基本です。

たとえば、「0.25s」を「1s」にするとゆったりと変化し、
「ease-in-out」にすると最初と最後がよりなめらかになります。
CSSだけで雰囲気をコントロールできる点を伝えると、初心者の興味を引きやすいです。


影が増えるボタン

See the Pen 110802 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

<a href="#" class="shadow-btn">影が増える</a>
.shadow-btn {
  background-color: #4caf50;
  color: #fff;
  padding: 14px 28px;
  border-radius: 8px;
  text-decoration: none;

  /* ▼ 通常状態の影
     box-shadow: 横のずれ 縦のずれ ぼかし具合 色;
     数値を大きくすると影が広がり、小さくすると引き締まります。
     rgba(0,0,0,0.2) の「0.2」は透明度(0~1)で、影の濃さを調整できます。
  */
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);

  /* ▼ transition(トランジション)
     プロパティが変化するときのスピードや動きを設定します。
     box-shadow だけにアニメーションを適用。
     「0.25s」は変化時間、「ease」は自然な加速と減速。
     例:
       - ゆっくりにしたい → 0.5s や 1s に変更
       - 一定速度で動かしたい → ease → linear に変更
  */
  transition: box-shadow 0.25s ease;
}

/* ▼ ホバー時の影(マウスを乗せたとき)
   影を大きく・濃くして、ふんわり浮いたような印象に。
   数値を変えると、浮き上がり具合を調整できます。
*/
.shadow-btn:hover {
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}

transition の対象を「box-shadow」に限定しているので、色やサイズなど他のプロパティには影響しません。
複数に適用したいときは、下記のようにカンマ区切りで追加できます。

transition: box-shadow 0.3s ease, background-color 0.3s ease;

拡大するボタン

See the Pen 110803 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

<a href="#" class="scale-btn">拡大する</a>
.scale-btn {
  background-color: #ff9800;
  color: #fff;
  padding: 14px 28px;
  border-radius: 8px;
  text-decoration: none;

  /* ▼ transition(トランジション)
     transform(変形)プロパティに対して、変化のスピードや動きを指定。
     書き方:transition: 対象プロパティ 時間 イージング;
       - transform:拡大・回転・移動などのアニメーション対象
       - 0.25s:0.25秒で動作(数値を増やすとゆっくり)
       - ease:自然に始まり自然に終わる動き
     例:
       ・もっとゆっくり大きくしたい → 0.25s → 0.8s に変更
       ・カクッと拡大したい → ease → linear に変更
  */
  transition: transform 0.25s ease;
}

/* ▼ マウスを乗せたとき
   ボタンを少し大きくして、押せる雰囲気を演出します。
   scale(1.5):元のサイズの1.5倍に拡大
     - 1.0 → 等倍(変化なし)
     - 1.2 → 少し大きく
     - 1.5 → はっきりと大きく
   数値を変えて、ちょうどいい感覚を探してみましょう。
*/
.scale-btn:hover {
  transform: scale(1.5);
}

このエフェクトは、ユーザーがボタンにカーソルを乗せた瞬間に「反応してくれた」と感じられる動きです。
数字を変えるだけで印象が大きく変わるので、scale(1.1) のように少しだけ大きくする方が自然に感じる場面もあります。

また、transformrotate()(回転)や translateY()(上下移動)などにも応用できます。
この部分を理解しておくと、次のステップでより自由なマイクロインタラクションが作れるようになります。

すべてを組み合わせたボタン

See the Pen 110804 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.

<a href="#" class="combo-btn">全部入りボタン</a>
.combo-btn {
  background-color: #673ab7;
  color: #fff;
  padding: 14px 32px;
  border-radius: 8px;
  text-decoration: none;
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);
  transition: 
    background-color 0.25s ease,
    transform 0.25s ease,
    box-shadow 0.25s ease;
}
.combo-btn:hover {
  background-color: #e91e63;
  transform: scale(1.5);
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.4);
}

色の変化、影の増加、そして拡大の3つの効果をまとめて実装したバージョンです。
単体でも十分ですが、これらを組み合わせることでより魅力的で、視覚的にも反応が心地よいボタンになります。

まとめ

マイクロインタラクションは、サイト全体の雰囲気を変えるほどの大きな要素ではありませんが、ユーザーの体験をさりげなく向上させる重要な技術です。特別なスクリプトを使わなくても、CSSだけで簡単に導入できるのが魅力です。今回紹介したようなホバー効果をきっかけに、少しずつ動きを加えていくことで、自分のサイトがより親しみやすく、使っていて気持ちの良いものに仕上がります。

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