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实现的网页局布刷新效果
Dec 01 Javascript
JQuery 浮动导航栏实现代码
Aug 27 Javascript
JavaScript中常见陷阱小结
Apr 27 Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 Javascript
原生javascript实现自动更新的时间日期
Feb 12 Javascript
前端性能优化及技巧
May 06 Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
Jul 04 Javascript
three.js加载obj模型的实例代码
Nov 10 Javascript
小程序图片长按识别功能的实现方法
Aug 30 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python随机生成带特殊字符的密码
2016/03/02 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
python如何查看安装了的模块
2020/06/23 Python
Python configparser模块应用过程解析
2020/08/14 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
软件测试常见笔试题
2012/02/04 面试题
网络编辑职责
2014/03/01 职场文书
小学清明节活动方案
2014/03/08 职场文书
文明之星事迹材料
2014/05/09 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
2016高考寄语集锦
2015/12/04 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python