[CSS]コンテンツを水平・垂直にぐぐぐっと傾けてナビゲーションを表示するスタイルシート
Post on:2013年11月7日
最近ちらほら見かける、コンテンツをアニメーションでぐぐぐっと傾けて、ナビゲーションを配置したサイドバーやヘッダを表示するスタイルシートを紹介します。
Animated CSS3 Perspective Menu
デモ
デモは水平タイプ・垂直タイプの2種類あります。
まずは、水平タイプでサイドバーを表示するデモから。
左の四本線をクリック・タップすると、アニメーションでサイドバーが表示されます。
このコンテンツがパースペクティブでぐぐぐっと傾くの、かっこいいですよね。
垂直タイプで、ヘッダを表示するデモもあります。
上の四本線をクリック・タップすると、アニメーションでヘッダが表示されます。
実装
Step 1: HTML
パースペクティブで表示するコンテンツをdivなどのラッパーを使って配置します。
<div class="wrapper"> <div class="menu"> <div class="hover-icon"> <i class="icon-align-justify"></i> </div> <ul> <li class="category"><a href="#">HOME</a></li> <li class="category"><a href="#">SEARCH</a></li> <li class="category"><a href="#">ABOUT US</a></li> <li class="category"><a href="#">CONTACT US</a></li> </ul> </div> <div class="container">コンテンツ</div> </div>
Step 2: CSS
まずは、ラッパーにパースペクティブのエフェクトを与えます。
ここで紹介するのは水平タイプのスタイルのみです。垂直タイプはダウンロードファイルを参考にしてください。
.wrapper { height: 100%; -moz-perspective: 500; -webkit-perspective: 500; perspective: 500; -moz-perspective-origin: 50% 50%; -webkit-perspective-origin: 50% 50%; perspective-origin: 50% 50%; overflow: hidden; } .container { position: relative; z-index: 1; background-color: #ddd; padding-top: 20px; text-align: center; height: 100%; margin-left: 40px; transition: .5s; -webkit-transition: .5s; -webkit-transform: rotateY(0deg) translateX(0) scale(1); transform: rotateY(0deg) translateX(0) scale(1); } .container.perspective { -webkit-transform: rotateY(-15deg) translateX(250px) scale(.9); transform: rotateY(-15deg) translateX(250px) scale(.9); }
続いて、メニューをスタイルします。
ポイントは、メニューをz-indexでコントロールすることです。
.menu { height: 100%; width: 40px; background-color: #444; position: absolute; top: 0; left: 0; z-index: 0; cursor: pointer; } .menu .hover-icon { position: relative; z-index: 10; font-size: 20px; width: 40px; height: 100%; text-align: center; } .menu .hover-icon i { position: absolute; width: 40px; top: 50%; left: 0; margin-top: -20px; } .menu ul { position: absolute; z-index: 0; left: 40px; top: 15%; width: 200px; height: 75%; margin-left: 10px; } .menu ul li { font-size: 12px; font-weight: bold; transition: .2s; -webkit-transition: .2s; } .menu ul li a { color: #ddd; } .menu ul li:hover { margin-left: 10px; } .menu ul li:hover a { color: #fff; } body.vertical .menu ul li:hover { margin-left: 0; background-color: #404040; }
Step 3: JavaScript
スクリプトは単にコンテナにパースペクティブのclassを加えるだけです。
jquery.jsを外部ファイルとし、下記のスクリプトを記述します。
$(".menu .hover-icon").click(function() { if ($(".container").hasClass("perspective")) { $(".container").removeClass("perspective"); } else { $(".container").addClass("perspective"); } });
sponsors