js实现匀速下落动画怎么实现

JavaScript09

js实现匀速下落动画怎么实现,第1张

/*

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>