2014/05/19
シンプルなのに効果的!CSS3トランジションを使ったマウスオーバーアニメーション11
CSS3を使えば、シンプルなコードなのに、ユーザーを「おっ!」と思わせる楽しい動きを簡単に実装できてしまいます。
CSSのトランジションプロパティを使った、マウスオーバーアニメーションです。
簡単なのに、なめらかな動きでユーザーに楽しんでもらえると思いますよ。
なお、ブラウザーのサポート状況については、CSS3 Referenceが便利です。
サイト制作のご参考になれば幸いです。
「transition」プロパティを利用する
通常、マウスオーバーで色などを変更させる場合には、hover擬似クラスでカラーを指定します。
ここでアニメーション効果を入れたい場合に利用するのが「transition」プロパティです。
基本は「transition: プロパティ名 時間 アニメーション方法 ;」
「transition」プロパティの基本は「transition: プロパティ名 時間 アニメーション方法 ;」という使い方をします。
プロパティ名
=プロパティ名に「all」と記述すると、「hover」で指定したすべてのプロパティがアニメーションされます。
時間
=どれぐらいの時間をかけてアニメーションさせるのかをしています。「◯s」と指定します。
アニメーション方法
=「ease」「linear」「ease-in」「ease-out」「ease-in-out」「cubic-bezier」を指定して、好みの変化をつけます。
共通のHTMLとCSS
CSS3トランジションを使ったマウスオーバーアニメーションのサンプルをご紹介するにあたって、共通となるHTMLとCSSを掲載しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<!DOCTYPE html> <html> <head> <link href='https://fonts.googleapis.com/css?family=Lato:900' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="base.css" type="text/css"> </head> <body> <div class="fade">フェードイン</div> <div class="color">カラーチェンジ</div> <div class="grow">拡大</div> <div class="shrink">縮小</div> <div class="wide">伸縮</div> <div class="rotate">傾き</div> <div class="flip">回転</div> <div class="circle">資格から丸へ</div> <div class="shadow">3Dシャドウ</div> <div class="swing">スウィング</div> <div class="border">インセットボーダー</div> </body> </html> |
CSSは以下のようになります。
上記htmlのdivに対してアニメーションを実装していきます。
「伸縮」というアニメーション以外は、すべて共通です(右にだけ伸縮させたいので、共通化できませんでした。すいません)。
「transition」プロパティは、all=すべてに適用し、時間=0.5s かけてアニメーションさせるようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/*全共通*/ body > div { margin:100px auto; width:400px; height:200px; background:#676470; color:#fff; font-family:Lato; font-weight:900; font-size:2em; text-align:center; line-height:200px; /*トランジションプロパティ */ transition:all 0.5s; } |
フェードイン
フェードインは、opacity(ボックスの透明度)で実装します。
0で完全な透明になり、1.0で不透明になります。
1 2 3 4 5 6 7 8 |
/* フェードイン */ .fade { opacity:0.5; } .fade:hover { opacity:1; } |
カラーチェンジ
色の変更は、hover擬似クラスで変化させたい色を指定します。
1 2 3 4 5 |
/* カラーチェンジ */ .color:hover { background:#eb8f52; } |
拡大
拡大させたい場合は、transform:scale(数値)プロパティを利用します。
1 2 3 4 5 6 |
/* 拡大 */ .grow:hover { -webkit-transform: scale(1.3); -ms-transform: scale(1.3); transform: scale(1.3); } |
縮小
縮小させたい場合も、transform:scale(数値) プロパティを利用します。
1 2 3 4 5 6 |
/* 縮小 */ .shrink:hover { -webkit-transform: scale(0.8); -ms-transform: scale(0.8); transform: scale(0.8); } |
伸縮
伸縮と書いていますが、実際にはマージンの値を変えて、あたかも伸縮しているようにみせているだけです。
ここでは、左から右に伸縮させたいので、margin-leftの値を変えています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* 伸縮 */ /* アニメーションが異なるため、ここだけ個別の指定になっています */ .wide { width: 600px; margin-left: -450px; text-align: right; padding-right: 20px; } /* 伸縮効果 */ .wide:hover { margin-left: -100px; } |
傾き
要素を傾けたいときには、transform: rotate(数値deg) プロパティを利用します。
degは傾ける角度(時計回り)になります。
1 2 3 4 5 6 |
/* 傾き */ .rotate:hover { -webkit-transform: rotate(-30deg); -ms-transform: rotate(-30deg); transform: rotate(-30deg); } |
フリップ
3Dのような形でフリップさせるわけですが、「scaleX(-1)」を利用してあたかもフリップしているようにみせています。
1 2 3 4 5 6 |
/* フリップ */ .flip:hover { -moz-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); } |
四角から丸へ
四角形を丸に変化させるには、border-radiusプロパティを利用します。
1 2 3 |
.circle:hover { border-radius:50%; } |
3Dシャドウ
3Dシャドウを実装するには、box-shadowプロパティと、transform: translateプロパティ(移動)を使います。
1 2 3 4 5 6 7 |
.shadow:hover { box-shadow:1px 1px #eb9552, 2px 2px #eb9552, 3px 3px #eb9552; -webkit-transform: translateX(-3px); transform: translateX(-3px); } |
スウィング
左右にブルブルふるえる動きですが、transform: translateプロパティ(移動)にくわえ、@keyframesと animationプロパティを使います。
animationプロパティを利用すると、キーフレームを利用したアニメーションを設定できます。
キーフレームは「@keyframes キーフレーム名 {}」という形でキームレームを作成ます。
@keyframesの中には、始点から終点までのキーフレームを設定します。
始点は0%{}、終点は100%{}に記述し、適宜、1〜99%{}のキーフレームを設定します。
設定したキーフレームに対してアニメーションを実装するには、「animation キーフレーム名 再生時間」を指定してやります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
/* スウィング */ @-webkit-keyframes swing { 15% { -webkit-transform: translateX(5px); transform: translateX(5px); } 30% { -webkit-transform: translateX(-5px); transform: translateX(-5px); } 50% { -webkit-transform: translateX(3px); transform: translateX(3px); } 65% { -webkit-transform: translateX(-3px); transform: translateX(-3px); } 80% { -webkit-transform: translateX(2px); transform: translateX(2px); } 100% { -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes swing { 15% { -webkit-transform: translateX(5px); transform: translateX(5px); } 30% { -webkit-transform: translateX(-5px); transform: translateX(-5px); } 50% { -webkit-transform: translateX(3px); transform: translateX(3px); } 65% { -webkit-transform: translateX(-3px); transform: translateX(-3px); } 80% { -webkit-transform: translateX(2px); transform: translateX(2px); } 100% { -webkit-transform: translateX(0); transform: translateX(0); } } .swing:hover { -webkit-animation: swing 1s ease; /* easeは最初と最後を滑らかに再生する補完方法 */ animation: swing 1s ease; -webkit-animation-iteration-count: 1;/* アニメーションの繰り返し回数を指定 */ animation-iteration-count: 1; } |
インセットボーダー
ボックスの内側にシャドウをつけるので、box-shadow: insetプロパティを利用します。
1 2 3 4 |
/* インセットボーダー */ .border:hover { box-shadow: inset 0 0 0 25px #eb9552; } |
Sponsored by
お役に立てましたら、以下どれでも結構のですので、ポチリと……。
Amazonアソシエイト・プログラム規約による記載
当サイトはamazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。
この記事を読んだ人はこんな記事も読んでいます
-
激易!YouTubeなどの動画やGoogleMapsをコピペだけでレスポンシブ化「Embed Responsively」
YouTubeやViemoなどの動画、あるいはGoogleMapsをコピペだけでレスポンシブ化できて
-
Joomla!の無料テンプレート123 レスポンシブWEBデザイン対応もあり
Joomla!(ジュームラ)は高機能で使いやすいと評判のCMSです。 ドメイン、サーバー込みで無料
-
売上手数料なし!簡単・便利なWixStoresでネットショップを開業する方法
「知識ゼロだけど自分でネットショップを作りたい」「業者に頼む余裕も予算もない」そんな方にオススメなの
-
美しいCSSグラデーションをランダムにつくってくれる「Random CSS Gradient Generator」
ズボラな自分に最適なCSSグラデーション作成ツールがあったので、ご紹介します。 グラデーションを自
-
切れ込みの入ったリボン型のナビゲーションをCSS3だけで実装する方法
切れ込みの入ったリボン型のナビゲーションをCSS3だけで実装する方法をご紹介します。 リボン関連に
-
月額ゼロ円(無料)でホームページ・ECサイトを制作・運営できるサービス12
ホームページ制作を生業としているものにとっては、穏やかではないのが「無料でホームページを制作できてし
-
いまさら聞けない無料でオリジナルなアイコンフォントを作る方法・利用する方法
アイコンフォントは便利だ、という声をあちこちで耳します。 遅ればせながら私も使ってみましたが、本当
-
ファイルのウイルス・マルウエアを無料でスキャンできるオンラインサービス9
ファイルのウイルスやマルウエアを無料でスキャンできるオンラインサービスセキュリティーサービスをご紹介
-
100GB使える無料ストレージサービスshared.comにマルウエアが仕込まれてた!?
各方面で紹介されている太っ腹な無料ストレージサービス「Shared」を利用し始めたところ、えらい目に
-
WordPressにベストな格安レンタルサーバーはこれです!
WordPressでレンタルサーバーを選ぶ場合のおすすめサーバーご紹介します。 新しくWordPr