[CSS]パネル切替時の普通のエフェクトに飽きた人用、立体的にくるっと回転させるスタイルシート
Post on:2012年5月8日
ホバー時にインフォメーションを表示する際、立方体がくるっと回転するようなアニメーションのエフェクトを実装するチュートリアルを紹介します。
Showing Product Information With CSS3 3D Transform
[ad#ad-2]
デモ
デモはFirefoxでご覧ください。
切替時のエフェクトは下記のようになっています。
まずは、通常時。
通常時
[ad#ad-2]
ホバーすると、アニメーションでくるっと回転します。
ホバー時:回転中
アニメーションが完了すると、インフォメーションが表示されます。
ホバー時:回転完了
実装
HTML
パネルは、通常時の一枚画像、ホバー時のインフォメーションをdiv要素で内包します。
<div class="wrapper"> <div class="item"> <img src="images/contact.png"> <span class="information"> <strong>Contact Form</strong> The easiest way to add a contact form to your shop. </span> </div> </div>
実装のイメージは下記のようになります。
通常時は「front side」の画像が表示され、ホバー時に「bottom side」のインフォメーションが表示されます。
CSS
まずは、ラッパーのスタイルです。
perspectiveを使用して3Dの奥行きを与え、transform-styleで子要素が3Dを保つように設定します。
.wrapper { display: inline-block; width: 310px; height: 100px; vertical-align: top; margin: 1em 1.5em 2em 0; cursor: pointer; position: relative; font-family: Tahoma, Arial; perspective: 4000px; } .item { height: 100px; transform-style: preserve-3d; transition: transform .6s; }
画像とインフォメーションはそれぞれブロックにし、CSS3アニメーションを設定します。
.item img { display: block; position: absolute; top: 0; border-radius: 3px; box-shadow: 0px 3px 8px rgba(0,0,0,0.3); transform: translateZ(50px); transition: all .6s; } .item .information { display: block; position: absolute; top: 0; height: 80px; width: 290px; text-align: left; border-radius: 15px; padding: 10px; font-size: 12px; text-shadow: 1px 1px 1px rgba(255,255,255,0.5); box-shadow: none; background: linear-gradient(top,rgba(236,241,244,1) 0%,rgba(190,202,217,1) 100%); transform: rotateX(-90deg) translateZ(50px); transition: all .6s; }
最後にホバー時の回転のアニメーションを設定し、より美しくするため角丸とシャドウを加えます。
.item:hover { transform: translateZ(-50px) rotateX(95deg); } .item:hover img { box-shadow: none; border-radius: 15px; } .item:hover .information { box-shadow: 0px 3px 8px rgba(0,0,0,0.3); border-radius: 3px; }
sponsors