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混合模式mix-blend-mode/background-blend-mode简介
Mar 15 HTML / CSS
CSS3的新特性介绍
Oct 31 HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
Jan 17 HTML / CSS
html5指南-2.如何操作document metadata
Jan 07 HTML / CSS
程序设计HTML5 Canvas API
Apr 08 HTML / CSS
html5使用canvas绘制文字特效
Dec 15 HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
Feb 20 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
Sep 16 HTML / CSS
HTML中实现音乐或视频自动播放案例详解
May 30 HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 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
AM/FM收音机的安装与调试
2021/03/02 无线电
十天学会php之第三天
2006/10/09 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
React Native react-navigation 导航使用详解
2017/12/01 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python判断字符串与大小写转换
2015/06/08 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python循环结构的应用场景详解
2019/07/11 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
校园歌手大赛策划书
2014/01/17 职场文书
函授本科自我鉴定
2014/02/04 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
道德演讲稿
2014/05/21 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书