css3实现超炫风车特效


Posted in HTML / CSS onNovember 12, 2014

前面讲过css3可以替代很多js实现的效果,其实很多时候纯css3甚至可以替代图片,直接用css3就可以画出一些简单的图片。虽然css3画出来的图片效果可能不如直接用图片的好,实现起来也比较复杂,最麻烦的是兼容性问题,不如图片来得直接实用。但是换一种思路去思考问题的解决办法往往能激发我们的灵感,也有助于我们学习css3。

下面给出的demo里会有用图片和纯css3实现的风车效果的对比。

先看看静态的效果图:

css3实现超炫风车特效

下面简单介绍一下我是如何用纯css3实现一个风车的动画效果的,

1.画出风车的柱子

我们可以看到风车的柱子是一个等边的梯形,通过width,height属性配合border我们可以实现很多几何图形,如三角形,梯形等等,大家可以参照下面梯形的实现方法自己试试其他图形的实现。

复制代码
代码如下:

display: block;
height: 0;
width: 4px;
border-width: 0 4px 80px 4px;
border-style: none solid solid;
border-color: transparent transparent white;

效果图

css3实现超炫风车特效

2.画风车的轴

这一步比较简单,用border-radius圆角属性可以轻松实现。

width:4px;  
height:4px;  
border:3px #fff solid;  
background:#a5cad6;  
border-radius:5px; 
效果图

css3实现超炫风车特效

3.画风车的叶子

风车叶子的实现与柱子的实现原理相同,只不过是吧梯形倒过来了。

height: 0;  
width: 2px;  
border-width: 50px 2px 0px 2px;  
border-style: solid solid none;  
border-color: white transparent transparent ; 
4.定位风车页

这里使用css3中transform的rotate(旋转)来实现,有一点要注意的是,使用rotate时先要用origin定位旋转的圆心,默认是元素的中心,这里我们要定位在元素的顶部。

-webkit-transform-origin:0px 0px;  
-webkit-transform:rotate(60deg); 
效果图

css3实现超炫风车特效

用上面的办法依次画出三个风车扇面,并且定位好角度。

5.实现扇页的动态效果

静态的风车画好了,接下来我们要做的就是让它动起来。

前面我们可以把扇页定位在轴心元素的子元素,这样我们只要实现轴心的转动效果就可以让扇页也跟着动起来了。

下面是动画的实现

@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}} 
把实现好的动画方法rotate放到我们的轴心元素中,扇页就可以动起来啦。

-webkit-animation: rotate 4s linear infinite; 
6.完善效果并实现兼容性

至此我们的风车已经基本上完成啦,前面的代码都是兼容webkit核心浏览器(chrome,safari),接下来实现对其他浏览器的兼容,并且加上一个鼠标悬浮加快转动的效果我们的风车就算完成啦。

css3的表现在各个浏览器下的表现不尽相同,chrome浏览器下效果最佳,safari下风车的柱子会有像素失真的问题(同是webkit核心,不知道为什么表现那么不一样),后续会尝试解决这个问题。

HTML / CSS 相关文章推荐
实例讲解CSS3中的border-radius属性
Aug 18 HTML / CSS
css3利用transform变形结合事件完成扇形导航
Oct 26 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
Feb 08 HTML / CSS
Canvas与Image互相转换示例代码
Aug 09 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
Jul 02 HTML / CSS
html5使用canvas画一条线
Dec 15 HTML / CSS
基于HTML5代码实现折叠菜单附源码下载
Nov 27 HTML / CSS
HTML5+css3:3D旋转木马效果相册
Jan 03 HTML / CSS
详解canvas绘制多张图的排列顺序问题
Jan 21 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
Sep 30 HTML / CSS
canvas实现滑动验证的实现示例
Aug 11 HTML / CSS
能用CSS实现的就不要麻烦JavaScript了
Oct 05 HTML / CSS
用CSS3来实现社交分享按钮
Nov 11 #HTML / CSS
推荐一些比较有用的css3新属性
Nov 11 #HTML / CSS
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
Nov 11 #HTML / CSS
实例教程 一款纯css3实现的数字统计游戏
Nov 10 #HTML / CSS
一款纯css3实现的鼠标经过按钮特效教程
Nov 09 #HTML / CSS
一款纯css3实现简单的checkbox复选框和radio单选框
Nov 05 #HTML / CSS
一款CSS3实现多功能下拉菜单(带分享按)的教程
Nov 05 #HTML / CSS
You might like
PHP默认安装产生系统漏洞
2006/10/09 PHP
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
关于js datetime的那点事
2011/11/15 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
python查看微信好友是否删除自己
2016/12/19 Python
python监控进程脚本
2018/04/12 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
python列表推导式操作解析
2019/11/26 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
《北大荒的秋天》教学反思
2014/04/14 职场文书
工程承诺书怎么写
2014/05/24 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2015年新农合工作总结
2015/03/30 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang