淺談Javascript如何實(shí)現(xiàn)勻速運(yùn)動(dòng)
網(wǎng)站上會(huì)經(jīng)常用到Javascript 中的運(yùn)動(dòng),這次與大家分享一下一些運(yùn)動(dòng)的基本應(yīng)用 。 方便大家在開(kāi)發(fā)中能夠直接使用。
代碼簡(jiǎn)單易懂,適用于初學(xué)者。最后會(huì)一步一步整理出一套自己的運(yùn)動(dòng)框架。
應(yīng)用案例效果圖:

鼠標(biāo)移動(dòng)到分享上 ,左邊的div就會(huì)顯示出來(lái)。移開(kāi)會(huì)自己恢復(fù)。相信這個(gè)大家都會(huì)用到 很實(shí)用,下面看看代碼是如何實(shí)現(xiàn)的。
<style type="text/css">
#div1 {
width: 150px;
height: 200px;
background: green;
position: absolute;
left: -150px;
}
#div1 span {
position: absolute;
width: 20px;
height: 60px;
line-height: 20px;
background: blue;
right: -20px;
top: 70px;
}
</style>
<body>
<div id="div1">
<span>
分享到
</span>
</div>
</body>
以下是Javascript 代碼
<script type="text/javascript">
window.onload=function(){
var oDiv=document.getElementById("div1");
oDiv.onmouseover=function(){
startMove(0);
};
oDiv.onmouseout=function(){
startMove(-150);
};
}
var time=null;
function startMove(iTraget){
var oDiv=document.getElementById("div1");
clearInterval(time);
time=setInterval(function(){
var speed=0;
if(oDiv.offsetLeft>iTraget){
speed=-10;
}else{
speed=10;
}
if(oDiv.offsetLeft==iTraget){
clearInterval(time);
}else{
oDiv.style.left=oDiv.offsetLeft+speed+'px';
}
},30);
}
</script>
思路:
樣式中初始的left是-150 這樣div就是縮在里面,給0 就會(huì)顯示出來(lái)。 那么我們只要變動(dòng)這個(gè)值就可以了
startMove 中的參數(shù) iTarget 是目標(biāo)點(diǎn) ,表示到哪個(gè)目標(biāo)點(diǎn)會(huì)停下來(lái)。
控制speed 的大小 就能控制運(yùn)動(dòng)的快慢。如果達(dá)到目標(biāo)點(diǎn) 就停止定時(shí)器 。
規(guī)律:
* 假設(shè)
* left:30 iTarget:300 得出 往右 為正
* left:600 iTarget:50 得出 往左 為負(fù)
*
* 通過(guò)當(dāng)前位置left 與目標(biāo)點(diǎn)的 關(guān)系 iTarget 推斷出 速度的正負(fù)
注意: 一上來(lái)就要關(guān)了定時(shí)器,因?yàn)槭敲看我苿?dòng)到分享到,都會(huì)開(kāi)個(gè)定時(shí)器,開(kāi)的越多相對(duì)來(lái)說(shuō)速度就越快,因?yàn)橥瑫r(shí)會(huì)有多個(gè)定時(shí)器執(zhí)行。
所以每次要保證一個(gè)定時(shí)器工作。
遵循:函數(shù)功能一樣,參數(shù)越少越好的原則 ,所以根據(jù)上面的規(guī)律把speed 并不是作為參數(shù)傳入。
舉個(gè)生活中的例子:你打車,告訴出租車司機(jī)已100碼的速度到哪哪哪,一般是不可能的吧。打車你不可能告訴師傅你要跑多快
所以程序也是一樣的,這里就把速度這個(gè)傳參去掉了。
當(dāng)然現(xiàn)在的這個(gè)運(yùn)動(dòng)框架還會(huì)有許多問(wèn)題,在之后會(huì)陸續(xù)解決。下篇文章,我們來(lái)探討下勻速運(yùn)動(dòng)如何停止。
- js指定步長(zhǎng)實(shí)現(xiàn)單方向勻速運(yùn)動(dòng)
- 原生javascript實(shí)現(xiàn)勻速運(yùn)動(dòng)動(dòng)畫(huà)效果
- javascript勻速運(yùn)動(dòng)實(shí)現(xiàn)方法分析
- 淺談Javascript中勻速運(yùn)動(dòng)的停止條件
- JS實(shí)現(xiàn)勻速運(yùn)動(dòng)的代碼實(shí)例
- JS勻速運(yùn)動(dòng)演示示例代碼
- JavaScript中的勻速運(yùn)動(dòng)和變速(緩沖)運(yùn)動(dòng)詳細(xì)介紹
- 原生JS實(shí)現(xiàn)各種運(yùn)動(dòng)之勻速運(yùn)動(dòng)
相關(guān)文章
javascript實(shí)現(xiàn)可改變滾動(dòng)方向的無(wú)縫滾動(dòng)實(shí)例
無(wú)縫滾動(dòng)在制作一些圖片展示的時(shí)候還是蠻有用的,下面與大家分享下javascript實(shí)現(xiàn)的可改變滾動(dòng)方向的無(wú)縫滾動(dòng),具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06
js實(shí)現(xiàn)杯子倒水問(wèn)題自動(dòng)求解程序
智力測(cè)試題經(jīng)常遇到類似的邏輯題,給幾個(gè)容量不等的杯子,讓你倒出多少的水,感興趣的朋友可以參考下哈希望可以幫助到你2013-03-03
javascript實(shí)現(xiàn)數(shù)字倒計(jì)時(shí)特效
這篇文章主要介紹了javascript實(shí)現(xiàn)網(wǎng)頁(yè)倒計(jì)時(shí)數(shù)字時(shí)鐘效果,是一款非常實(shí)用的javascript倒計(jì)時(shí)特效,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-03-03
Swiper如何實(shí)現(xiàn)兩行四列輪播圖效果實(shí)例
大家應(yīng)該都知道,Swiper是純javascript打造的滑動(dòng)特效插件,面向手機(jī)、平板電腦等移動(dòng)終端,下面這篇文章主要給大家介紹了關(guān)于Swiper如何實(shí)現(xiàn)兩行四列輪播圖效果的相關(guān)資料,需要的朋友可以參考下2022-10-10
javascript中的Function.prototye.bind
這篇文章主要介紹了javascript中的Function.prototye.bind的相關(guān)資料,需要的朋友可以參考下2015-06-06

