JS实现匀速运动的代码实例


Posted in Javascript onNovember 29, 2013

效果:

JS实现匀速运动的代码实例

 

思路:

利用setInerval()计时器,进行运动。然后关键的一点是在最后停止的时候给它一个填充缝隙的判断。

代码:

<head runat="server">
    <title></title>
    <style type="text/css">
        #div1
        {
            width: 100px;
            height: 100px;
            background: #0000FF;
            position: absolute;
            left: 800px;
            top: 100px;
        }
        #div200
        {
            width: 1px;
            height: 400px;
            background: #FF0000;
            position: absolute;
            left: 200px;
        }
        #div500
        {
            width: 1px;
            height: 400px;
            background: #FF0000;
            position: absolute;
            left: 500px;
        }
    </style>
    <script type="text/javascript">
        function move(end) {
            var oDiv = document.getElementById('div1');
            var timer = null;
            timer = setInterval(function () {
                var speed = (end - oDiv.offsetLeft) / 5;        //根据终点和offsetLeft取出运动的速度
                speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);       //进位取整,小数位变为整位,
                //                if (oDiv.offsetLeft <= end) {
                //                    clearInterval(timer);
                //                }
                //                else {
                //                    oDiv.style.left = oDiv.offsetLeft + speed + 'px';
                //                }
                if (Math.abs(end - oDiv.offsetLeft) <= speed) { //由于在停止的时候最后会出现小的缝隙,或者说没有完全的到达指定地点,所以要小于它的速度
                    clearInterval(timer);                       //当距离小于速度时,让计时器停止
                    oDiv.style.left = end + 'px';           //在停止后填充缝隙。
                }
                else {
                    oDiv.style.left = oDiv.offsetLeft + speed + 'px';       //移动DIV
                }
            }, 30)
        }
    </script>
</head>
<body>
    <input type="button" id="btn1" value="到500的位置" onclick="move(500);" />
    <input type="button" id="btn2" value="到200的位置" onclick="move(200);" />
    <div id="div1">
    </div>
    <div id="div200">200
    </div>
    <div id="div500">500
    </div>
</body>
Javascript 相关文章推荐
用js做一个小游戏平台 (一)
Dec 29 Javascript
jQuery 回车事件enter使用示例
Feb 18 Javascript
js获取鼠标点击的位置实现思路及代码
May 09 Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
jQuery实现的跨容器无缝拖动效果代码
Jun 21 Javascript
使用JavaScript获取URL中的参数(两种方法)
Nov 16 Javascript
vue-router:嵌套路由的使用方法
Feb 21 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
vue引用外部JS的两种种方法
Jan 28 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 Javascript
JS实现侧悬浮浮动实例代码
Nov 29 #Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 #Javascript
JS实现日期加减的方法
Nov 29 #Javascript
js弹出层永远居中实现思路及代码
Nov 29 #Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 #Javascript
JS取文本框中最小值的简单实例
Nov 29 #Javascript
js中的eventType事件及其浏览器支持性介绍
Nov 29 #Javascript
You might like
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
php正则
2006/07/07 PHP
php基础知识:函数基础知识
2006/12/13 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
jQuery 位置插件
2008/12/25 Javascript
javascript 类方法定义还是有点区别
2009/04/15 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
浅谈js闭包理解
2019/03/28 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
Python中给List添加元素的4种方法分享
2014/11/28 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python执行时间的计算方法小结
2017/03/17 Python
用python与文件进行交互的方法
2018/03/01 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python实现的质因式分解算法示例
2018/05/03 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
pymysql的简单封装代码实例
2020/01/08 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
企业委托书范本
2014/09/13 职场文书
新郎结婚保证书
2015/02/26 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书