今天学习了一个css实现弹性菜单的效果,感觉还不错。

闲话不说,直接上代码....

下面是页面的HTML代码:

 1 <div class="menu">
 2         <div class="btn btn-trigger">
 3             <span class="line"></span>
 4         </div>
 5         <div class="icons">
 6             <div class="rotater">
 7               <div class="btn btn-icon">
 8                 <i class="fa fa-codepen"></i>
 9               </div>
10             </div>
11             <div class="rotater">
12               <div class="btn btn-icon">
13                 <i class="fa fa-facebook"></i>
14               </div>
15             </div>
16             <div class="rotater">
17               <div class="btn btn-icon">
18                 <i class="fa fa-google-plus"></i>
19               </div>
20             </div>
21             <div class="rotater">
22               <div class="btn btn-icon">
23                 <i class="fa fa-twitter"></i>
24               </div>
25             </div>
26             <div class="rotater">
27               <div class="btn btn-icon">
28                 <i class="fa fa-dribbble"></i>
29               </div>
30             </div>
31             <div class="rotater">
32               <div class="btn btn-icon">
33                 <i class="fa fa-linkedin"></i>
34               </div>
35             </div>
36             <div class="rotater">
37               <div class="btn btn-icon">
38                 <i class="fa fa-github"></i>
39               </div>
40             </div>
41             <div class="rotater">
42               <div class="btn btn-icon">
43                 <i class="fa fa-behance"></i>
44               </div>
45             </div>
46         </div>
47     </div>

View Code

其中使用了font-awesome,在head里面添加

<link rel='stylesheet prefetch' href='http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css'>

就可以显示出图标。

进入正题,下面是CSS代码。

