国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺談Javascript如何實現(xiàn)勻速運動

2019-11-20 13:39:36
字體:
供稿:網(wǎng)友

網(wǎng)站上會經(jīng)常用到Javascript 中的運動,這次與大家分享一下一些運動的基本應(yīng)用 。 方便大家在開發(fā)中能夠直接使用。

代碼簡單易懂,適用于初學(xué)者。最后會一步一步整理出一套自己的運動框架。

應(yīng)用案例效果圖:

鼠標(biāo)移動到分享上 ,左邊的div就會顯示出來。移開會自己恢復(fù)。相信這個大家都會用到 很實用,下面看看代碼是如何實現(xiàn)的。

復(fù)制代碼 代碼如下:

<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>

復(fù)制代碼 代碼如下:

<body>
        <div id="div1">
            <span>
                分享到
            </span>
        </div>
    </body>

以下是Javascript 代碼

復(fù)制代碼 代碼如下:

<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 就會顯示出來。 那么我們只要變動這個值就可以了

startMove 中的參數(shù) iTarget 是目標(biāo)點 ,表示到哪個目標(biāo)點會停下來。

控制speed 的大小 就能控制運動的快慢。如果達到目標(biāo)點 就停止定時器 。

規(guī)律:

*  假設(shè)

*         left:30           iTarget:300     得出    往右  為正
*         left:600         iTarget:50       得出    往左  為負(fù)

* 通過當(dāng)前位置left 與目標(biāo)點的 關(guān)系 iTarget 推斷出 速度的正負(fù)


注意: 一上來就要關(guān)了定時器,因為是每次移動到分享到,都會開個定時器,開的越多相對來說速度就越快,因為同時會有多個定時器執(zhí)行。

所以每次要保證一個定時器工作。

遵循:函數(shù)功能一樣,參數(shù)越少越好的原則 ,所以根據(jù)上面的規(guī)律把speed 并不是作為參數(shù)傳入。

舉個生活中的例子:你打車,告訴出租車司機已100碼的速度到哪哪哪,一般是不可能的吧。打車你不可能告訴師傅你要跑多快

所以程序也是一樣的,這里就把速度這個傳參去掉了。

當(dāng)然現(xiàn)在的這個運動框架還會有許多問題,在之后會陸續(xù)解決。下篇文章,我們來探討下勻速運動如何停止。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高邑县| 定日县| 兰州市| 桃源县| 隆回县| 玉林市| 辉南县| 宽城| 高淳县| 张家川| 武隆县| 三门峡市| 德格县| 台山市| 都匀市| 巨鹿县| 安福县| 剑阁县| 株洲县| 应用必备| 宿松县| 九龙县| 同德县| 桦南县| 凤阳县| 姚安县| 涿鹿县| 辽阳县| 绥江县| 丰县| 台中市| 华坪县| 毕节市| 卢湾区| 高阳县| 新晃| 青河县| 洞头县| 习水县| 三原县| 基隆市|