原文:一款非常棒的纯CSS3 3D菜单演示及制作教程

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

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

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

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

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

首先是HTML代码:

  1. <ul>
  2. <li>
  3. <a class='list-item' href=''>
  4. <i class='icon-reorder'></i>
  5. </a>
  6. </li>
  7. <li>
  8. <a class='list-item' href=''>
  9. <i class='icon-th-large'></i>
  10. </a>
  11. </li>
  12. <li>
  13. <a class='list-item' href=''>
  14. <i class='icon-bar-chart'></i>
  15. </a>
  16. </li>
  17. <li>
  18. <a class='list-item' href=''>
  19. <i class='icon-tasks'></i>
  20. </a>
  21. </li>
  22. <li>
  23. <a class='list-item' href=''>
  24. <i class='icon-bell'></i>
  25. </a>
  26. </li>
  27. <li>
  28. <a class='list-item' href=''>
  29. <i class='icon-archive'></i>
  30. </a>
  31. </li>
  32. <li>
  33. <a class='list-item' href=''>
  34. <i class='icon-comment'></i>
  35. </a>
  36. </li>
  37. <li>
  38. <a class='list-item' href=''>
  39. <i class='icon-sitemap'></i>
  40. </a>
  41. </li>
  42. <li>
  43. <a class='list-item' href=''>
  44. <i class='icon-thumbs-up'></i>
  45. </a>
  46. </li>
  47. <li>
  48. <a class='list-item' href=''>
  49. <i class='icon-tumblr'></i>
  50. </a>
  51. </li>
  52. </ul>

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

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

  1. ul {
  2. position: relative;
  3. -webkit-transform: rotate(-35deg) skew(20deg, 5deg);
  4. -moz-transform: rotate(-35deg) skew(20deg, 5deg);
  5. -ms-transform: rotate(-35deg) skew(20deg, 5deg);
  6. -o-transform: rotate(-35deg) skew(20deg, 5deg);
  7. transform: rotate(-35deg) skew(20deg, 5deg);
  8. }

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

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

  1. .list-item {
  2. background: #000000;
  3. color: #575757;
  4. text-align: center;
  5. height: 2.5em;
  6. width: 4em;
  7. vertical-align: middle;
  8. line-height: 2.5em;
  9. border-bottom: 1px solid #060606;
  10. position: relative;
  11. display: block;
  12. text-decoration: none;
  13. -webkit-box-shadow: -2em 1.5em 0 #e1e1e1;
  14. -moz-box-shadow: -2em 1.5em 0 #e1e1e1;
  15. box-shadow: -2em 1.5em 0 #e1e1e1;
  16. -webkit-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  17. -moz-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  18. -o-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  19. transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  20. }
  21. .list-item:hover {
  22. background: #ff6e42;
  23. color: #fffcfb;
  24. top: -0.5em;
  25. left: 0.5em;
  26. -webkit-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  27. -moz-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  28. -o-transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  29. transition: top 0.25s linear, left 0.25s linear, background 0.1s linear, color 0.1s linear;
  30. -webkit-box-shadow: -2em 2em 0 #e1e1e1;
  31. -moz-box-shadow: -2em 2em 0 #e1e1e1;
  32. box-shadow: -2em 2em 0 #e1e1e1;
  33. }
  34. .list-item:hover:before, .list-item:hover:after {
  35. -webkit-transition: all 0.25s linear;
  36. -moz-transition: all 0.25s linear;
  37. -o-transition: all 0.25s linear;
  38. transition: all 0.25s linear;
  39. }
  40. .list-item:hover:before {
  41. background: #b65234;
  42. width: 1em;
  43. top: 0.5em;
  44. left: -1em;
  45. }
  46. .list-item:hover:after {
  47. background: #b65234;
  48. width: 1em;
  49. bottom: -2.5em;
  50. left: 1em;
  51. height: 4em;
  52. }
  53. .list-item:before, .list-item:after {
  54. -webkit-transition: all 0.25s linear;
  55. -moz-transition: all 0.25s linear;
  56. -o-transition: all 0.25s linear;
  57. transition: all 0.25s linear;
  58. }
  59. .list-item:after {
  60. content: "";
  61. position: absolute;
  62. height: 4em;
  63. background: #181818;
  64. width: 0.5em;
  65. bottom: -2.25em;
  66. left: 1.5em;
  67. -webkit-transform: rotate(90deg) skew(0deg, 45deg);
  68. -moz-transform: rotate(90deg) skew(0deg, 45deg);
  69. -ms-transform: rotate(90deg) skew(0deg, 45deg);
  70. -o-transform: rotate(90deg) skew(0deg, 45deg);
  71. transform: rotate(90deg) skew(0deg, 45deg);
  72. }
  73. .list-item:before {
  74. content: "";
  75. position: absolute;
  76. height: 2.5em;
  77. background: #121212;
  78. width: 0.5em;
  79. top: 0.215em;
  80. left: -0.45em;
  81. -webkit-transform: skewY(-45deg);
  82. -moz-transform: skewY(-45deg);
  83. -ms-transform: skewY(-45deg);
  84. -o-transform: skewY(-45deg);
  85. transform: skewY(-45deg);
  86. }

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

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

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