@charset "utf-8";
/* CSS Document */
*, *:before, *:after {box-sizing: border-box;margin: 0;padding: 0;
}
html, body {height: 100%;overflow: hidden;
}
body{/* 渐变三个参数:1.方向 2.起点颜色 3.终点颜色 */background:-webkit-linear-gradient(45deg, #e10522 0%, rgba(225, 5, 34, 0) 70%), -webkit-linear-gradient(315deg, #939 10%, rgba(255,62,18, 0) 80%),-webkit-linear-gradient(225deg, #0adbd8 10%, rgba(10, 219, 216, 0) 80%), -webkit-linear-gradient(135deg, #09f505 100%, rgba(9, 245, 5, 0) 70%);background:linear-gradient(45deg, #e10522 0%, rgba(225, 5, 34, 0) 70%), linear-gradient(315deg, #939 10%, rgba(255,62,18, 0) 80%),linear-gradient(225deg, #0adbd8 10%, rgba(10, 219, 216, 0) 80%), linear-gradient(135deg, #09f505 100%, rgba(9, 245, 5, 0) 70%);
}
.absolute-center, .menu, .menu .btn .fa, .menu .btn-trigger .line{position:absolute;top:50%;left:50%;/* 指定对象在X、Y轴上的平移 */-webkit-transform: translateX(-50%) translateY(-50%);transform: translateX(-50%) translateY(-50%);
}
.menu{width:5em;height:5em;
}
.menu .btn{position: absolute;top: 0;left: 0;width: 100%;height: 100%;border-radius: 50%;background: rgba(255, 255, 255, 0.15);opacity:0;cursor:pointer;-webkit-transition: opacity 1s, z-index 0.3s, -webkit-transform 1s;transition:opacity 1s, z-index 0.3s, -webkit-transform 1s;transition:opacity 1s, z-index 0.3s, transform 1s;transition:opacity 1s, z-index 0.3s, transform 1s, -webkit-transform 1s;-webkit-transform: translateX(0);transform:translateX(0);
}
.menu .btn .fa{font-size:3em;-webkit-transition: color 0.3s;transition: color 0.3s;
}
.menu .btn:hover .fa{color: rgba(255, 255, 255, 0.7);
}
.menu .btn.btn-trigger{opacity:1;z-index:100;cursor: pointer;-webkit-transition: -webkit-transform 0.3s;transition:-webkit-transform 0.3s;transition: transform 0.3s;
}
.menu .btn.btn-trigger:hover{-webkit-transform: scale(1.2);transform: scale(1.2);
}
.menu .btn-trigger:hover .line {background-color: rgba(255, 255, 255, 0.7);
}
.menu .btn-trigger:hover .line:before, .menu .btn-trigger:hover .line:after {background-color: rgba(255, 255, 255, 0.7);
}
.menu .btn-trigger .line{height:6px;width:60%;background: #000;border-radius: 6px;-webkit-transition: background-color 0.3s, height 0.3s, top 0.3s;transition: background-color 0.3s, height 0.3s, top 0.3s;
}
.menu .btn-trigger .line:before, .menu .btn-trigger .line:after {content: "";display: block;position: absolute;left: 0;width: 100%;height: 6px;background: #000;border-radius: 6px;-webkit-transition: background-color 0.3s, -webkit-transform 0.3s;transition: background-color 0.3s, -webkit-transform 0.3s;transition: background-color 0.3s, transform 0.3s;transition: background-color 0.3s, transform 0.3s, -webkit-transform 0.3s;
}
.menu .btn-trigger .line:before {top: -12px;-webkit-transform-origin: 15% 100%;transform-origin: 15% 100%;
}
.menu .btn-trigger .line:after {top: 12px;-webkit-transform-origin: 25% 30%;transform-origin: 25% 30%;
}
.menu .rotater{position: absolute;top: 0;left: 0;width: 100%;height: 100%;
}
.menu.active .btn-icon{opacity:1;z-index:50;
}
.menu.active .btn-trigger .line{height:0;top:45%;
}
.menu.active .btn-trigger .line:before{-webkit-transform: rotate(45deg);transform: rotate(45deg);width:110%;
}
.menu.active .btn-trigger .line:after{-webkit-transform: rotate(-45deg);transform: rotate(-45deg);width:110%;
}
/* 为每一个菜单添加旋转和平移效果 */
.rotater:nth-child(1){-webkit-transform: rotate(-45deg);transform: rotate(-45deg);
}
.menu.active .rotater:nth-child(1) .btn-icon{-webkit-transform: translateY(-10em) rotate(45deg);transform: translateY(-10em) rotate(45deg);
}
.rotater:nth-child(2){-webkit-transform: rotate(0deg);transform: rotate(0deg);
}
.menu.active .rotater:nth-child(2) .btn-icon{-webkit-transform: translateY(-10em);transform: translateY(-10em);
}
.rotater:nth-child(3){-webkit-transform: rotate(45deg);transform: rotate(45deg);
}
.menu.active .rotater:nth-child(3) .btn-icon{-webkit-transform: translateY(-10em) rotate(-45deg);transform: translateY(-10em) rotate(-45deg);
}
.rotater:nth-child(4){-webkit-transform: rotate(90deg);transform: rotate(90deg);
}
.menu.active .rotater:nth-child(4) .btn-icon{-webkit-transform: translateY(-10em) rotate(-90deg);transform: translateY(-10em) rotate(-90deg);
}
.rotater:nth-child(5){-webkit-transform: rotate(135deg);transform: rotate(135deg);
}
.menu.active .rotater:nth-child(5) .btn-icon{-webkit-transform: translateY(-10em) rotate(-135deg);transform: translateY(-10em) rotate(-135deg);
}
.rotater:nth-child(6){-webkit-transform: rotate(180deg);transform: rotate(180deg);
}
.menu.active .rotater:nth-child(6) .btn-icon{-webkit-transform: translateY(-10em) rotate(-180deg);transform: translateY(-10em) rotate(-180deg);
}
.rotater:nth-child(7){-webkit-transform: rotate(225deg);transform: rotate(225deg);
}
.menu.active .rotater:nth-child(7) .btn-icon{-webkit-transform: translateY(-10em) rotate(-225deg);transform: translateY(-10em) rotate(-225deg);
}
.rotater:nth-child(8){-webkit-transform: rotate(270deg);transform: rotate(270deg);
}
.menu.active .rotater:nth-child(8) .btn-icon{-webkit-transform: translateY(-10em) rotate(-270deg);transform: translateY(-10em) rotate(-270deg);
}

  1 body{
  2     /* 渐变三个参数:1.方向 2.起点颜色 3.终点颜色 */
  3     background:-webkit-linear-gradient(45deg, #e10522 0%, rgba(225, 5, 34, 0) 70%), -webkit-linear-gradient(315deg, #939 10%, rgba(255,62,18, 0) 80%),
  4         -webkit-linear-gradient(225deg, #0adbd8 10%, rgba(10, 219, 216, 0) 80%), -webkit-linear-gradient(135deg, #09f505 100%, rgba(9, 245, 5, 0) 70%);
  5     background:linear-gradient(45deg, #e10522 0%, rgba(225, 5, 34, 0) 70%), linear-gradient(315deg, #939 10%, rgba(255,62,18, 0) 80%),
  6         linear-gradient(225deg, #0adbd8 10%, rgba(10, 219, 216, 0) 80%), linear-gradient(135deg, #09f505 100%, rgba(9, 245, 5, 0) 70%);
  7 }
  8 .absolute-center, .menu, .menu .btn .fa, .menu .btn-trigger .line{
  9     position:absolute;
 10     top:50%;
 11     left:50%;
 12     /* 指定对象在X、Y轴上的平移 */
 13     -webkit-transform: translateX(-50%) translateY(-50%);
 14             transform: translateX(-50%) translateY(-50%);
 15 }
 16 .menu{
 17     width:5em;
 18     height:5em;
 19 }
 20 .menu .btn{
 21     position: absolute;
 22     top: 0;
 23     left: 0;
 24     width: 100%;
 25     height: 100%;
 26     border-radius: 50%;
 27     background: rgba(255, 255, 255, 0.15);
 28     opacity:0;
 29     cursor:pointer;
 30     -webkit-transition: opacity 1s, z-index 0.3s, -webkit-transform 1s;
 31     transition:opacity 1s, z-index 0.3s, -webkit-transform 1s;
 32     transition:opacity 1s, z-index 0.3s, transform 1s;
 33     transition:opacity 1s, z-index 0.3s, transform 1s, -webkit-transform 1s;
 34     -webkit-transform: translateX(0);
 35             transform:translateX(0);
 36 }
 37 .menu .btn .fa{
 38     font-size:3em;
 39     -webkit-transition: color 0.3s;
 40             transition: color 0.3s;
 41 }
 42 .menu .btn:hover .fa{
 43     color: rgba(255, 255, 255, 0.7);
 44 }
 45 .menu .btn.btn-trigger{
 46     opacity:1;
 47     z-index:100;
 48     cursor: pointer;
 49     -webkit-transition: -webkit-transform 0.3s;
 50             transition:-webkit-transform 0.3s;
 51             transition: transform 0.3s;
 52 }
 53 .menu .btn.btn-trigger:hover{
 54     -webkit-transform: scale(1.2);
 55             transform: scale(1.2);
 56 }
 57 .menu .btn-trigger:hover .line {
 58     background-color: rgba(255, 255, 255, 0.7);
 59 }
 60 .menu .btn-trigger:hover .line:before, .menu .btn-trigger:hover .line:after {
 61     background-color: rgba(255, 255, 255, 0.7);
 62 }
 63 .menu .btn-trigger .line{
 64     height:6px;
 65     width:60%;
 66     background: #000;
 67       border-radius: 6px;
 68     -webkit-transition: background-color 0.3s, height 0.3s, top 0.3s;
 69               transition: background-color 0.3s, height 0.3s, top 0.3s;
 70 }
 71 .menu .btn-trigger .line:before, .menu .btn-trigger .line:after {
 72     content: "";
 73     display: block;
 74     position: absolute;
 75     left: 0;
 76     width: 100%;
 77     height: 6px;
 78     background: #000;
 79     border-radius: 6px;
 80     -webkit-transition: background-color 0.3s, -webkit-transform 0.3s;
 81             transition: background-color 0.3s, -webkit-transform 0.3s;
 82             transition: background-color 0.3s, transform 0.3s;
 83             transition: background-color 0.3s, transform 0.3s, -webkit-transform 0.3s;
 84 }
 85 .menu .btn-trigger .line:before {
 86     top: -12px;
 87     -webkit-transform-origin: 15% 100%;
 88             transform-origin: 15% 100%;
 89 }
 90 .menu .btn-trigger .line:after {
 91     top: 12px;
 92     -webkit-transform-origin: 25% 30%;
 93             transform-origin: 25% 30%;
 94 }
 95 .menu .rotater{
 96     position: absolute;
 97     top: 0;
 98     left: 0;
 99     width: 100%;
100     height: 100%;
101 }
102 .menu.active .btn-icon{
103     opacity:1;
104     z-index:50;
105 }
106 .menu.active .btn-trigger .line{
107     height:0;
108     top:45%;
109 }
110 .menu.active .btn-trigger .line:before{
111     -webkit-transform: rotate(45deg);
112             transform: rotate(45deg);
113     width:110%;
114 }
115 .menu.active .btn-trigger .line:after{
116     -webkit-transform: rotate(-45deg);
117             transform: rotate(-45deg);
118     width:110%;
119 }
120 /* 为每一个菜单添加旋转和平移效果 */
121 .rotater:nth-child(1){
122     -webkit-transform: rotate(-45deg);
123             transform: rotate(-45deg);
124 }
125 .menu.active .rotater:nth-child(1) .btn-icon{
126     -webkit-transform: translateY(-10em) rotate(45deg);
127             transform: translateY(-10em) rotate(45deg);
128 }
129 .rotater:nth-child(2){
130     -webkit-transform: rotate(0deg);
131             transform: rotate(0deg);
132 }
133 .menu.active .rotater:nth-child(2) .btn-icon{
134     -webkit-transform: translateY(-10em);
135             transform: translateY(-10em);
136 }
137 .rotater:nth-child(3){
138     -webkit-transform: rotate(45deg);
139             transform: rotate(45deg);
140 }
141 .menu.active .rotater:nth-child(3) .btn-icon{
142     -webkit-transform: translateY(-10em) rotate(-45deg);
143             transform: translateY(-10em) rotate(-45deg);
144 }
145 .rotater:nth-child(4){
146     -webkit-transform: rotate(90deg);
147             transform: rotate(90deg);
148 }
149 .menu.active .rotater:nth-child(4) .btn-icon{
150     -webkit-transform: translateY(-10em) rotate(-90deg);
151             transform: translateY(-10em) rotate(-90deg);
152 }
153 .rotater:nth-child(5){
154     -webkit-transform: rotate(135deg);
155             transform: rotate(135deg);
156 }
157 .menu.active .rotater:nth-child(5) .btn-icon{
158     -webkit-transform: translateY(-10em) rotate(-135deg);
159             transform: translateY(-10em) rotate(-135deg);
160 }
161 .rotater:nth-child(6){
162     -webkit-transform: rotate(180deg);
163             transform: rotate(180deg);
164 }
165 .menu.active .rotater:nth-child(6) .btn-icon{
166     -webkit-transform: translateY(-10em) rotate(-180deg);
167             transform: translateY(-10em) rotate(-180deg);
168 }
169 .rotater:nth-child(7){
170     -webkit-transform: rotate(225deg);
171             transform: rotate(225deg);
172 }
173 .menu.active .rotater:nth-child(7) .btn-icon{
174     -webkit-transform: translateY(-10em) rotate(-225deg);
175             transform: translateY(-10em) rotate(-225deg);
176 }
177 .rotater:nth-child(8){
178     -webkit-transform: rotate(270deg);
179             transform: rotate(270deg);
180 }
181 .menu.active .rotater:nth-child(8) .btn-icon{
182     -webkit-transform: translateY(-10em) rotate(-270deg);
183             transform: translateY(-10em) rotate(-270d

主要用到的css属性是transition和transform.

最后再添加一点js就可以实现效果。

<script>$('.btn-trigger').click(function() {$('.menu').toggleClass('active');});
</script>

转载于:https://www.cnblogs.com/twoegg/p/7614996.html

css动画之旅--弹性菜单效果相关推荐

  1. html页面 tab JS滑动切换,JS+CSS实现滑动切换tab菜单效果

    本文实例讲述了JS+CSS实现滑动切换tab菜单效果.分享给大家供大家参考.具体如下: 这是风格简单的一款JS+CSS滑动门特效代码,当鼠标滑过菜单的时候,二级菜单自动切换,鼠标不需要点击,滑动门效果 ...

  2. 用CSS3如何实现钟摆动画的导航栏菜单效果

    我们都知道,CSS3可以实现很多很酷的动画效果,而今天我们将与大家分享一期用CSS3制作的钟摆动画菜单效果,在这个动画中,我们主要采用CSS3来控制SVG图标的左右摆动效果. 首先,我们需要在HTML ...

  3. 如何用HTML和css实现简单的手风琴菜单效果,附带详细注释

    超完整的代码+详细注释,适合给小白做的简单的手风琴菜单实例 代码: <!DOCTYPE html> <html lang="en"><head> ...

  4. HTML+CSS+JavaScript实现下拉菜单效果

    实现思路: HTML 方面,导航栏的每个 <li> 元素里面包含 <a> 和 <ul> ,将 <li> 设置为相对定位, 将 <ul> 设置 ...

  5. html设定元素动画执行,CSS动画 _Animation 教程_W3cplus

    本文是为帮助您入门和熟悉CSS动画而编写的,使用它们来为您带来基于Web的接口以及为艺术带来生命.虽然W3C的CSS动画规范仍在修订中,但是如今它已经有大量的内容可以供我们使用了. 对我而言,CSS动 ...

  6. html如何自定义一个动画效果,30个纯css动画代码片段和效果演示

    开源代码已经迎来了一个新的web前端时代.初学者和专家都可以通过使用预构建的代码片段节省时间和压力.下面画廊由30个不同的片段与纯CSS创建动画效果. 所有这些代码片段都放在云IDE平台.这些weba ...

  7. html二级页面内容滑动,jQuery+CSS实现的网页二级下滑菜单效果

    本文实例讲述了jQuery+CSS实现的网页二级下滑菜单效果.分享给大家供大家参考.具体如下: 这是一款简洁型的 jQuery+CSS网页二级下滑菜单,练手写的,有需要的自己拿去美化吧,基本的动画效果 ...

  8. 过山车css动画,如何使用CSS实现过山车loader的动画效果

    本篇文章给大家带来的内容是关于如何使用CSS实现过山车loader的动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 代码解读 定义 dom,容器中包含 3 个元素, ...

  9. 旋转360 css 动画效果,使用CSS3动画属性实现360°无限循环旋转【代码片段】

    使用CSS3的animation动画属性实现360°无限循环旋转. 代码片段:   //图片路径自定义 CSS样式书写如下: #change{ position:absolute; right:200 ...

最新文章

  1. 植保口的面上项目共153项,系统总结
  2. wordpressPHP实现ajax评论,wordpress无刷新评论:无需插件ajax实现wordpress comment无刷新机制...
  3. sublime配置python开发环境_Sublime Text 配置Python3.7开发环境
  4. 关于nginx信号控制的“故障”案例
  5. c语言int val,c语言不定参数与printf函数的实现
  6. postgis数据库优化_PostgreSQL批量导入性能优化
  7. mysql centos 安装目录在哪_centos中如何查看mysql安装目录在哪
  8. 如何清空android ListView控件的内容
  9. ASP.NET MVC多语言 仿微软网站效果(转)
  10. java swt designerpdf_eclipse学习笔记!(4) ----- SWT Designer 下 SWT常用组件
  11. 方法的重载与重写_我们不一样,不一样,重写与重载
  12. nginx如何编译安装mysql_centos系统编译安装nginx+php环境另加独立mysql教程
  13. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_05-freemarker基础-List指令
  14. C#调用Onnx模型
  15. 计算机主机忘了密码怎么办,如果我忘记了笔记本计算机的开机密码怎么办
  16. JS的unshift()和shift()
  17. 【软考软件评测师】2015年下案例分析历年真题
  18. c语言程序填空改错题,C语言模拟改错填空编程题.doc
  19. C++《面向对象程序设计课程设计》
  20. oracle 创建sde,创建多个sde库

热门文章

  1. python利用递归函数实现斐波那契数列_Python递归及斐波那契数列
  2. 以下计算机网络的功能正确的,西工大18春《计算机网络》在线作业【参考答案】...
  3. linux电脑系统投到电视,教你如何在Linux操作系统下观看电视节目
  4. 张国栋 linux进程,张国栋(栋梁)造价定额设计:BIM技术应用于装配式建筑的优势...
  5. mysql 5.0 php_PHP 5.0的新特性
  6. 【windows】安装pytorch1.7.1-cpu版本的geometric过程记录
  7. Python 协程 asyncio 极简入门与爬虫实战
  8. 这样的奇技淫巧不可取,切记切记
  9. 科技公司最爱的 50 款开源工具,你都用过吗?
  10. python批量_python 中如何去执行批量的.py文件