【CSS】マウスオーバーで画像が拡大・縮小するアニメーション
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
CSSでマウスオーバー時に画像を拡大・縮小するアニメーションのご紹介です。
ブログのアーカイブページで画像を含むリンク要素にマウスカーソルを乗せると、画像だけが少し拡大するアニメーションをご覧になったことがあるかと思います。
マウスカーソルがあたっていることが視覚的にわかるため、色々なサイトで取り入れられていますね。
本記事では上記アニメーションの実装方法を詳しくご紹介しています。
では、解説していきます。共通のHTMLを作成する
マウスオーバーで画像を拡大もしくは縮小させる、画像を含むHTMLを作成します。最近はカードの形をしたパネル全体をaタグで囲んているケースが多いので、同じようなHTMLで作成していきます。
<a href="#"> <div class="image"> <img src="https://into-the-program.com/uploads/modal-window.jpg" alt=""> </div> <h2>Lorem ipsum</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> </a>
マウスオーバーで画像を拡大させるアニメーション
まずは拡大するアニメーションからご紹介します。
流れとしては下記のようになるかと思います。
- 要素にマウスカーソル<乗せる/li>
- 要素の画像が拡大する
では早速、上記でご紹介したHTMLにCSSを定義してみましょう。
CSS
a { display: block; width: 100%; margin: 28px auto 0; color: #000; text-decoration: none; } a .image { height: 100px; overflow: hidden; } a .image img { width: 100%; height: auto; transition: .3s; } a:hover .image img { transform: scale(1.5); }
下記はマウスオーバーで画像が拡大するアニメーションのデモになります。
DEMO
See the Pen
gJZvQO by ryoy (@intotheprogram)
on CodePen.
リンクにマウスカーソルを乗せると画像が少し大きくなったかと思います。
本記事での画像の拡大はtransformのscale関数を使用して実現しています。widthやheightを指定して大きくすることも可能ですが、transformのscaleは主要ブラウザでは対応済みとなりますので、transformを使用することをおすすめします。
注意点として、上記のデモでは隠していますが、画像が拡大した際に内部的には親要素からはみ出す形となります。親要素には「overflow: hidden」を設定して、はみ出した画像が要素外に表示されないようにしておきましょう。
マウスオーバー時に画像を縮小させるアニメーション
続いて、画像を縮小させるアニメーションのご紹介です。
処理の流れは拡大する際と同様になります。違いとしましては、デフォルトの画像にscaleをあてて拡大した状態にしている点です。マウスカーソルを乗せると拡大した画像が元のサイズに戻るイメージになります。
CSS
a { display: block; width: 30%; margin: 28px auto 0; color: #000; text-decoration: none; } a .image { height: 100px; overflow: hidden; } a .image img { width: 100%; height: auto; transform: scale(1.5); transition: .3s; } a:hover .image img { transform: scale(1); }
下記はマウスオーバーで画像が縮小するアニメーションのデモになります。
DEMO
See the Pen
Image Hover Scale Animation02 | CSS by ryoy (@intotheprogram)
on CodePen.
最後に
本記事でご紹介したマウスオーバーで画像拡大・縮小するアニメーションはアーカイブページのリンクだけではなく、サイドバーや関連記事にも簡単に実装することができますので、ぜひ色々なサイトで活用していただければと思います。
以上、CSSでマウスオーバーで画像が拡大・縮小するアニメーションのご紹介でした!