function rand(mi, ma) { var range = ma - mi; var out = mi + math.round(math.random() * range); return parseint(out); } function getviewsize() { var de = document.documentelement; var db = document.body; var vieww = de.clientwidth == 0 ? db.clientwidth : de.clientwidth; var viewh = de.clientheight == 0 ? db.clientheight : de.clientheight; return array(vieww, viewh); } $(function(){ airballoon('div.air-balloon'); }); /* @function 热气球移动 @update by julying , 2012/7/25 */ function airballoon(balloon){ var viewsize = [] , viewwidth = 0 , viewheight = 0 ; resize(); $(balloon).each(function(){ $(this).css({top: rand(40, viewheight * 0.5 ) , left : rand( 10 , viewwidth - $(this).width() ) }); fly(this); }); $(window).resize(function(){ resize() $(balloon).each(function(){ $(this).stop().animate({top: rand(40, viewheight * 0.5 ) , left : rand( 10 , viewwidth - $(this).width() ) } ,1000 , function(){ fly(this);k }); }); }); function resize(){ viewsize = getviewsize(); viewwidth = $(document).width() ; viewheight = viewsize[1] ; } function fly(obj){ var $obj = $(obj); var currenttop = parseint($obj.css('top')); var currentleft = parseint($obj.css('left') ); var targetleft = rand( 10 , viewwidth - $obj.width() ); var targettop = rand(40, viewheight /2 ); /*求两点之间的距离*/ var removing = math.sqrt( math.pow( targetleft - currentleft , 2 ) + math.pow( targettop - currenttop , 2 ) ); /*每秒移动24px ,计算所需要的时间,从而保持 气球的速度恒定*/ var movetime = removing / 40; $obj.animate({ top : targettop , left : targetleft} , movetime * 1000 , function(){ settimeout(function(){ fly(obj); }, rand(1000, 3000) ); }); } };