CSS3动画图标(一)

161 阅读3分钟

CSS3的动画功能十分强大,大部分的动画都可以通过CSS3的设置来进行完成。这里将之前写过的CSS3动画图标拿出来分享,希望能给大家提供点帮助。

先是以CSS3的旋转风扇为例,来讲一下实现思路与方法。

一、实现思路

首先要构建一个风扇的结构,用CSS将风扇的背景,风扇的4个叶片,与中间的轴心都描绘出来。然后再将叶片用CSS3动画进行中心点旋转,设置好动画后就可以了。

二、实现方法

1、首先是背景轮廓的绘制

先是用div生成一个圆,将它用白色设置好背景

.bolang_div {

display:inline-block;

position: absolute;

top:300px;

left:500px;

width:284px;

height:300px;

background:#fff;

border-radius: 35px;

overflow:hidden;

-webkit-transition: 1s all;

}

在这个基础上绘制它的内圆

/* 中间圆形底色 */

.box-anim:before {

content:"";

border-radius:50%;

display:inline-block;

position:absolute; width:190px; height:190px;

margin:-95.5px 0 0 -95.5px;

z-index:1001;

background:-webkit-radial-gradient(#63ec57, #218644);

top:50%; left:50%;

-webkit-box-shadow:

0 12px 18px -1px rgba(0,0,0,0.2) inset;

}

然后是内圆的底色

.box-anim:after {

content:"";

border-radius:50%;

display:inline-block;

position:absolute; width:200px; height:200px;

margin:-100px 0 0 -100px;

z-index:1000;

background:-webkit-linear-gradient(bottom ,#fff,#dddddd);

top:50%; left:50%;

}

绘制完成后样式变成下图:

内部的渐变色的样式可以修改

2、内部轴心的颜色与样式,设置中间圆形

.box-anim > .box-center {

border-radius:50%;

display:inline-block;

position:absolute; width:50px; height:50px;

margin:-25px 0 0 -25px;

z-index:1004;

background:-webkit-radial-gradient(#fff,#c4daca);

top:50%; left:50%;

-webkit-box-shadow:

5px 8px 8px -1px #cadbce inset;

-webkit-transform: rotate(-90deg);

}

.box-anim > .box-center:after {

content: "";

border-radius:50%;

display:inline-block;

position:absolute; width:50px; height:50px;

margin:-25px 0 0 -25px;

z-index:1005;

background:transparent;

top:50%; left:50%;

-webkit-box-shadow:

0px 3px 8px rgba(0,0,0,0.2) ;

-webkit-transform: rotate(90deg);

}

然后的效果如下:

3、叶片的绘制与实现,这里有个外部容器,来存放叶片的内容,方便进行CSS动画的旋转与设置。转动这个div就可以实现叶片的转动。

先是不加上动画设置,首先让它在轴之下的层级,然后居中浮动。

.ro45 {

width: 100px;

height: 100px;

position: absolute;

z-index:1003;

top:50%; left:50%;

margin-left:-50px;

margin-top:-50px;

而叶片分成了两个DIV,一个实现叶片成对的出现后,另一个旋转90度就可以实现对称

单独的叶片其实就是一个水滴开状的元素,用CSS很容易就能实现

 .infinity {

width: 220px;

height: 100px;

position: absolute;

z-index:1003;

top:50%; left:50%;

margin-left:-70px;

margin-top:-70px;

}

.infinity:before,.infinity:after {

content: "";

width: 70px;

height: 70px;

position: absolute;

z-index:1002;

top: 0;

left: 0;

background:-webkit-linear-gradient(top left , #7ec888,#fff);

/*border: 20px solid #06c999;*/

border-radius:70% 0 70% 55%;

-webkit-transform: rotate(90deg);

/*-moz-transform: rotate(-45deg);*/

/*-ms-transform: rotate(-45deg);*/

/*-o-transform: rotate(-45deg);*/

/*transform: rotate(-45deg);*/

-webkit-box-shadow: 0px 3px 8px rgba(0,0,0,0.2) ;

}

.infinity:after {

top: 70px;

left: 70px;

-webkit-transform: rotate(-90deg);

}

.infinity.ro90 {

top:50%; left:50%;

margin-left:-90px;

margin-top:-10px;

-webkit-transform: rotate(90deg);

}

最终效果

接下来,将CSS3的动画中心点旋转作用在叶片外层div上,就可以实现电风扇的转动

.ro45 {

-webkit-transform: rotate(45deg);

width: 100px;

height: 100px;

position: absolute;

z-index:1003;

top:50%; left:50%;

margin-left:-50px;

margin-top:-50px;

-webkit-animation-iteration-count:infinite;

/* Only run once */ -webkit-animation-fill-mode: forwards;

/* Hold the last keyframe */ -webkit-animation-timing-function:linear; /* Linear animation */

-webkit-animation-duration: 1s;

/* Full animation time */

-webkit-animation-name: left-spin;

}

@-webkit-keyframes left-spin {

from { -webkit-transform: rotate(0deg); }

to { -webkit-transform: rotate(360deg); }

}

转动的速度可以调整,怎么样?简单的分享就到这。谢谢