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 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
css3.0新属性效果在ie下的解决方案
May 10 HTML / CSS
CSS3悬停效果案例应用
Nov 21 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
Apr 04 HTML / CSS
CSS实现进度条和订单进度条的示例
Nov 05 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
Jul 22 HTML / CSS
深入解析HTML5的IndexedDB索引数据库
Sep 14 HTML / CSS
小程序canvas中文字设置居中锚点
Apr 16 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
Sep 30 HTML / CSS
在HTML中引入CSS的几种方式介绍
Dec 06 HTML / CSS
html粘性页脚的具体使用
Jan 18 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 表单数据的获取代码
2009/03/10 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
Python callable内置函数原理解析
2020/03/05 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
Python分类测试代码实例汇总
2020/07/23 Python
物流仓储实习自我鉴定
2013/09/25 职场文书
药学专业毕业生求职信
2013/10/20 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
自我鉴定注意事项
2014/01/19 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
卖车协议书
2014/04/21 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
中小企业员工手册范本
2015/05/14 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
Python使用openpyxl批量处理数据
2021/06/23 Python
html5表单的required属性使用
2021/07/07 HTML / CSS