html满屏动态雪花效果,css+js,亲测有效

<body></body>
<style>
html,body{
width: 100%;
height:100%;
background-color: black;
position: relative;
padding: 0;
margin: 0;
}
</style>
<script>
var snowmax = 40
var snowcolor = ["#FFDA65","#00AADD","#aaaacc","#a0c4ff","#ccccdd","#caffbf","#bbf7f9","#ffc6ff","#ffd6a5"]
var snowtype = ["Times","Arial","Verdana"]
var snowletter = "❉"
var sinkspeed = 0.6
var snowmaxsize = 32
var snowminsize = 12
var snowingzone = 1
var snow = []
var marginbottom
var marginright
var timer
var i_snow = 0
var x_mv = []
var crds = []
var lftrght = []
var browserinfos = navigator.userAgent
var ie5 = document.all && document.getElementById && !browserinfos.match(/Opera/)
var ns6 = document.getElementById && !document.all
var opera = browserinfos.match(/Opera/)
var browserok = ie5 || ns6 || opera
function randommaker(range) {
rand = Math.floor(range * Math.random())
return rand
}
function initsnow() {
if (ie5 || opera) {
marginbottom = document.body.scrollHeight - 80
marginright = document.body.clientWidth - 15
} else if (ns6) {
marginbottom = document.body.scrollHeight - 80
marginright = window.innerWidth - 15
}
var snowsizerange = snowmaxsize - snowminsize
for (var i = 0;i <= snowmax;i++) {
crds[i] = 0;
lftrght[i] = Math.random()*15;
x_mv[i] = 0.03 + Math.random()/10;
snow[i] = document.getElementById("s"+i)
snow[i].style.fontFamily = snowtype[randommaker(snowtype.length)]
snow[i].size = randommaker(snowsizerange)+snowminsize
snow[i].style.fontSize = snow[i].size+'px';
snow[i].style.color = '#ffffff'
snow[i].style.zIndex = 1000
snow[i].sink = sinkspeed*snow[i].size/5
if (snowingzone==1) {snow[i].posx = randommaker(marginright-snow[i].size)}
if (snowingzone==2) {snow[i].posx = randommaker(marginright/2-snow[i].size)}
if (snowingzone==3) {snow[i].posx = randommaker(marginright/2-snow[i].size)+marginright/4}
if (snowingzone==4) {snow[i].posx = randommaker(marginright/2-snow[i].size)+marginright/2}
snow[i].posy = randommaker(2*marginbottom-marginbottom-2*snow[i].size)
snow[i].style.left=snow[i].posx+'px';
snow[i].style.top=snow[i].posy+'px';
}
movesnow()
}
function movesnow() {
for (var i = 0;i <= snowmax;i++) {
crds[i] += x_mv[i];
snow[i].posy+=snow[i].sink
snow[i].style.left = snow[i].posx+lftrght[i]*Math.sin(crds[i])+'px';
snow[i].style.top = snow[i].posy+'px';
if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){
if (snowingzone==1) {snow[i].posx = randommaker(marginright-snow[i].size)}
if (snowingzone==2) {snow[i].posx = randommaker(marginright/2-snow[i].size)}
if (snowingzone==3) {snow[i].posx = randommaker(marginright/2-snow[i].size)+marginright/4}
if (snowingzone==4) {snow[i].posx = randommaker(marginright/2-snow[i].size)+marginright/2}
snow[i].posy = 0
}
}
var timer = setTimeout("movesnow()", 50)
}
for (var i = 0;i <= snowmax;i++) {
document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")
}
if (browserok) {
window.onload = initsnow
}
</script>