源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅谈Javascript如何实现匀速运动

  • 时间:2022-05-07 00:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅谈Javascript如何实现匀速运动
网站上会经常用到Javascript 中的运动,这次与大家分享一下一些运动的基本应用 。 方便大家在开发中能够直接使用。 代码简单易懂,适用于初学者。最后会一步一步整理出一套自己的运动框架。 应用案例效果图: [img]http://files.jb51.net/file_images/article/201412/201412191607199.png[/img] 鼠标移动到分享上 ,左边的div就会显示出来。移开会自己恢复。相信这个大家都会用到 很实用,下面看看代码是如何实现的。
[u]复制代码[/u] 代码如下:
<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>
[u]复制代码[/u] 代码如下:
<body>         <div id="div1">             <span>                 分享到             </span>         </div>     </body>
以下是Javascript 代码
[u]复制代码[/u] 代码如下:
<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>
[b]思路:[/b] 样式中初始的left是-150 这样div就是缩在里面,给0 就会显示出来。 那么我们只要变动这个值就可以了 startMove 中的参数 iTarget 是目标点 ,表示到哪个目标点会停下来。 控制speed 的大小 就能控制运动的快慢。如果达到目标点 就停止定时器 。 [b]规律:[/b] *  假设 *         left:30           iTarget:300     得出    往右  为正 *         left:600         iTarget:50       得出    往左  为负 *  * 通过当前位置left 与目标点的 关系 iTarget 推断出 速度的正负 注意: 一上来就要关了定时器,因为是每次移动到分享到,都会开个定时器,开的越多相对来说速度就越快,因为同时会有多个定时器执行。 所以每次要保证一个定时器工作。 遵循:函数功能一样,参数越少越好的原则 ,所以根据上面的规律把speed 并不是作为参数传入。 举个生活中的例子:你打车,告诉出租车司机已100码的速度到哪哪哪,一般是不可能的吧。打车你不可能告诉师傅你要跑多快 所以程序也是一样的,这里就把速度这个传参去掉了。 当然现在的这个运动框架还会有许多问题,在之后会陆续解决。下篇文章,我们来探讨下匀速运动如何停止。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部