纯CSS 3D立体移动菜单【原创

来源:https://www.sucaihuo.com/js/2383.html 2017-07-10 23:02浏览(2115) 收藏

一款纯CSS 3D立体移动菜单的特效,可以点击“切换”的选项来切换立体和平面的显示效果,顶部的搜索框在点击时也有一个动画展开的特效,每个菜单都有一个点击变化的样式特效,整体效果非常的酷炫,喜欢的小伙伴们请收下把。
纯CSS 3D立体移动菜单
分类:导航菜单 > 图标导航 难易:初级
查看演示 下载资源 下载积分: 40 积分
关注公众号,免费赠送安装视频教程、环境和学习视频,后面会不断更新。

页面的head部分,先引入字体图标库的CSS样式文件font-awesome.4.6.0.css,接着设置好页面个元素的样式,部分代码如下:

*,
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  font-family: 'Microsoft YaHei','Lantinghei SC','Open Sans',Arial,'Hiragino Sans GB','STHeiti','WenQuanYi Micro Hei','SimSun',sans-serif;
  font-size: 12px;
  background: #353138;
  background: -moz-radial-gradient(center, ellipse cover,  #353138 0%, #1a181c 100%);
  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #353138), color-stop(100%, #1a181c));
  background: -webkit-radial-gradient(center, ellipse cover,  #353138 0%,#1a181c 100%);
  background: -o-radial-gradient(center, ellipse cover,  #353138 0%,#1a181c 100%);
  background: -ms-radial-gradient(center, ellipse cover,  #353138 0%,#1a181c 100%);
  background: radial-gradient(ellipse at center,  #353138 0%,#1a181c 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#353138', endColorstr='#1a181c', GradientType=1);
}
.container {
  margin: 0;
  width: 100%;
  height: 100%;
  padding: 20px;
  -webkit-perspective: 1500px;
  -moz-perspective: 1500px;
  -ms-perspective: 1500px;
  perspective: 1500px;
  position: relative;
}
.toggle {
  color: #fff;
  display: inline-block;
  line-height: 16px;
  font-size: 20px;
  float: left;
}
.menu {
  margin: 60px auto;
  position: relative;
  background: #62278d;
  background: -moz-linear-gradient(top,  #62278d 0%, #2cc09b 100%);
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#62278d), color-stop(100%,#2cc09b));
  background: -webkit-linear-gradient(top,  #62278d 0%,#2cc09b 100%);
  background: -o-linear-gradient(top,  #62278d 0%,#2cc09b 100%);
  background: -ms-linear-gradient(top,  #62278d 0%,#2cc09b 100%);
  background: linear-gradient(to bottom,  #62278d 0%,#2cc09b 100%);
  width: 300px;
  border-width: 20px 0;
  border-style: solid;
  border-color: #fff;
  color: #fff;
  height: 500px;
  -webkit-transform-style: preserve-3d;
     -moz-transform-style: preserve-3d;
      -ms-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transition: all 0.5s ease-in-out;
     -moz-transition: all 0.5s ease-in-out;
       -o-transition: all 0.5s ease-in-out;
          transition: all 0.5s ease-in-out;
  -webkit-box-shadow: 0 0 50px 0 #444;
     -moz-box-shadow: 0 0 50px 0 #444;
          box-shadow: 0 0 50px 0 #444;
}
input.toggle:checked ~ .menu {
  -webkit-transform: translateY(-200px) translateZ(-150px) rotateX(45deg) rotateZ(45deg);
     -moz-transform: translateY(-150px) rotateX(45deg) rotateZ(45deg);
      -ms-transform: translateY(-150px) rotateX(45deg) rotateZ(45deg);
       -o-transform: translateY(-150px) rotateX(45deg) rotateZ(45deg);
          transform: translateY(-150px) rotateX(45deg) rotateZ(45deg);
}
.menu:before {
  content: '';
  position: absolute;
  height: 30px;
  width: 300px;
  top: 480px;
  left: 0px;
  -webkit-transform: rotateX(90deg) translateY(-15px) translateZ(15px);
     -moz-transform: rotateX(90deg) translateY(-15px) translateZ(15px);
      -ms-transform: rotateX(90deg) translateY(-15px) translateZ(15px);
       -o-transform: rotateX(90deg) translateY(-15px) translateZ(15px);
          transform: rotateX(90deg) translateY(-15px) translateZ(15px);
  background: #fff;
  pointer-events: none;
}
.menu:after {
  content: '';
  position: absolute;
  height: 500px;
  width: 30px;
  top: -20px;
  right: -30px;
  -webkit-transform: rotateY(90deg) translateZ(-15px) translateX(15px);
     -moz-transform: rotateY(90deg) translateZ(-15px) translateX(15px);
      -ms-transform: rotateY(90deg) translateZ(-15px) translateX(15px);
       -o-transform: rotateY(90deg) translateZ(-15px) translateX(15px);
          transform: rotateY(90deg) translateZ(-15px) translateX(15px);
  border-width: 20px 0;
  border-style: solid;
  border-color: #fff;
  background: #62278d;
  background: -moz-linear-gradient(top,  #62278d 0%, #2cc09b 100%);
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#62278d), color-stop(100%,#2cc09b));
  background: -webkit-linear-gradient(top,  #62278d 0%,#2cc09b 100%);
  background: -o-linear-gradient(top,  #62278d 0%,#2cc09b 100%);
  background: -ms-linear-gradient(top,  #62278d 0%,#2cc09b 100%);
  background: linear-gradient(to bottom,  #62278d 0%,#2cc09b 100%);
  pointer-events: none;
}

页面的body部分,结构比较清晰简单,不同的元素放在不同的容器了,多个li标签来实现菜单列表,代码如下:

<div class="container">
  <input type="checkbox" class="toggle" id="toggle" checked="checked" /><label class="toggle" for="toggle"> 切换</label>
  <div class="menu">
    <div class="top">
      <span class="search">
        <input type="text">
      </span>
      <a class="exit" href="#" tabindex="0"></a>
    </div>
    <ul class="middle">
      <li tabindex="0"><i class="fa fa-calendar"></i>健康</li>
      <li tabindex="0"><i class="fa fa-camera"></i>快乐</li>
      <li tabindex="0"><i class="fa fa-check-square-o"></i>财富</li>
      <li tabindex="0"><i class="fa fa-map-marker"></i>自由</li>
      <li tabindex="0"><i class="fa fa-empire"></i>幸福</li>
      <li tabindex="0"><i class="fa fa-user"></i>感恩</li>
      <li tabindex="0"><i class="fa fa-cogs"></i>充满爱</li>
    </ul>
    <div class="menu-back"></div>
    <div class="glass-reflection"></div>
  </div>
</div>
声明:本文为原创文章,如需转载,请注明来源sucaihuo.com并保留原文链接:https://www.sucaihuo.com/js/2383.html
评论0
头像

系统已开启自动识别垃圾评论机制,识别到的自动封号,下载出错或者资源有问题请联系全栈客服QQ 1915635791

1 2