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动画和opacity透明度实现呼吸灯效果
Aug 09 HTML / CSS
使用 css3 transform 属性来变换背景图的方法
May 07 HTML / CSS
CSS实现聊天气泡效果
Apr 26 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
Jan 31 HTML / CSS
利用html5的websocket实现websocket聊天室
Dec 12 HTML / CSS
为你的html5网页添加音效示例
Apr 03 HTML / CSS
Web前端页面跳转并取到值
Apr 24 HTML / CSS
html5是什么_动力节点Java学院整理
Jul 07 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
Nov 15 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
Dec 01 HTML / CSS
HTML5拖拽文件上传的示例代码
Mar 04 HTML / CSS
如何用H5实现好玩的2048小游戏
Jul 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
php共享内存段示例分享
2014/01/20 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
php微信开发之图片回复功能
2018/06/14 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
angular 服务随记小结
2019/05/06 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python中PIL安装简单教程
2016/04/21 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
简单的命令查看安装的python版本号
2020/08/28 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
编辑找工作求职信范文
2013/12/16 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
千手观音观后感
2015/06/03 职场文书
活动简报范文
2015/07/22 职场文书