浅谈Javascript如何实现匀速运动


Posted in Javascript onDecember 19, 2014

网站上会经常用到Javascript 中的运动,这次与大家分享一下一些运动的基本应用 。 方便大家在开发中能够直接使用。

代码简单易懂,适用于初学者。最后会一步一步整理出一套自己的运动框架。

应用案例效果图:

浅谈Javascript如何实现匀速运动

鼠标移动到分享上 ,左边的div就会显示出来。移开会自己恢复。相信这个大家都会用到 很实用,下面看看代码是如何实现的。

<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 就会显示出来。 那么我们只要变动这个值就可以了

startMove 中的参数 iTarget 是目标点 ,表示到哪个目标点会停下来。

控制speed 的大小 就能控制运动的快慢。如果达到目标点 就停止定时器 。

规律:

*  假设

*         left:30           iTarget:300     得出    往右  为正
*         left:600         iTarget:50       得出    往左  为负

* 通过当前位置left 与目标点的 关系 iTarget 推断出 速度的正负

注意: 一上来就要关了定时器,因为是每次移动到分享到,都会开个定时器,开的越多相对来说速度就越快,因为同时会有多个定时器执行。

所以每次要保证一个定时器工作。

遵循:函数功能一样,参数越少越好的原则 ,所以根据上面的规律把speed 并不是作为参数传入。

举个生活中的例子:你打车,告诉出租车司机已100码的速度到哪哪哪,一般是不可能的吧。打车你不可能告诉师傅你要跑多快

所以程序也是一样的,这里就把速度这个传参去掉了。

当然现在的这个运动框架还会有许多问题,在之后会陆续解决。下篇文章,我们来探讨下匀速运动如何停止。

Javascript 相关文章推荐
jquery ajax 局部刷新小案例
Feb 08 Javascript
javascript中的Base64、UTF8编码与解码详解
Mar 18 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
Mar 24 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
Oct 27 Javascript
解决js函数闭包内存泄露问题的办法
Jan 25 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
VsCode插件整理(小结)
Sep 14 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
vue使用codemirror的两种用法
Aug 27 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 Javascript
javascript中的相等操作符(==与===区别)
Dec 21 Javascript
Javascript添加监听与删除监听用法详解
Dec 19 #Javascript
Javascript 实现图片无缝滚动
Dec 19 #Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 #Javascript
JS获取各种宽度、高度的简单介绍
Dec 19 #Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 #Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 #Javascript
jQuery多级弹出菜单插件ZoneMenu
Dec 18 #Javascript
You might like
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
PHP 数组基础知识小结
2010/08/20 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
layui表格数据重载
2019/07/27 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
深入讲解Python编程中的字符串
2015/10/14 Python
Python Flask-web表单使用详解
2017/11/18 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
python SVD压缩图像的实现代码
2019/11/05 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
python简单实现插入排序实例代码
2020/12/16 Python
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
linux下进程间通信的方式
2013/01/23 面试题
工业自动化专业自荐信范文
2014/04/10 职场文书
物流管理专业求职信
2014/05/29 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
求职导师推荐信范文
2015/03/27 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL