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 相关文章推荐
javascript使用activex控件的代码
Jan 27 Javascript
js获取当前页面路径示例讲解
Jan 08 Javascript
jQuery/CSS3图片特效插件整理推荐
Dec 07 Javascript
初识Node.js
Mar 20 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
javascript判断复选框是否选中的方法
Oct 16 Javascript
jquery简单倒计时实现方法
Dec 18 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
Feb 18 Javascript
BootStrap下jQuery自动完成的样式调整
May 30 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
Apr 03 Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
JavaScript Array对象使用方法解析
Sep 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
CodeIgniter视图使用注意事项
2016/01/20 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
python pycurl验证basic和digest认证的方法
2018/05/02 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Python如何对齐字符串
2020/07/30 Python
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
游戏商店:Eneba
2020/04/25 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
了解AppleTalk协议吗
2014/04/01 面试题
招聘与培训专员岗位职责
2014/01/30 职场文书
初一新生军训方案
2014/05/22 职场文书
2014年国庆标语
2014/06/30 职场文书
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
关于Python使用turtle库画任意图的问题
2022/04/01 Python