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 相关文章推荐
关于JQuery($.load)事件的用法和分析
Apr 09 Javascript
ExtJs中gridpanel分组后组名排序实例代码
Dec 02 Javascript
jquery操作checkbox实现全选和取消全选
May 02 Javascript
javascript数据类型示例分享
Jan 19 Javascript
jquery插件star-rating.js实现星级评分特效
Apr 15 Javascript
jquery动画效果学习笔记(8种效果)
Nov 13 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
jQuery Select下拉框操作小结(推荐)
Jul 22 Javascript
基于es6三点运算符的使用方法(实例讲解)
Oct 12 Javascript
js实现各浏览器全屏代码实例
Jul 03 Javascript
详解vue-cli3开发Chrome插件实践
May 29 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 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
桌面中心(三)修改数据库
2006/10/09 PHP
一个程序下载的管理程序(二)
2006/10/09 PHP
php URL编码解码函数代码
2009/03/10 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
DEFER怎么用?
2006/07/01 Javascript
初探jquery——表单应用范例
2007/02/20 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
JS常见算法详解
2017/02/28 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
简单了解django缓存方式及配置
2019/07/19 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
python入门教程之基本算术运算符
2020/11/13 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
环境科学专业个人求职的自我评价
2013/11/28 职场文书
数学系个人求职信范文
2014/01/30 职场文书
《悯农》教学反思
2014/04/28 职场文书
幼儿园运动会口号
2014/06/07 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书