商品一覧やブログの記事一覧で、画像にマウスを乗せた時に少し動きがあると、「クリックできる」ことが伝わりやすくなります。
この記事では、コピペするだけで使える画像のホバーエフェクトを20個まとめました。
定番の拡大から、暗くなって文字が出る、白黒からカラーへ、下からキャプション、光が走る効果まで、場面ごとに使い分けられる種類を用意しています。
どれもHTMLとCSSだけで動くので、JavaScriptは必要ありません。
これまでの記事と同じく、HTMLとCSSを分けて掲載しています。
ホバーって何のこと?
マウスのカーソルを上に乗せることだよ。サンプルは画像のかわりに色の四角で作っているから、マウスを乗せて動きを試してみてね。
使い方|HTMLとCSSをそれぞれ貼り付ける
CSSのコードを、サイトのスタイルシートに追加します。続いて、HTMLのコードを、画像を表示したい場所に貼り付けます。
サンプルは色のグラデーションで画像のかわりをしています。実際に使う時は、CSSの「〇〇-img」のbackgroundを、background: url(画像のURL) center / cover; に書き換え、HTMLの中の絵文字を消してください。
キャプションの文字は「〇〇-cap」の中を書き換えます。
01. ふわっと拡大
マウスを乗せると画像がゆっくり大きくなる、もっとも定番の効果です。
実際の見た目
HTMLコード
<div class="kts-hover01">
<div class="kts-hover01-img">🌿</div>
</div>
CSSコード
.kts-hover01 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover01-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #34D399, #3B82F6); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover01-img { transition: transform .5s; }
.kts-hover01:hover .kts-hover01-img { transform: scale(1.1); }
02. 暗くなって文字が出る
画像が暗くなり、中央に文字が浮かび上がる効果です。
実際の見た目
HTMLコード
<div class="kts-hover02">
<div class="kts-hover02-img">🌿</div>
<div class="kts-hover02-cap">季節のおすすめ</div>
</div>
CSSコード
.kts-hover02 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover02-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #F472B6, #FB923C); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover02-cap { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.55); color: #fff; font-size: 18px; font-weight: 700; opacity: 0; transition: opacity .4s; }
.kts-hover02:hover .kts-hover02-cap { opacity: 1; }
03. 下からキャプションが出る
画像の下から説明の帯がすっと出てくる効果です。
実際の見た目
HTMLコード
<div class="kts-hover03">
<div class="kts-hover03-img">🌿</div>
<div class="kts-hover03-cap">季節のおすすめ</div>
</div>
CSSコード
.kts-hover03 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover03-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #A78BFA, #60A5FA); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover03-cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 16px; background: rgba(17,24,39,.8); color: #fff; font-size: 15px; font-weight: 700; transform: translateY(100%); transition: transform .4s; }
.kts-hover03:hover .kts-hover03-cap { transform: translateY(0); }
04. 白黒からカラーへ
最初は白黒で、マウスを乗せるとカラーになる効果です。
実際の見た目
HTMLコード
<div class="kts-hover04">
<div class="kts-hover04-img">🌿</div>
</div>
CSSコード
.kts-hover04 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover04-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #FBBF24, #F87171); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover04-img { filter: grayscale(100%); transition: filter .5s; }
.kts-hover04:hover .kts-hover04-img { filter: grayscale(0); }
05. ぼかしが取れる
最初は少しぼやけていて、マウスを乗せるとくっきりする効果です。
実際の見た目
HTMLコード
<div class="kts-hover05">
<div class="kts-hover05-img">🌿</div>
<div class="kts-hover05-cap">季節のおすすめ</div>
</div>
CSSコード
.kts-hover05 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover05-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #34D399, #3B82F6); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover05-img { filter: blur(4px); transform: scale(1.05); transition: filter .5s; }
.kts-hover05-cap { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 18px; font-weight: 700; text-shadow: 0 2px 6px rgba(0,0,0,.4); transition: opacity .5s; }
.kts-hover05:hover .kts-hover05-img { filter: blur(0); }
.kts-hover05:hover .kts-hover05-cap { opacity: 0; }
06. 浮き上がって影が付く
画像全体が少し浮き上がり、影が広がる効果です。カード一覧に向いています。
実際の見た目
HTMLコード
<div class="kts-hover06">
<div class="kts-hover06-img">🌿</div>
</div>
CSSコード
.kts-hover06 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; overflow: visible; transition: transform .3s, box-shadow .3s; font-family: sans-serif; }
.kts-hover06-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #F472B6, #FB923C); /* 実際は background: url(画像のURL) center / cover; */ border-radius: 10px; }
.kts-hover06:hover { transform: translateY(-6px); box-shadow: 0 14px 28px rgba(0,0,0,.18); }
07. 枠線が現れる
マウスを乗せると、画像の内側に白い枠線が現れる上品な効果です。
実際の見た目
HTMLコード
<div class="kts-hover07">
<div class="kts-hover07-img">🌿</div>
</div>
CSSコード
.kts-hover07 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover07-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #A78BFA, #60A5FA); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover07::after { content: ""; position: absolute; inset: 12px; border: 2px solid #fff; opacity: 0; transform: scale(1.1); transition: opacity .4s, transform .4s; pointer-events: none; }
.kts-hover07:hover::after { opacity: 1; transform: scale(1); }
08. 少し傾く
画像がほんの少し傾きながら拡大する、動きのある効果です。
実際の見た目
HTMLコード
<div class="kts-hover08">
<div class="kts-hover08-img">🌿</div>
</div>
CSSコード
.kts-hover08 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover08-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #FBBF24, #F87171); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover08-img { transition: transform .5s; }
.kts-hover08:hover .kts-hover08-img { transform: scale(1.12) rotate(3deg); }
09. 色が重なる
画像の上にテーマカラーが重なる、サイトの雰囲気をそろえやすい効果です。
実際の見た目
HTMLコード
<div class="kts-hover09">
<div class="kts-hover09-img">🌿</div>
<div class="kts-hover09-cap">季節のおすすめ</div>
</div>
CSSコード
.kts-hover09 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover09-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #34D399, #3B82F6); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover09-cap { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(37,99,235,.75); color: #fff; font-size: 18px; font-weight: 700; opacity: 0; transition: opacity .4s; }
.kts-hover09:hover .kts-hover09-cap { opacity: 1; }
10. 左から文字がスライド
説明の文字が左からすっと入ってくる効果です。
実際の見た目
HTMLコード
<div class="kts-hover10">
<div class="kts-hover10-img">🌿</div>
<div class="kts-hover10-cap">季節のおすすめ</div>
</div>
CSSコード
.kts-hover10 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover10-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #F472B6, #FB923C); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover10-cap { position: absolute; left: 0; bottom: 20px; padding: 10px 18px; background: #fff; color: #111827; font-weight: 700; transform: translateX(-100%); transition: transform .4s; }
.kts-hover10:hover .kts-hover10-cap { transform: translateX(0); }
11. カーテンが開く
左右から閉じていた幕が開くように、画像が現れる効果です。
実際の見た目
HTMLコード
<div class="kts-hover11">
<div class="kts-hover11-img">🌿</div>
<div class="kts-hover11-cap">OPEN</div>
</div>
CSSコード
.kts-hover11 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover11-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #A78BFA, #60A5FA); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover11-cap { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 20px; font-weight: 800; letter-spacing: .2em; background: linear-gradient(90deg, #111827 50%, #1F2937 50%); transition: clip-path .5s; clip-path: inset(0 0 0 0); }
.kts-hover11:hover .kts-hover11-cap { clip-path: inset(0 50% 0 50%); }
12. 円形に広がる
中心から円が広がるように、色が現れる効果です。
実際の見た目
HTMLコード
<div class="kts-hover12">
<div class="kts-hover12-img">🌿</div>
<div class="kts-hover12-cap">季節のおすすめ</div>
</div>
CSSコード
.kts-hover12 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover12-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #FBBF24, #F87171); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover12-cap { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(236,72,153,.85); color: #fff; font-size: 18px; font-weight: 700; clip-path: circle(0% at 50% 50%); transition: clip-path .5s; }
.kts-hover12:hover .kts-hover12-cap { clip-path: circle(75% at 50% 50%); }
13. 光が走る
画像の上を斜めに光がすっと横切る、ツヤのある効果です。
実際の見た目
HTMLコード
<div class="kts-hover13">
<div class="kts-hover13-img">🌿</div>
</div>
CSSコード
.kts-hover13 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover13-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #34D399, #3B82F6); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover13::after { content: ""; position: absolute; top: 0; left: -75%; width: 50%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255,255,255,.6), transparent); transform: skewX(-20deg); pointer-events: none; }
.kts-hover13:hover::after { left: 125%; transition: left .7s; }
14. ずらした枠線
画像の後ろにずらした枠線を置き、マウスを乗せると重なる効果です。
実際の見た目
HTMLコード
<div class="kts-hover14">
<div class="kts-hover14-img">🌿</div>
</div>
CSSコード
.kts-hover14 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; overflow: visible; margin: 0 14px 14px 0; font-family: sans-serif; }
.kts-hover14-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #F472B6, #FB923C); /* 実際は background: url(画像のURL) center / cover; */ position: relative; z-index: 1; border-radius: 10px; transition: transform .3s; }
.kts-hover14::before { content: ""; position: absolute; inset: 0; border: 2px solid #111827; border-radius: 10px; transform: translate(12px, 12px); transition: transform .3s; }
.kts-hover14:hover::before { transform: translate(0, 0); }
15. 明るくなる
マウスを乗せると画像が少し明るくなる、控えめな効果です。
実際の見た目
HTMLコード
<div class="kts-hover15">
<div class="kts-hover15-img">🌿</div>
</div>
CSSコード
.kts-hover15 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover15-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #A78BFA, #60A5FA); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover15-img { filter: brightness(.85); transition: filter .4s; }
.kts-hover15:hover .kts-hover15-img { filter: brightness(1.1); }
16. ズームアウト
最初は拡大されていて、マウスを乗せると元の大きさに戻る効果です。
実際の見た目
HTMLコード
<div class="kts-hover16">
<div class="kts-hover16-img">🌿</div>
</div>
CSSコード
.kts-hover16 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover16-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #FBBF24, #F87171); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover16-img { transform: scale(1.2); transition: transform .6s; }
.kts-hover16:hover .kts-hover16-img { transform: scale(1); }
17. アイコンが現れる
中央に「+」のアイコンが現れて、クリックできることを伝える効果です。
実際の見た目
HTMLコード
<div class="kts-hover17">
<div class="kts-hover17-img">🌿</div>
<div class="kts-hover17-cap">+</div>
</div>
CSSコード
.kts-hover17 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover17-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #34D399, #3B82F6); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover17-cap { position: absolute; top: 50%; left: 50%; width: 56px; height: 56px; margin: -28px 0 0 -28px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: #fff; color: #111827; font-size: 28px; font-weight: 700; opacity: 0; transform: scale(.5); transition: opacity .3s, transform .3s; }
.kts-hover17:hover .kts-hover17-cap { opacity: 1; transform: scale(1); }
18. タイトルと説明が順に出る
タイトルが出たあとに、少し遅れて説明文が現れる凝った効果です。
実際の見た目
HTMLコード
<div class="kts-hover18">
<div class="kts-hover18-img">🌿</div>
<div class="kts-hover18-cap"><span class="kts-hover18-title">季節のおすすめ</span><span class="kts-hover18-text">春の新作が入荷しました</span></div>
</div>
CSSコード
.kts-hover18 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover18-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #F472B6, #FB923C); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover18-cap { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; background: rgba(0,0,0,.5); color: #fff; opacity: 0; transition: opacity .4s; }
.kts-hover18-title, .kts-hover18-text { transform: translateY(14px); opacity: 0; transition: transform .4s, opacity .4s; }
.kts-hover18-title { font-size: 18px; font-weight: 800; }
.kts-hover18-text { margin-top: 6px; font-size: 13px; transition-delay: .15s; }
.kts-hover18:hover .kts-hover18-cap { opacity: 1; }
.kts-hover18:hover .kts-hover18-title, .kts-hover18:hover .kts-hover18-text { transform: translateY(0); opacity: 1; }
19. 丸い画像が拡大
丸く切り抜いた画像が、ふわっと大きくなる効果です。プロフィール写真に向いています。
実際の見た目
HTMLコード
<div class="kts-hover19">
<div class="kts-hover19-img">🐶</div>
</div>
CSSコード
.kts-hover19 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 50%; cursor: pointer; max-width: 180px; height: 180px; font-family: sans-serif; }
.kts-hover19-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #A78BFA, #60A5FA); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover19-img { transition: transform .4s; }
.kts-hover19:hover .kts-hover19-img { transform: scale(1.12); }
.kts-hover19 { box-shadow: 0 0 0 4px #fff, 0 0 0 6px #F59E0B; }
20. セピア色から元に戻る
最初は懐かしいセピア色で、マウスを乗せると元の色に戻る効果です。
実際の見た目
HTMLコード
<div class="kts-hover20">
<div class="kts-hover20-img">🌿</div>
</div>
CSSコード
.kts-hover20 { position: relative; width: 100%; max-width: 300px; height: 200px; overflow: hidden; border-radius: 10px; cursor: pointer; font-family: sans-serif; }
.kts-hover20-img { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 56px; background: linear-gradient(135deg, #FBBF24, #F87171); /* 実際は background: url(画像のURL) center / cover; */ }
.kts-hover20-img { filter: sepia(90%); transition: filter .5s; }
.kts-hover20:hover .kts-hover20-img { filter: sepia(0); }
カスタマイズの小ワザ
- 画像を入れる時は、「〇〇-img」のbackgroundに url(画像のURL) center / cover を指定してください。CSSの中にコメントで書き方を残しています。
- imgタグを使いたい場合は、「〇〇-img」の中に<img src=”画像のURL” alt=”説明”>を入れ、CSSで width:100%; height:100%; object-fit:cover; を指定してください。
- スマホにはマウスがないため、ホバーの効果は表示されません。キャプションなど大事な情報は、ホバーしなくても見える場所にも書いておきましょう。
- 動きの速さは、transitionの秒数(.5sなど)で変えられます。
- 画像の大きさは、CSSの一番上のmax-widthとheightで変えられます。
まとめ|早見表
| 使いたい場面 | 該当するエフェクト |
|---|---|
| 定番の動き | 01, 16 |
| 文字を重ねたい | 02, 03, 09, 10, 18 |
| 色の変化で見せる | 04, 15, 20 |
| ぼかし | 05 |
| カード一覧 | 06, 14 |
| 上品に見せたい | 07, 13 |
| 動きで目を引く | 08, 11, 12 |
| クリックできると伝える | 17 |
| プロフィール写真 | 19 |
マウスを乗せるだけで動くと、つい触りたくなるね!
そうなんだ。ただ、スマホではホバーが効かないから、大事な情報は動かさなくても見えるようにしておこうね。
20個の画像ホバーエフェクトは、HTMLとCSSだけで動く。画像はbackgroundにurlを指定して入れ、スマホではホバーが効かないため大事な情報は常に見える場所にも書いておく。



