纯CSS实现菜单、导航栏的3D翻转动画效果


Posted in HTML / CSS onApril 23, 2014

我曾经向大家展示过闪光的logo,燃烧的火狐狸,多重嵌套动画等例子,今天,我们将要制作一个简单但非常酷的3D翻转菜单。大家可以先看看实际效果,下面有效果截图。

效果图:

纯CSS实现菜单、导航栏的3D翻转动画效果

HTML代码

HTML内容是一些用作菜单的链接,我们在里面添加了一些额外的SPAN标记来帮助实现3D效果:

复制代码
代码如下:

<ul class="block-menu lazy ">
<li><a href="/" class="three-d lazy ">
Home
<span aria-hidden="true" class="three-d-box lazy ">
<span class="front lazy ">Home</span>
<span class="back lazy ">Home</span>
</span>
</a></li>
<li><a href="/demos" class="three-d lazy ">
Demos
<span aria-hidden="true" class="three-d-box lazy ">
<span class="front lazy ">Demos</span>
<span class="back lazy ">Demos</span>
</span>
</a></li>
<!-- more items here -->
</ul>

在A链接标记旁边是一系列的SPAN元素,动画演示过程中,它将用来表现3D立方体的“正面”和“背面”。这些SPAN里的文字和A链接里的文字是一致的。

CSS代码

这个动画的过程就是实现3D变换和元素位置变化。但实际上A链接是没有移动的,动的是SPAN标签,而且是最外层的SPAN标签,内部的SPAN标签被初始化在它的位置上,以后就不做任何变动。每个元素都可以向上翻,并要翻回来,我们使用的是CSS transforms。

复制代码
代码如下:

/* basic menu styles */
.block-menu {
display: block;
background: #000;
}</p> <p>.block-menu li {
display: inline-block;
}
.block-menu li a {
color: #fff;
display: block;
text-decoration: none;
font-family: 'Passion One', Arial, sans-serif;
font-smoothing: antialiased;
text-transform: uppercase;
overflow: visible;
line-height: 20px;
font-size: 24px;
padding: 15px 10px;
}
/* animation domination */
.three-d {
perspective: 200px;
transition: all .07s linear;
position: relative;
cursor: pointer;
}
/* complete the animation! */
.three-d:hover .three-d-box,
.three-d:focus .three-d-box {
transform: translateZ(-25px) rotateX(90deg);
}
.three-d-box {
transition: all .3s ease-out;
transform: translatez(-25px);
transform-style: preserve-3d;
pointer-events: none;
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
}
/*
put the "front" and "back" elements into place with CSS transforms,
specifically translation and translatez
*/
.front {
transform: rotatex(0deg) translatez(25px);
}
.back {
transform: rotatex(-90deg) translatez(25px);
color: #ffe7c4;
}
.front, .back {
display: block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: black;
padding: 15px 10px;
color: white;
pointer-events: none;
box-sizing: border-box;
}

如果你想看看正面和反面各自是如何旋转移动的,我强烈推荐你们试一下,将其中的一个设置为display: none,让鼠标悬停在它们上面,你将会看到它们各自将完成整个动画的哪一部分动作。

这种实现方式的唯一的缺点是有重复的菜单名称,虽然技术上是隐藏看不出来的,但从代码质量上说存在代码重复问题。然而,从视觉效果上看,它的动画非常顺滑,毫无瑕疵。没有JavaScript,Flash或canvas技术,只是一些简单的CSS标记,这技术CSS动画….一种我们web程序员都应该感谢的技术。

HTML / CSS 相关文章推荐
CSS3支持IE6, 7, and 8的边框border属性
Dec 28 HTML / CSS
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
Dec 30 HTML / CSS
css3实例教程 一款纯css3实现的环形导航菜单
Oct 20 HTML / CSS
一款纯css3实现的鼠标悬停动画按钮
Dec 29 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
CSS3实现文本垂直排列的方法
Jul 10 HTML / CSS
纯css3实现思维导图样式示例
Nov 01 HTML / CSS
Html5中的桌面通知Notification的实现
Sep 25 HTML / CSS
利用三角函数在canvas上画虚线的方法
Jan 11 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
Apr 24 HTML / CSS
关于iframe跨域使用postMessage的实现
Oct 29 HTML / CSS
canvas简单连线动画的实现代码
Feb 04 HTML / CSS
css3和jquery实现自定义checkbox和radiobox组件
Apr 22 #HTML / CSS
css3实现垂直下拉动画菜单示例
Apr 22 #HTML / CSS
纯CSS改变webkit内核浏览器的滚动条样式
Apr 17 #HTML / CSS
css3实现超立体3D图片侧翻倾斜效果
Apr 16 #HTML / CSS
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
Apr 16 #HTML / CSS
纯CSS实现的大小渐变、渐远效果
Apr 15 #HTML / CSS
CSS中几个与换行有关的属性简明总结
Apr 15 #HTML / CSS
You might like
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
详解php反序列化
2020/06/10 PHP
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
python生成随机验证码(中文验证码)示例
2014/04/03 Python
Python实现的二维码生成小软件
2014/07/11 Python
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
python实现员工管理系统
2018/01/11 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Python属性和内建属性实例解析
2020/01/14 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
Python中无限循环需要什么条件
2020/05/27 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
财经学院自荐信范文
2014/02/02 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
综治宣传月活动总结
2014/04/28 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
暗恋桃花源观后感
2015/06/12 职场文书