英国/アイルランドで毎年最も優れたアルバムに対して送られる音楽賞 Mercury Prize (マーキュリー・プライズ) のWEBサイトのホバー・エフェクトを見て見ましょう。薄いグラデーションがかかった画像をホバーすると、画像がふわっとくっきり拡大表示され動的に、視覚に訴えるかけるような効果が印象を与えています。同じようなサンプルを html と css で実装してみましょう。
薄いカラーのフィルターを敷いた画像を hover させると、薄いカラー・ファイルターが透明になり元画像 + ズームしてアニメーション表示させる例です。まずは画像を HTML5 で追加された、figure 要素で囲い、画像を意味するタイトルや文字などのキャプションを figcaption 要素でマークアップします。まずはベースとなる html の雛形です
<figure> <img src="" /> <figcaption> <a href="#">リンク</a> <h2>タイトル</h2> <p>テキスト</p> </figcaption> </figure>
これを css でスタイリングしていきます。最初に画像には薄いカラーのフィルターを敷きたいので、お好みのバックカラーのクラスを用意しておきます。まず静的な状態の css が以下になります
/* 画像の上に敷きたいカラー */ .blue-bg { background: blue; } figure img { position: relative; display: block; min-height: 100%; max-width: 100%; /* 最初画像の透明度を落としておく */ opacity: 0.3; /* ホバー時にトランジションを加えたいのでここで記述しておく */ -webkit-transition: opacity 0.35s, -webkit-transform 0.35s; transition: opacity 0.35s, transform 0.35s; -webkit-transform: scale(1); transform: scale(1); } figure figcaption { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } figure h2 { padding: 20% 0 20px 0; -webkit-transform: scale(1); transform: scale(1); -webkit-transition: opacity 0.35s, -webkit-transform 0.35s; transition: opacity 0.35s, transform 0.35s; } figure p { margin: 0 auto; max-width: 200px; -webkit-transform: scale(1); transform: scale(1); } figure figcaption > a { z-index: 1000; text-indent: 200%; white-space: nowrap; font-size: 0; opacity: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
figure img では、画像の透明度を調整し縦横サイズを 100% にします。transition と要素を動かす transform、opacity を使用して薄いレイヤーカラーから、元のカラー写真にふわっとフェードイン/フェードアウトさせるような効果を加えます。
ホバー時に画像を拡大させるには transform: scale(); を使用し、正常時より大きい値を設定します。figure figcaption では文字要素が画像上にくるように設定するため、position: absolute; に、top を 0、left を 0、縦横を 100% に指定します。
a 要素は画像のどの箇所をクリックしてもリンク先に飛べるように、z-index で最も上のレイヤーに表示されるように指定します。以下は hover 時の css です。hover 時に透明度の opacity を薄い透明度から不透明度とし、transform: scale(); で通常時より少し大きい値を指定し、ホバー時に拡大表示されるようにしましょう。
figure:hover img { opacity: 1; /* scale でホバー時に画像を拡大させる */ -webkit-transform: scale(1.1s); transform: scale(1.1); } figure:hover p { opacity: 1; -webkit-transform: scale(1.4); transform: scale(1.4); } figure:hover h2 { -webkit-transform: scale(1.2); transform: scale(1.2); }
上記の demo はこちらで確認できます
〒150-0002
東京都渋谷区渋谷2-7-14 VORT青山 5F
メールでのお問い合わせはこちらから
webfactory.tokyo