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

简介: 原文:一款非常棒的纯CSS3 3D菜单演示及制作教程这段时间比较忙,很久没在这里分享一些漂亮的HTML5和CSS3资源了,今天起的早,看到一款很不错的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的动画特性让菜单项背景色渐变,形成凸起的效果。

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

目录
相关文章
|
前端开发
导航新风尚:CSS梯形设计,让网站菜单不再单调!
导航新风尚:CSS梯形设计,让网站菜单不再单调!
|
前端开发
基于CSS3+Bootstrap实现的侧边栏后台菜单源码
CSS3+Bootstrap实现的侧边栏后台菜单特效源码是一段基于Bootstrap和图标库制作的侧边栏菜单后台管理页面效果代码,简洁大方、易于管理,是一段非常不错的后台菜单栏效果,欢迎对此段代码感兴趣的朋友前来下载。
271 54
css3实现3D数字时钟滚动特效代码
css3实现3D数字时钟滚动特效代码
524 18
|
JavaScript 前端开发
jQuery和CSS3滑动展开菜单按钮插件
这是一款jQuery和CSS3滑动展开菜单按钮插件。该滑动展开菜单按钮在用户点击主菜单按钮之后,子菜单以滑动的方式依次展开
464 21
|
数据采集 存储 前端开发
Puppeteer教程:使用CSS选择器点击和爬取动态数据
本文介绍如何使用Puppeteer结合CSS选择器爬取动态网页数据,以贝壳网的二手房价格为例,通过代理IP提高爬虫成功率。文章详细讲解了Puppeteer的安装和配置、代码实现及数据趋势分析,帮助读者掌握动态网页爬取技术。
710 1
Puppeteer教程:使用CSS选择器点击和爬取动态数据
|
前端开发 JavaScript API
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
本文通过构建一个 3D 翻卡动画深入探讨了 CSS Houdini 的强大功能,展示了如何通过 Worklets、自定义属性、Paint API 等扩展 CSS 的能力,实现高度灵活的动画效果。文章首先介绍了 Houdini 的核心概念与 API,并通过构建一个动态星空背景、圆形进度条以及交互式 3D 翻卡动画的实际示例,展示了如何利用 CSS Houdini 赋予网页设计更多创造力。最后,还演示了如何将这种 3D 翻卡效果集成到公司网站中,提升用户体验。CSS Houdini 的创新能力为网页设计带来了前所未有的灵活性,推动了前端开发迈向新的高度。
348 0
探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画
|
前端开发
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
|
前端开发
vue3 【提效】使用 CSS 框架 UnoCSS 实用教程
vue3 【提效】使用 CSS 框架 UnoCSS 实用教程
1555 1
|
前端开发 JavaScript
【HTML+CSS+JavaScript】3d-boxes-background
【HTML+CSS+JavaScript】3d-boxes-background
235 0
|
前端开发 JavaScript
前端 CSS 经典:3D Hover Effect 效果
前端 CSS 经典:3D Hover Effect 效果
316 0

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    521
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    405
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    399
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    261
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    514
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    687
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1240
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    278
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1029
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    478