<head>
<title>网页特效|Linkweb.cn/Js|---页面漫天飞雪</title>
<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">
</head>
<body bgcolor="#000000" onLoad="snow()">
<script language="JavaScript">
<!--
N = 40
//声明为数组的变量
Y = new Array()
X = new Array()
S = new Array()
A = new Array()
B = new Array()
M = new Array()
/*document.layers是Netscape 4.x专有的属性,是一个代表所有由储如<div><layer>等定位了的元素的数组。通常也是用<div>或<layer>对象的id属性来引用的,但是这里面不包含除此以外的其它元素。
*/
V = (document.layers)?1:0
iH=(document.layers)?window.innerHeight:window.document.body.clientHeight//clientHeight 就是浏览器里面那个空白的高
iW=(document.layers)?window.innerWidth:window.document.body.clientWidth //clentWidth是浏览器里面那个空白的宽
for (i=0i <Ni++){
/*Math的round(double d)
方法的内容就是
返回最接近参数的 long。通过加上 1/2 将该结果舍入为整数,取结果的基数并将其强制转换为 long 类型。换句话说,结果等于以下表达式的值:
(long)Math.floor(a + 0.5d)
为什么加0.5? 当然是代码就这么写的
1. 如果参数为正数,且小数点后第一位>=5,运算结果为参数的整数部分+1。
2. 如果参数为负数,且小数点后第一位>5,运算结果为参数的整数部分-1。
3. 如果参数为正数,且小数点后第一位<5;或者参数为负数,且小数点后第一位<=5,运算结果为参数的整数部分。
Math.random()返回一个伪随机数 n,其中 0 <= n <1。返回的数字之所以是一个伪随机数是因为它不是由真正的随机自然现象(如放射性衰变)生成的数字。
*/
//随机获取浏览器空白区的高和宽 赋值给Y和X
Y[i]=Math.round(Math.random()*iH)
X[i]=Math.round(Math.random()*iW)
//设定S A B M的随机取值范围
S[i]=Math.round(Math.random()*5+2)
A[i]=0
B[i]=Math.random()*0.1+0.1
M[i]=Math.round(Math.random()*1+1)
}
if (V){//判断页面是否存在<div>和 <layer>等元素 第一次访问浏览器肯定是没有的所以v = 0 所以要先生存<div>或 <layer>等元素
for (i = 0i <Ni++)
{document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0 BGCOLOR='#FFFFF0' CLIP='0,0,"+M[i]+","+M[i]+"'></LAYER>")}//生成<layer>元素 生成背景
}
else{
//这段代码就是生成雪花
document.write('<div style="position:absolutetop:0pxleft:0px">')//生成<div>元素
document.write('<div style="position:relative">')
for (i = 0i <Ni++)
{document.write('<div id="si" style="position:absolutetop:0left:0width:'+M[i]+'height:'+M[i]+'background:#fffff0font-size:'+M[i]+'"></div>')}
document.write('</div></div>')
}
function snow(){
var H=(document.layers)?window.innerHeight:window.document.body.clientHeight
var W=(document.layers)?window.innerWidth:window.document.body.clientWidth
var T=(document.layers)?window.pageYOffset:document.body.scrollTop //往下拉滚动条的上面高度
var L=(document.layers)?window.pageXOffset:document.body.scrollLeft //往右拉滚动条的左边宽度
for (i=0i <Ni++){
sy=S[i]*Math.sin(90*Math.PI/180)
sx=S[i]*Math.cos(A[i])
Y[i]+=sy
X[i]+=sx
if (Y[i] >H){
Y[i]=-10
X[i]=Math.round(Math.random()*W)
M[i]=Math.round(Math.random()*1+1)
S[i]=Math.round(Math.random()*5+2)
}
if (V){document.layers['sn'+i].left=X[i]document.layers['sn'+i].top=Y[i]+T}
else{si[i].style.pixelLeft=X[i]si[i].style.pixelTop=Y[i]+T}
A[i]+=B[i]
}
setTimeout('snow()',30) //定时器 每隔30毫秒执行一次
}
//-->
</script>
<script language="Javascript">
<!--
function selectAll(theField){
var tempval=eval("document."+theField)
tempval.focus()
tempval.select()
}
//-->
</script>
</table>
</body>