<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin:0px;
padding:0px;
/* 背景图 */
background-color:lightskyblue
}
</style>
</head>
<body>
<script>
//创建多个雪花
setInterval(function(){
//一个雪花
var oImg = document.createElement("img");
//一个雪花宽度,高度不确定,随机数,宽高相等好看
var oImgNum = Math.random()*70 + 10
//一个雪花透明度不确定
var oImgOpacity = Math.random()*0.5 + 0.5
//一个雪花出生水平位置不确定
var oImgLeft = Math.random()*document.documentElement.clientWidth
//多方向下落,水平每次移动距离,随机数
var iSpeedX = Math.random()*40-20;
//多方向下落,垂直每次移动距离,随机数
var iSpeedY = 1;
//模拟重力场
var g = 1;
//一个雪花样式
//1.随机样式
oImg.style.width = oImgNum + "px";
oImg.style.height = oImgNum + "px";
oImg.style.opacity = oImgOpacity;
oImg.style.left = oImgLeft + "px";
//2.固定样式
oImg.src = "雪花.jpg";
oImg.style.position = "absolute";
oImg.style.top = "0px"
//一个雪花插入页面
document.body.appendChild(oImg);
//一个雪花的定时器,下落功能
oImg.timer = setInterval(function(){
iSpeedY += g;
//下一30毫秒多方向下落
newTop = oImg.offsetTop + iSpeedY;
newLeft = oImg.offsetLeft + iSpeedX;
//下一30毫秒超出可视区底部,反弹,能量损失
if(newTop >= document.documentElement.clientHeight - oImg.clientHeight){
iSpeedY *= -1
newTop = document.documentElement.clientHeight - oImg.clientHeight
iSpeedX *= 0.8;
iSpeedY *= 0.8;
}
//下一30毫秒超出可视区右,删除雪花,一个雪花的定时器清除
if(newLeft >= document.documentElement.clientWidth - oImg.clientWidth){
newLeft = document.documentElement.clientWidth - oImg.clientWidth
clearInterval(oImg.timer);
oImg.remove();
}
//下一30毫秒超出可视区左,删除雪花,一个雪花的定时器清除
if(newLeft <= 0){
newLeft = 0;
clearInterval(oImg.timer);
oImg.remove();
}
//下一30毫秒超出可视区顶部,删除雪花,一个雪花的定时器清除
if(newTop <= 0){
newTop = 0;
clearInterval(oImg.timer);
oImg.remove();
}
oImg.style.top = newTop + "px";
oImg.style.left = newLeft + "px";
},30)
},350)
</script>
</body>
</html>
渡一雪花效果
猜你喜欢
转载自blog.csdn.net/weixin_48727085/article/details/115178586
今日推荐
周排行