data:2022-11-17
author:lfp
move运动函数
dom--需要运动的对象
json--{width:100,height:100,left:100,top:100}
callback--回调函数 可调用自己 实现异步动画效果
*/
//主函数
function move(dom,json,callback){
//让每一次动画都是新的开始,防止出现动画一直不停的运行
if(dom.timer)clearInterval(dom.timer)
var i=0
var start=0
//在对象中增加timer 便于控制他停止
dom.timer=setInterval(function(){
i++
//循环每一个目标属性添加动画方法
for(var attr in json){
//获取当前attr的属性值 已经去除了px 还有 如果初始值是auto 用零代替
var cur=getStyle(dom,attr)
if(i==1)start=cur
//拿到该属性的目标值
var target=json[attr]
//设置分成10次增加增量 你可以根据需要修改
var speed=(target-start)/10
console.log(speed+"====="+cur)
//如果没有达到目标值就一直加
if(Math.abs(cur-target)>1){
dom.style[attr]=cur+speed+"px"
}else{
//达到目标值了就停止或者其他情况也停止
clearInterval(dom.timer)
//等停止了动画再回调函数进行另外的操作
if(callback)callback.call(dom)
}
}
},45)
}
//配套函数
function getStyle(dom,attr){
var value=""
if(window.getComputedStyle){
value=window.getComputedStyle(dom,false)[attr]
}else{
value=dom.currentStyle[attr]
}
value=parseInt(value)
return value || 0//如果你再样式中没有设置初始的值就会出现NaN 所以要用0来补充
}
function $(id){
//return document.getElementById(id)
return document.querySelector("#"+id)
}
不知道这位同学听没听说过jQuery , 给你个网址, 你自行学习一下就可以使用了, 非常简单http://www.w3school.com.cn/jquery/jquery_slide.asp
下面是雪花飘落的js代码拷进去就好了,或者调用!!!!
<script language="JavaScript">
<!--
N =20
Y = new Array()
X = new Array()
S = new Array()
A = new Array()
B = new Array()
M = new Array()
V = (document.layers)?1:0
iH=(document.layers)?window.innerHeight:window.document.body.clientHeight
iW=(document.layers)?window.innerWidth:window.document.body.clientWidth
for (i=0i <Ni++){
Y[i]=Math.round(Math.random()*iH)
X[i]=Math.round(Math.random()*iW)
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+7)
}
if (V){
for (i = 0i <Ni++)
{document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0 BGCOLOR='#FFFFF0' CLIP='0,0,"+M[i]+","+M[i]+"'z-index: 1><font color=white size=3 face='Wingdings'>T</font></LAYER>")}
}
else{
document.write('<div style="position:absolutetop:0pxleft:0pxz-index: 1">')
document.write('<div style="position:relativez-index: 1">')
for (i = 0i <Ni++)
{document.write('<div id="si" style="position:absolutez-index: 1top:0left:0width:'+M[i]+'height:'+M[i]+'font-size:'+M[i]+'"><font color=white size=3 face="Wingdings">T</font></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]
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+7)
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()',40)
}
snow()
//-->
</script>