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 相关文章推荐
全面解析CSS Media媒体查询使用操作(推荐)
Aug 15 HTML / CSS
使用CSS3和Checkbox实现JQuery的一些效果
Aug 03 HTML / CSS
css3 中的新特性加强记忆详解
Apr 16 HTML / CSS
CSS3 实现童年的纸飞机
May 05 HTML / CSS
html5构建触屏网站之touch事件介绍
Jan 07 HTML / CSS
HTML5 Canvas draw方法制作动画效果示例
Jul 11 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
html5 更新图片颜色示例代码
Jul 29 HTML / CSS
详解HTML5中div和section以及article的区别
Jul 14 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
Feb 22 HTML / CSS
用html5绘制折线图的实例代码
Mar 25 HTML / CSS
flex弹性布局详解
Mar 20 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常用处理静态操作类
2015/04/03 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
解析Python中while true的使用
2015/10/13 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
Python如何实现单例模式
2016/06/03 面试题
写给女朋友的道歉信
2014/01/08 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
公司员工离职证明书
2014/10/04 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
公务员处分决定书
2015/06/25 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
Python re.sub 反向引用的实现
2021/07/07 Python
Redis实现一个账号只能登录一个设备
2022/04/19 Redis