点评:在CSS3中我们可以使用animation属性来创建复杂的动画效果,本文就要借助它实现雪花飘落特效,功能代码如下,希望对大家学习css3有所帮助
先介绍一下CSS3中的animation的特性吧。
nSkHTML5中文学习网 - HTML5先行者学习网nSkHTML5中文学习网 - HTML5先行者学习网在CSS3中我们可以使用animation属性来创建复杂的动画效果,包括移动,旋转,缩放,倾斜(后几个请参考css3中的transform,scale等属性)等。而这一切,只需要我们创建关键帧(@keyframes),然后将自己想要实现的动作添加进去就可以实现。
nSkHTML5中文学习网 - HTML5先行者学习网nSkHTML5中文学习网 - HTML5先行者学习网比如:
nSkHTML5中文学习网 - HTML5先行者学习网 nSkHTML5中文学习网 - HTML5先行者学习网
@keyframes bgchange{ nSkHTML5中文学习网 - HTML5先行者学习网
from {background:red;} nSkHTML5中文学习网 - HTML5先行者学习网
to {background:yellow} nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
div:hover{ nSkHTML5中文学习网 - HTML5先行者学习网
animation:bgchange 5s; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
nSkHTML5中文学习网 - HTML5先行者学习网当鼠标悬停在<div>时,该<div>的背景颜色会在五秒之内从红色变为黄色。
nSkHTML5中文学习网 - HTML5先行者学习网nSkHTML5中文学习网 - HTML5先行者学习网注意:使用animation和@keyframes时不同浏览器需要加上不同的前缀名!
nSkHTML5中文学习网 - HTML5先行者学习网nSkHTML5中文学习网 - HTML5先行者学习网下面代码实现雪花飘落功能:
nSkHTML5中文学习网 - HTML5先行者学习网 nSkHTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE HTML> nSkHTML5中文学习网 - HTML5先行者学习网
<html> nSkHTML5中文学习网 - HTML5先行者学习网
<head> nSkHTML5中文学习网 - HTML5先行者学习网
<meta charset="UTF-8" /> nSkHTML5中文学习网 - HTML5先行者学习网
<title>snowing snow</title> nSkHTML5中文学习网 - HTML5先行者学习网
<style> nSkHTML5中文学习网 - HTML5先行者学习网
body{ nSkHTML5中文学习网 - HTML5先行者学习网
background: #eee; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
@keyframes mysnow{ nSkHTML5中文学习网 - HTML5先行者学习网
0%{ nSkHTML5中文学习网 - HTML5先行者学习网
bottom:100%; nSkHTML5中文学习网 - HTML5先行者学习网
opacity:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
50%{ nSkHTML5中文学习网 - HTML5先行者学习网
opacity:1; nSkHTML5中文学习网 - HTML5先行者学习网
transform: rotate(1080deg); nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
100%{ nSkHTML5中文学习网 - HTML5先行者学习网
transform: rotate(0deg); nSkHTML5中文学习网 - HTML5先行者学习网
opacity: 0; nSkHTML5中文学习网 - HTML5先行者学习网
bottom:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
@-webkit-keyframes mysnow{ nSkHTML5中文学习网 - HTML5先行者学习网
0%{ nSkHTML5中文学习网 - HTML5先行者学习网
bottom:100%; nSkHTML5中文学习网 - HTML5先行者学习网
opacity:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
50%{ nSkHTML5中文学习网 - HTML5先行者学习网
opacity:1; nSkHTML5中文学习网 - HTML5先行者学习网
-webkit-transform: rotate(1080deg); nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
100%{ nSkHTML5中文学习网 - HTML5先行者学习网
-webkit-transform: rotate(0deg); nSkHTML5中文学习网 - HTML5先行者学习网
opacity: 0; nSkHTML5中文学习网 - HTML5先行者学习网
bottom:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
@-moz-keyframes mysnow{ nSkHTML5中文学习网 - HTML5先行者学习网
0%{ nSkHTML5中文学习网 - HTML5先行者学习网
bottom:100%; nSkHTML5中文学习网 - HTML5先行者学习网
opacity:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
50%{ nSkHTML5中文学习网 - HTML5先行者学习网
opacity:1; nSkHTML5中文学习网 - HTML5先行者学习网
-moz-transform: rotate(1080deg); nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
100%{ nSkHTML5中文学习网 - HTML5先行者学习网
-moz-transform: rotate(0deg); nSkHTML5中文学习网 - HTML5先行者学习网
opacity: 0; nSkHTML5中文学习网 - HTML5先行者学习网
bottom:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
@-ms-keyframes mysnow{ nSkHTML5中文学习网 - HTML5先行者学习网
0%{ nSkHTML5中文学习网 - HTML5先行者学习网
bottom:100%; nSkHTML5中文学习网 - HTML5先行者学习网
opacity:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
50%{ nSkHTML5中文学习网 - HTML5先行者学习网
opacity:1; nSkHTML5中文学习网 - HTML5先行者学习网
-ms-transform: rotate(1080deg); nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
100%{ nSkHTML5中文学习网 - HTML5先行者学习网
-ms-transform: rotate(0deg); nSkHTML5中文学习网 - HTML5先行者学习网
opacity: 0; nSkHTML5中文学习网 - HTML5先行者学习网
bottom:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
@-o-keyframes mysnow{ nSkHTML5中文学习网 - HTML5先行者学习网
0%{ nSkHTML5中文学习网 - HTML5先行者学习网
bottom:100%; nSkHTML5中文学习网 - HTML5先行者学习网
opacity:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
50%{ nSkHTML5中文学习网 - HTML5先行者学习网
opacity:1; nSkHTML5中文学习网 - HTML5先行者学习网
-o-transform: rotate(1080deg); nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
100%{ nSkHTML5中文学习网 - HTML5先行者学习网
-o-transform: rotate(0deg); nSkHTML5中文学习网 - HTML5先行者学习网
opacity: 0; nSkHTML5中文学习网 - HTML5先行者学习网
bottom:0; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
.roll{ nSkHTML5中文学习网 - HTML5先行者学习网
position:absolute; nSkHTML5中文学习网 - HTML5先行者学习网
opacity:0; nSkHTML5中文学习网 - HTML5先行者学习网
animation: mysnow 5s ; nSkHTML5中文学习网 - HTML5先行者学习网
-webkit-animation: mysnow 5s ; nSkHTML5中文学习网 - HTML5先行者学习网
-moz-animation: mysnow 5s ; nSkHTML5中文学习网 - HTML5先行者学习网
-ms-animation: mysnow 5s ; nSkHTML5中文学习网 - HTML5先行者学习网
-o-animation: mysnow 5s ; nSkHTML5中文学习网 - HTML5先行者学习网
height:80px; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
.div{ nSkHTML5中文学习网 - HTML5先行者学习网
position:fixed; nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
</style> nSkHTML5中文学习网 - HTML5先行者学习网
</head> nSkHTML5中文学习网 - HTML5先行者学习网
<body> nSkHTML5中文学习网 - HTML5先行者学习网
<div id="snowzone" > nSkHTML5中文学习网 - HTML5先行者学习网
</div> nSkHTML5中文学习网 - HTML5先行者学习网
</body> nSkHTML5中文学习网 - HTML5先行者学习网
<script> nSkHTML5中文学习网 - HTML5先行者学习网
(function(){ nSkHTML5中文学习网 - HTML5先行者学习网
function snow(left,height,src){ nSkHTML5中文学习网 - HTML5先行者学习网
var div = document.createElement("div"); nSkHTML5中文学习网 - HTML5先行者学习网
var img = document.createElement("img"); nSkHTML5中文学习网 - HTML5先行者学习网
div.appendChild(img); nSkHTML5中文学习网 - HTML5先行者学习网
img.className = "roll"; nSkHTML5中文学习网 - HTML5先行者学习网
img.src = src; nSkHTML5中文学习网 - HTML5先行者学习网
div.style.left=left+"px"; nSkHTML5中文学习网 - HTML5先行者学习网
div.style.height=height+"px"; nSkHTML5中文学习网 - HTML5先行者学习网
div.className="div"; nSkHTML5中文学习网 - HTML5先行者学习网
document.getElementById("snowzone").appendChild(div); nSkHTML5中文学习网 - HTML5先行者学习网
setTimeout(function(){ nSkHTML5中文学习网 - HTML5先行者学习网
document.getElementById("snowzone").removeChild(div); nSkHTML5中文学习网 - HTML5先行者学习网
// console.log(window.innerHeight); nSkHTML5中文学习网 - HTML5先行者学习网
},5000); nSkHTML5中文学习网 - HTML5先行者学习网
} nSkHTML5中文学习网 - HTML5先行者学习网
setInterval(function(){ nSkHTML5中文学习网 - HTML5先行者学习网
var left = Math.random()*window.innerWidth; nSkHTML5中文学习网 - HTML5先行者学习网
var height = Math.random()*window.innerHeight; nSkHTML5中文学习网 - HTML5先行者学习网
var src = "s"+Math.floor(Math.random()*2+1)+".png";//两张图片分别为"s1.png"、"s2.png" nSkHTML5中文学习网 - HTML5先行者学习网
snow(left,height,src); nSkHTML5中文学习网 - HTML5先行者学习网
},500); nSkHTML5中文学习网 - HTML5先行者学习网
})(); nSkHTML5中文学习网 - HTML5先行者学习网
</script> nSkHTML5中文学习网 - HTML5先行者学习网
</html> nSkHTML5中文学习网 - HTML5先行者学习网
nSkHTML5中文学习网 - HTML5先行者学习网两张雪花图片:
nSkHTML5中文学习网 - HTML5先行者学习网
nSkHTML5中文学习网 - HTML5先行者学习网最终效果:
nSkHTML5中文学习网 - HTML5先行者学习网