[CSS]コンテンツを水平・垂直にぐぐぐっと傾けてナビゲーションを表示するスタイルシート
Post on:2013年11月7日
sponsorsr
最近ちらほら見かける、コンテンツをアニメーションでぐぐぐっと傾けて、ナビゲーションを配置したサイドバーやヘッダを表示するスタイルシートを紹介します。

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











