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制作半透明边框(Facebox)类似渐变
Dec 09 HTML / CSS
纯HTML+CSS3制作导航菜单(附源码)
Apr 24 HTML / CSS
CSS3过渡transition效果实例介绍
May 03 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
Jun 23 HTML / CSS
纯CSS3制作的鼠标悬停时边框旋转
Jan 03 HTML / CSS
HTML5学习笔记之html5与传统html区别
Jan 06 HTML / CSS
iframe在移动端的缩放的示例代码
Oct 12 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
Aug 24 HTML / CSS
血轮眼轮回眼特效 html+css
Mar 31 HTML / CSS
background-position百分比原理详解
May 08 HTML / CSS
html+css实现分层金字塔的实例
Jun 02 HTML / CSS
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
Aug 23 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
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
jQuery $.each的用法说明
2010/03/22 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
创建Django项目图文实例详解
2019/06/06 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
python中四舍五入的正确打开方式
2021/01/18 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
土木工程专业自荐信
2013/10/04 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
毕业实习计划书
2015/01/16 职场文书