[CSS]コンテンツを水平・垂直にぐぐぐっと傾けてナビゲーションを表示するスタイルシート

最近ちらほら見かける、コンテンツをアニメーションでぐぐぐっと傾けて、ナビゲーションを配置したサイドバーやヘッダを表示するスタイルシートを紹介します。

デモのキャプチャ

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");
  }
});

top of page

©2017 coliss