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旋转动画实例代码
Sep 11 HTML / CSS
用CSS3的box-reflect来制作倒影效果
Nov 15 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
Jun 29 HTML / CSS
HTML5标签小集
Aug 02 HTML / CSS
使用css如何制作时间ICON方法实践
Nov 12 HTML / CSS
html5弹跳球示例代码
Jul 23 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
Nov 12 HTML / CSS
html5实现canvas阴影效果示例
May 07 HTML / CSS
Html5实现文件异步上传功能
May 19 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
Dec 11 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
Jul 16 HTML / CSS
HTML页面中使两个div并排显示的实现
May 15 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
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
详解React中setState回调函数
2018/06/14 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
Python中的zipfile模块使用详解
2015/06/25 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
编辑个人求职信范文
2013/09/21 职场文书
毕业生自我鉴定
2013/11/05 职场文书
计算机学生求职信范文
2014/01/30 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
捐赠仪式主持词
2014/03/19 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
英文产品推荐信
2015/03/27 职场文书
作息时间调整通知
2015/04/22 职场文书
婚礼家长致辞
2015/07/27 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
python中的装饰器该如何使用
2021/06/18 Python
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS