打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一款非常棒的纯CSS3 3D菜单演示及制作教程

这段时间比较忙,很久没在这里分享一些漂亮的HTML5和CSS3资源了,今天起的早,看到一款很不错的CSS3 3D菜单,觉得非常上眼,就将它分享给大家,顺便来分析一下实现的源码。下面是效果图:

看了效果图是不是觉得它是一副麻将,对,第一眼我也认为是用CSS3写的麻将特效,结果我错了,它只是长得比较像而已。

另外,你也可以在这里直接查看菜单的DEMO演示

接下来再分析一下实现这款3D菜单的源代码。

代码主要由HTML和CSS3组成,应该说还是比较简单的。

首先是HTML代码:

<ul>  <li>    <a class='list-item' href=''>      <i class='icon-reorder'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-th-large'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-bar-chart'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-tasks'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-bell'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-archive'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-comment'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-sitemap'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-thumbs-up'></i>    </a>  </li>  <li>    <a class='list-item' href=''>      <i class='icon-tumblr'></i>    </a>  </li></ul>

这里用了标准的ul li列表来构建菜单的HTML框架,层次非常清晰。

接下来重点是CSS代码,如何用CSS3的特性来实现菜单的侧躺和阴影效果,从来让其看起来呈3D的状态。

ul {  position: relative;  -webkit-transform: rotate(-35deg) skew(20deg, 5deg);  -moz-transform: rotate(-35deg) skew(20deg, 5deg);  -ms-transform: rotate(-35deg) skew(20deg, 5deg);  -o-transform: rotate(-35deg) skew(20deg, 5deg);  transform: rotate(-35deg) skew(20deg, 5deg);}

上面的这几行代码很关键,我们也可以看出用了CSS3的transform属性的rotate()实现菜单整体旋转一定角度,然后用skew()让菜单倾斜一个角度,这样菜单就开始有3D立体的感觉了。

接下来是每一个菜单项的样式:

.list-item {  background: #000000;  color: #575757;  text-align: center;  height: 2.5em;  width: 4em;  vertical-align: middle;  line-height: 2.5em;  border-bottom: 1px solid #060606;  position: relative;  display: block;  text-decoration: none;  -webkit-box-shadow: -2em 1.5em 0 #e1e1e1;  -moz-box-shadow: -2em 1.5em 0 #e1e1e1;  box-shadow: -2em 1.5em 0 #e1e1e1;  -webkit-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;  -moz-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;  -o-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;  transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;}.list-item:hover {  background: #ff6e42;  color: #fffcfb;  top: -0.5em;  left: 0.5em;  -webkit-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;  -moz-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;  -o-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;  transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;  -webkit-box-shadow: -2em 2em 0 #e1e1e1;  -moz-box-shadow: -2em 2em 0 #e1e1e1;  box-shadow: -2em 2em 0 #e1e1e1;}.list-item:hover:before, .list-item:hover:after {  -webkit-transition: all 0.25s linear;  -moz-transition: all 0.25s linear;  -o-transition: all 0.25s linear;  transition: all 0.25s linear;}.list-item:hover:before {  background: #b65234;  width: 1em;  top: 0.5em;  left: -1em;}.list-item:hover:after {  background: #b65234;  width: 1em;  bottom: -2.5em;  left: 1em;  height: 4em;}.list-item:before, .list-item:after {  -webkit-transition: all 0.25s linear;  -moz-transition: all 0.25s linear;  -o-transition: all 0.25s linear;  transition: all 0.25s linear;}.list-item:after {  content: "";  position: absolute;  height: 4em;  background: #181818;  width: 0.5em;  bottom: -2.25em;  left: 1.5em;  -webkit-transform: rotate(90deg) skew(0deg, 45deg);  -moz-transform: rotate(90deg) skew(0deg, 45deg);  -ms-transform: rotate(90deg) skew(0deg, 45deg);  -o-transform: rotate(90deg) skew(0deg, 45deg);  transform: rotate(90deg) skew(0deg, 45deg);}.list-item:before {  content: "";  position: absolute;  height: 2.5em;  background: #121212;  width: 0.5em;  top: 0.215em;  left: -0.45em;  -webkit-transform: skewY(-45deg);  -moz-transform: skewY(-45deg);  -ms-transform: skewY(-45deg);  -o-transform: skewY(-45deg);  transform: skewY(-45deg);}

我们可以看到用了shadow实现每一个菜单项都有投影,至此,整个菜单的3D效果就已经渲染完了。

另外就是鼠标滑过菜单项的效果,利用了CSS3的动画特性让菜单项背景色渐变,形成凸起的效果。

整个实现就是这样了,你可以下载源代码,下载地址>>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用HTML5/CSS3五步快速制作便签贴特效
css3常用属性之表现型
你需要知道的CSS3 动画技术 | CSS | 前端观察
CSS3 Transform
CSS3制作价格表二 | 前端实例
奇思妙想 CSS 3D 动画 | 仅使用 CSS 能制作出多惊艳的动画?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服