CSS3中利用animation属性创建雪花飘落特效
2014-08-14来源:

先介绍一下CSS3中的animation的特性吧。

在CSS3中我们可以使用animation属性来创建复杂的动画效果,包括移动,旋转,缩放,倾斜(后几个请参考css3中的transform,scale等属性)等。而这一切,只需要我们创建关键帧(@keyframes),然后将自己想要实现的动作添加进去就可以实现。

比如:

代码如下:

@keyframes bgchange{

from {background:red;}

to {background:yellow}

}

div:hover{

animation:bgchange 5s;

}

当鼠标悬停在<div>时,该<div>的背景颜色会在五秒之内从红色变为黄色。

注意:使用animation和@keyframes时不同浏览器需要加上不同的前缀名!

下面代码实现雪花飘落功能:

代码如下:

<!DOCTYPE HTML>

<html>

<head>

<meta charset="UTF-8" />

<title>snowing snow</title>

<style>

body{

background: #eee;

}

@keyframes mysnow{

0%{

bottom:100%;

opacity:0;

}

50%{

opacity:1;

transform: rotate(1080deg);

}

100%{

transform: rotate(0deg);

opacity: 0;

bottom:0;

}

}

@-webkit-keyframes mysnow{

0%{

bottom:100%;

opacity:0;

}

50%{

opacity:1;

-webkit-transform: rotate(1080deg);

}

100%{

-webkit-transform: rotate(0deg);

opacity: 0;

bottom:0;

}

}

@-moz-keyframes mysnow{

0%{

bottom:100%;

opacity:0;

}

50%{

opacity:1;

-moz-transform: rotate(1080deg);

}

100%{

-moz-transform: rotate(0deg);

opacity: 0;

bottom:0;

}

}

@-ms-keyframes mysnow{

0%{

bottom:100%;

opacity:0;

}

50%{

opacity:1;

-ms-transform: rotate(1080deg);

}

100%{

-ms-transform: rotate(0deg);

opacity: 0;

bottom:0;

}

}

@-o-keyframes mysnow{

0%{

bottom:100%;

opacity:0;

}

50%{

opacity:1;

-o-transform: rotate(1080deg);

}

100%{

-o-transform: rotate(0deg);

opacity: 0;

bottom:0;

}

}

.roll{

position:absolute;

opacity:0;

animation: mysnow 5s ;

-webkit-animation: mysnow 5s ;

-moz-animation: mysnow 5s ;

-ms-animation: mysnow 5s ;

-o-animation: mysnow 5s ;

height:80px;

}

.div{

position:fixed;

}

</style>

</head>

<body>

<div id="snowzone" >

</div>

</body>

<script>

(function(){

function snow(left,height,src){

var div = document.createElement("div");

var img = document.createElement("img");

div.appendChild(img);

img.className = "roll";

img.src = src;

div.style.left=left+"px";

div.style.height=height+"px";

div.className="div";

document.getElementById("snowzone").appendChild(div);

setTimeout(function(){

document.getElementById("snowzone").removeChild(div);

// console.log(window.innerHeight);

},5000);

}

setInterval(function(){

var left = Math.random()*window.innerWidth;

var height = Math.random()*window.innerHeight;

var src = "s"+Math.floor(Math.random()*2+1)+".png";//两张图片分别为"s1.png"、"s2.png"

snow(left,height,src);

},500);

})();

</script>

</html>

两张雪花图片:

图片一

最终效果:

图片二

更多信息请查看IT技术专栏

推荐信息
Baidu
map