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 滤镜 webkit-filter详细介绍及使用方法
Dec 27 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
May 24 HTML / CSS
详解如何在css3打包后自动追加前缀插件:autoprefixer
Dec 18 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
Mar 25 HTML / CSS
HTML5的download属性详细介绍和使用实例
Apr 23 HTML / CSS
5 个强大的HTML5 API 函数推荐
Nov 19 HTML / CSS
实例讲解HTML5的meta标签的一些应用
Dec 08 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
Mar 21 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
Apr 24 HTML / CSS
浅谈HTML5中dialog元素尝鲜
Oct 15 HTML / CSS
canvas实现滑动验证的实现示例
Aug 11 HTML / CSS
css3中transform属性实现的4种功能
Aug 07 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实现的随机广告显示代码
2007/06/14 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
美丽心灵观后感
2015/06/01 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
Python简易开发之制作计算器
2022/04/28 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS