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 相关文章推荐
button在IE6/7下的黑边去除方案
Dec 24 HTML / CSS
CSS3+Sprite实现僵尸行走动画特效源码
Jan 27 HTML / CSS
CSS3 mask 遮罩的具体使用方法
Nov 03 HTML / CSS
CSS3实现酷炫的3D旋转透视效果
Nov 21 HTML / CSS
HTML5不支持标签和新增标签详解
Jun 27 HTML / CSS
基于canvas的骨骼动画的示例代码
Jun 12 HTML / CSS
Canvas实现保存图片到本地的示例代码
Jun 28 HTML / CSS
Canvas多边形绘制的实现方法
Aug 05 HTML / CSS
HTML5自定义视频播放器源码
Jan 06 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
Oct 19 HTML / CSS
浅谈css清除浮动(clearfix和clear)的用法
May 21 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 form 表单传参明细研究
2009/07/17 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
python实现外卖信息管理系统
2018/01/11 Python
Python中协程用法代码详解
2018/02/10 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
python利用opencv实现颜色检测
2021/02/23 Python
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
护理专业大学生自我推荐信
2014/01/25 职场文书
高三学习决心书
2014/03/11 职场文书
教师节活动主持词
2014/04/02 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
公司离职证明标准格式
2014/11/18 职场文书
升学宴学生致辞
2015/07/27 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL