CSSのhoverで動きをつける方法【初心者向け】

CSS :hoverの使い方を初心者向けに解説。色変化・拡大・影・下線などの動きをtransitionと組み合わせてコード例で紹介。ボタンやリンクに動きをつけよう。中高生向け。無料。

2026年4月16日

:hoverとは?ボタンに動きをつけたいあなたへ

「ボタンにマウスを乗せたときに色を変えたい」「カードをホバーしたら浮き上がるようにしたい」——Webサイトを作っていると、こんな動きをつけたくなりますよね。

CSSの :hover(ホバー) を使えば、JavaScriptなしでマウスを乗せたときの変化を作れます。この記事では、:hoverの基本から滑らかなアニメーションの作り方、スマホ対応の注意点まで解説します。

読み終わるころには、ボタン・カード・ナビゲーションなど、よく使うUIパーツにプロっぽい動きをつけられるようになります。

:hoverの基本構文

:hover擬似クラス(ぎじクラス) の一つで、「マウスが要素の上にある状態」にスタイルを当てます。

セレクター:hover {
  /* マウスが乗ったときのスタイル */
}

すべてのHTML要素に使えます(ボタン、リンク、div、画像など何でもOK)。

:hoverと:focus、:activeの違い

擬似クラスいつ適用されるか用途
:hoverマウスが乗っているとき視覚的フィードバック
:focusキーボードやタップでフォーカスされたときアクセシビリティ
:activeクリック中(押している間)押した感触

アクセシビリティのために、:hover で変化をつけるときは :focus にも同じスタイルを当てるのがベストプラクティスです。

タッチデバイスでの:hover問題

スマホやタブレットにはマウスがないため、:hover の挙動が不安定です。タップすると:hoverが「固定」されてしまうことがあります。

/* マウスがあるデバイスだけhoverを適用 */
@media (hover: hover) {
  .btn:hover {
    background-color: #0f766e;
  }
}

@media (hover: hover) を使うと、マウスがあるデバイスだけにhoverスタイルを適用できます。詳しくはCSSメディアクエリの使い方を参照してください。

実践コード例①:ボタンの色変化 + transition

hoverだけだと変化が一瞬で起きてカクカクします。transition を組み合わせると滑らかになります。

.btn {
  background-color: #0d9488;
  color: white;
  padding: 12px 24px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: background-color 0.3s ease, transform 0.3s ease;
}

.btn:hover,
.btn:focus {
  background-color: #0f766e;
  transform: scale(1.05);
}

.btn:active {
  transform: scale(0.97);
}

ポイントは3つです。

  • transition は通常状態(:hoverなし)に書く
  • :hover:focus を両方指定してアクセシビリティ対応
  • :active で押した感触を追加

transitionの詳しい使い方はCSSトランジション入門で解説しています。

実践コード例②:カードホバーで画像が拡大するエフェクト

.card {
  border-radius: 12px;
  overflow: hidden; /* はみ出た画像を隠す */
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}

.card:hover {
  box-shadow: 0 8px 24px rgba(0,0,0,0.15);
  transform: translateY(-4px);
}

.card img {
  width: 100%;
  transition: transform 0.3s ease;
}

.card:hover img {
  transform: scale(1.08); /* 画像だけ拡大 */
}

overflow: hidden をカードに指定しておくと、拡大した画像がはみ出ません。影の変化についてはbox-shadowで影をつける方法も参考にしてください。

実践コード例③:ナビゲーションのドロップダウンメニュー

/* HTML構造:
<nav>
  <ul class="nav-list">
    <li class="nav-item">
      メニュー ▼
      <ul class="dropdown">
        <li><a href="#">サブ項目1</a></li>
        <li><a href="#">サブ項目2</a></li>
      </ul>
    </li>
  </ul>
</nav>
*/

.dropdown {
  display: none;
  position: absolute;
  background: white;
  box-shadow: 0 4px 16px rgba(0,0,0,0.1);
  border-radius: 8px;
  padding: 8px 0;
}

.nav-item:hover .dropdown {
  display: block; /* ホバーで表示 */
}

ドロップダウンは:hoverの代表的な使い方です。ただし、キーボード操作にも対応するために:focus-withinも追加するとより良いです。

.nav-item:hover .dropdown,
.nav-item:focus-within .dropdown {
  display: block;
}

よくある間違い・注意点

❌ transitionを付け忘れてカクカクする

/* NG: transitionがないと一瞬で変わる */
.btn:hover {
  background-color: #0f766e;
}

/* OK: transitionを通常状態に書く */
.btn {
  transition: background-color 0.3s ease;
}
.btn:hover {
  background-color: #0f766e;
}

❌ :hoverだけで重要な情報を隠す

「ホバーしないと見えない情報」はスマホユーザーやキーボードユーザーがアクセスできません。重要な情報は常に表示し、:hoverは「追加の視覚的フィードバック」として使いましょう。

❌ スマホで:hoverが固定される

前述の @media (hover: hover) で対策するか、:hoverのスタイルが固定されても問題ないデザインにしましょう。

擬似クラス全般について詳しく知りたい場合はCSS擬似クラス完全解説を読んでみてください。

ブラウザ対応状況

:hover はすべてのブラウザで対応しています。@media (hover: hover) もChrome・Safari・Firefox・Edgeの全モダンブラウザで使えます。

hoverを使うときの注意点

スマホやタブレットにはマウスカーソルがありません。そのため、タッチデバイスではhoverの効果が見えないことがあります。hoverだけに頼ったデザインは避けましょう。大事な情報はhoverなしでも見えるようにしておくことが大切です。

また、キーボードで操作する人のために、hoverと一緒にfocusも指定しておくと親切です。focusはTabキーで要素を選んだときに適用されます。hoverとfocusに同じスタイルを当てておけば、マウスでもキーボードでも同じ見た目になります。

まとめ

  • :hover はマウスが乗ったときにスタイルを変える擬似クラス
  • transition と必ずセットで使い、滑らかな変化にする
  • :focus も一緒に指定してアクセシビリティを確保する
  • ✅ スマホには:hoverがない → @media (hover: hover) で対策
  • ✅ :hoverだけに頼って重要な情報を隠さない

:hoverはユーザーに「この要素は操作できるよ」と伝える重要なフィードバックです。CSSの基礎を復習したい場合はCSSとは?初心者向け解説に戻って確認しましょう。色の指定方法はCSSで色を指定する方法を参照してください。

関連記事

✨ ホバーエフェクトをリアルタイムで試してみよう!

duration・timing-function・delayをスライダーで変えながら、ホバー前後の動きの違いを即座に確認できる無料ツールです。

CSS Transition ビジュアライザー →

🎯 次のステップ

:hoverを使いこなしたら、transitionで滑らかなアニメーションを作ろう!

CSSトランジション入門へ →
目次

コースで実際に手を動かして学ぼう

レッスンではコードを書きながら基礎が身につきます

HTMLコースを始める →

この記事に出てくる用語

📣 この記事が役に立ったら

Xでシェア

💬 引用する場合はこちらをご利用ください:

CSS :hoverの使い方を初心者向けに解説。色変化・拡大・影・下線などの動きをtransitionと組み合わせてコード例で紹介。ボタンやリンクに動きをつけよう。中高生向け。無料。

出典: https://start-web-programming.com/blog/css-hover/