您好,登錄后才能下訂單哦!
今天小編給大家分享一下javascript怎么實現(xiàn)懸浮跟隨框緩動效果的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
1、定義一個運動函數(shù),當觸發(fā)時調(diào)用,并且傳遞一個目標位置作為參數(shù)
2、運動函數(shù)內(nèi)部,調(diào)用定時函數(shù),在定時函數(shù)內(nèi)部,先求出元素位置與目標位置的距離差,然后除以一個數(shù)值作為速度(由于距離差一直在縮小,所以速度值也一直在變小,從而達到緩動效果)
3、由于網(wǎng)頁上位置設置最小單位是1px,所以在步驟二中的運算可能會出現(xiàn)小數(shù)的情況,我們需要對小數(shù)進行處理,否則元素到達的位置總是和目標位置有1px的差距。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>New Web Project</title> <style> #div1{ width:100px; height:150px; background: red; border:1px solid #008000; right:0px; position: absolute; } #div2{ width:1920px; height:1px; background:red; position: absolute; } </style> <script> window.οnlοad=function(){ var oDiv=document.getElementById('div1'); var oDiv1=document.getElementById('div2'); var timer=null; oDiv.style.top=(document.documentElement.clientHeight-oDiv.offsetHeight)/2+document.documentElement.scrollTop+'px'; window.οnscrοll=function(){ var scrolltop=document.documentElement.scrollTop || document.body.scrollTop; var iTarget=(document.documentElement.clientHeight-oDiv.offsetHeight)/2+scrolltop; iTarget=Math.floor(iTarget); oDiv1.style.top=iTarget+'px'; startMove(iTarget); }; function startMove(itarget){ clearInterval(timer); timer=setInterval(function(){ var iDis=itarget-oDiv.offsetTop; var speed=iDis/5; if(iDis>=0){ speed=Math.ceil(speed);//當speed為小于1的數(shù)時,將它變?yōu)?,從而使元素位置移動一個像素,因為小于1的像素會被近似為0 } else{ speed=Math.floor(speed); } if(oDiv.offsetTop==itarget) { clearInterval(timer); } else { oDiv.style.top=oDiv.offsetTop+speed+'px'; } document.title=oDiv.offsetTop; },30); } }; </script> </head> <body > <div id="div1"> </div> </body> </html>
運行結(jié)果圖:
以上就是“javascript怎么實現(xiàn)懸浮跟隨框緩動效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。