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

原文:一款非常棒的纯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的动画特性让菜单项背景色渐变,形成凸起的效果。

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

时间: 2024-10-27 07:03:33

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

8款帅酷的HTML5/CSS3 3D动画、图片、菜单应用

今天要给大家分享8款帅酷的HTML5/CSS3应用,它们中包括很酷的HTML5 3D动画应用,也包括实用的CSS3图片.菜单.进度条等插件,一起来看看吧. 1.HTML5 Canvas火焰燃烧动画 如同掉落的火球这次要分享的是一款超级绚丽的HTML5火焰动画,画面上是一个熊熊燃烧的小火球,小球燃烧的火焰非常逼真,会比较消耗CPU.另外这个动画是在HTML5 Canvas上实现的,修改起来也非常灵活.之前也分享过几款HTML5火焰动画,像这款HTML5 Canvas火焰闪烁动画. html5-ca

Illustrator创建3D的饼干小人制作教程分享

给各位Illustrator软件的使用者们来详细的解析分享一下创建3D的饼干小人的制作教程. 教程分享: 1.创建一个新的工程 启动Illustrator,然后使用文件下面的创建新文件来创建一个新的文件.输入文件名,设置文件尺寸,选择以像素为单位,颜色模式为RGB.确保使新建图像与像素网格对齐没选中. 接下来,在编辑>首选项>常规里设置键盘增量1PX(MAC在文件前面的Illustrator里找到首选项,译者说,原教程这里写的没有顾及MAC用户,让我好一顿寻找),同时在单位里设置和下面的图片一

PS CS6淘宝产品活动广告3D立体字效设计制作教程

本文介绍用PhotoShop CS6制作淘宝上常用的一款广告字效,制作方法很简单,喜欢的可以学习一下!         注 :更多精彩教程请关注三联photoshop教程栏目,三联PS 群:249667984欢迎你的加入 分类: PS文字教程

Illustrator设计哥特式3D文字效果制作教程分享

给各位Illustrator软件的使用者们来详细的解析分享一下设计哥特式3D文字效果的制作教程. 教程分享:     最终效果:   好了,以上的信息就是小编给各位Illustrator的这一款软件的使用者们带来的详细的设计哥特式3D文字效果的制作教程解析分享的全部内容了,各位看到这里的使用者们,小编相信大家现在是非常的清楚了具体制作方法了吧,那么各位就快去按照小编上面的教程去绘制充满中世纪哥特式风情文字吧.

Illustrator设计超酷的3D海报字体制作教程分享

给各位Illustrator软件的使用者们来详细的解析分享一下设计超酷的3D海报字体的制作教程. 教程分享:   好了,以上的信息就是小编给各位Illustrator的这一款软件的使用者们带来的详细的设计超酷的3D海报字体的制作教程解析分享的全部内容了,各位使用者们看到这里的使用者们小编相信大家看到这里是非常的清楚了制作方法了吧,那么各位就快去按照小编上面分享的教程自己去尝试着制作一下吧.

Illustrator简单实现3D字体效果制作教程

给各位Illustrator软件的使用者们来详细的解析分享一下简单实现3D字体效果的制作教程. 教程分享:     怎么实现图中的文字效果!简单!打开吃饭的东西!贱一个!   然后给字加个颜色!注意叠放的层次!亮的最上面,跟你要的效果有关!   然后重点来了!用混合工具!知道什么是混合工具不!   就是他了!双击一下   弹出平滑颜色!没错!你差不多就已经成功了! 点击确定! 用你的鼠标依次去点吧!点一下!   点两下!   是不是很高大上!很牛b呀! 麻麻再也不用担心我不会做3D字了!就是这么

利用纯CSS3实现超立体的3D图片侧翻倾斜效果

原文:利用纯CSS3实现超立体的3D图片侧翻倾斜效果 上午的时候我在jQuery论坛上看到网友分享的一款CSS3 3D图片侧翻倾斜特效,觉得效果非常棒,其实话说回来,这玩意儿的实现真的非常简单,主要是创意不错.先来看看效果图. 如何,看上去挺不错吧,倾斜.阴影,让一张很普通的图片变得如此霸气. 另外你也可以在这里查看DEMO演示,鼠标滑过图片时会出现这样的效果. 那么接下来我们分析一下源码吧,显示html代码,非常简单: <div onclick=""> <figur

纯CSS3实现超立体的3D图片侧翻倾斜效果

我在jQuery论坛上看到网友分享的一款CSS3 3D图片侧翻倾斜特效,觉得效果非常棒,其实话说回来,这玩意儿的实现真的非常简单,主要是创意不错.先来看看效果图. 如何,看上去挺不错吧,倾斜.阴影,让一张很普通的图片变得如此霸气. 另外你也可以在这里查看DEMO演示,鼠标滑过图片时会出现这样的效果. 那么接下来我们分析一下源码吧,显示html代码,非常简单: <div onclick=""> <figure> <figcaption>Autumn,

纯CSS3彩色边线3D立体按钮制作教程

今天我们来分享一款利用纯CSS3实现的3D按钮,这款按钮的一个特点是有彩色的边线,这让整个按钮显得比较多姿多彩,没那么枯燥无趣.本文不仅可以让大家看到演示效果,而且我们把制作教程也分享出来,首先来看看效果图: 我们也可以在这里看到这些按钮的DEMO演示. 接下来就来分享一下制作教程以及源代码,按钮的源代码主要由HTML和CSS两部分代码组成,先来看看HTML代码: <button class="blue">     <div class="wrapper&q