一款非常棒的纯CSS3 3D菜单演示及制作教程的更多相关文章

  1. 7款外观迷人的HTML5/CSS3 3D按钮特效

    1.CSS3超酷3D弹性按钮 按钮实现非常简单 今天我又要向大家分享一款实现超级简单的CSS3 3D弹性按钮,它在鼠标按下时不仅从视觉上感受到3D立体的效果,而且更有弹性的动画特效,非常可爱. 在线演 ...

  2. 7款外观迷人的HTML5/CSS3 3D特效按钮特效

    下面我整理了7款外观都十分迷人的HTML5/CSS3 3D按钮特效,有几个还挺实用的,分享给大家. 1.CSS3超酷3D弹性按钮 按钮实现非常简单 之前我们分享过几款不错的CSS3 3D立体按钮,比如 ...

  3. 纯css3 3D图片立方体旋转动画特效

    纯css3 3D立方体模块,鼠标触碰,模块炸开,大立方体中套小立方体 效果展示 手机扫描二维码体验效果: 效果图如下: 源码下载:http://hovertree.com/h/bjaf/0qmul8g ...

  4. 19款绚丽实用的jQuery/CSS3侧边栏菜单

    jQuery作为一款主流的JavaScript前端开发框架,深受广告开发者的亲睐,同时jQuery有着不计其数的插件,特别是菜单插件更为丰富,本文将要为大家介绍20个绚丽而实用的jQuery侧边栏菜单 ...

  5. 11款样式新颖的 jQuery/CSS3 网页菜单

    今天为大家准备了11款样式风格挺不错的jQuery/CSS3网页菜单,主要包括面包屑菜单.下拉菜单.Tab菜单等,喜欢的朋友赶紧收藏,一起来看看这些菜单. 1.jQuery / CSS3多功能下拉菜单 ...

  6. 24个 HTML5 & CSS3 下拉菜单效果及制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...

  7. 8款超酷实用的CSS3 Tab菜单集合

    1.CSS3华丽的Tab菜单 带小图标动画 之前我们分享过一款非常出色的CSS3 Tab菜单HTML5 SVG Tab滑块菜单,结合SVG,Tab菜单实现非常灵活.今天我们要再来分享一款基于CSS3的 ...

  8. 简单3D翻页相册制作教程

    3D效果看起来总是要比平面的图形看起来视觉效果要好的多,今天来教大家制作简单的3D翻页效果的视频. 视频预览链接:https://v.youku.com/v_show/id_XMzgxOTY5NzQz ...

  9. 7款效果惊人的HTML5/CSS3应用

    今天是周末,我为大家收集7个比较经典的HTML5/CSS3应用,每一个都提供源代码,效果非常惊人. 1.CSS3/jQuery创意盒子动画菜单 作为前端开发者,各种各样的jQuery菜单见过不少,这款 ...

随机推荐

  1. 小代码编写神器:LINQPad 使用入门

    原文:小代码编写神器:LINQPad 使用入门 一:概述 1:想查看程序运行结果,又不想启动 VS 怎么办? 2:想测试下自己的 C# 能力,不使用 VS 的智能感知,怎么办? 那么,我们有一个选择, ...

  2. UVA 1291 Dance Dance Revolution(DP)

    意甲冠军:跳舞机有一个上5积分,分别central, top, bottom, left, right分,区区足站立还是需要1点物理,从一个单纯的脚central点上须要2点体力,从一个点上移动到相邻 ...

  3. [Android 4.4.4] 泛泰A870 通过刷第三版 Mokee4.4.4 KTU84P 20140626 RC2.1 by syhost

    主题及注意事项请访问以前的版本: http://blog.csdn.net/syhost/article/details/29931291 此RC2.1版比RC2.0改进的地方: 1. Mokee本身 ...

  4. MySQL性能、监控与灾难恢复

    原文:MySQL性能.监控与灾难恢复 监控方案:     up.time    http://www.uptimesoftware.com/    收费     Cacti        http:/ ...

  5. /dev/shm(转)

    引用网上:/dev/shm首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 你可以通过这 ...

  6. KindEditor参数具体解释

    width 编辑器的宽度.能够设置px或%.比textarea输入框样式表宽度优先度高. 数据类型: String 默认值: textarea输入框的宽度 演示样例: K.create('#id',  ...

  7. BC 2015在百度之星程序设计大赛 - 预赛(1)(矩形区域-旋转卡)

    矩形区域 Accepts: 717 Submissions: 1619 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...

  8. iOS_20_微博的骨架结构

    最后效果图: BeyondViewController.m // // BeyondViewController.m // 20_帅哥no微博 // // Created by beyond on 1 ...

  9. 随着MapReduce job实现去加重,多种输出文件夹

    总结以往的工作中遇到的一个问题. 背景: 操作和维护与scribe从apacheserver一再被推到日志记录,所以在这里ETL处理正在进行的重.有根据业务的输出类型是用于多文件夹一个需求.方便挂分区 ...

  10. Repository、IUnitOfWork

    Repository.IUnitOfWork 在领域层和应用服务层之间的代码分布与实现 本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里 ...