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的星级评分插件
Aug 12 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
js实现类似菜单风格的TAB选项卡效果代码
Aug 28 Javascript
通过隐藏iframe实现无刷新上传文件操作
Mar 16 Javascript
下一代Bootstrap的5个特点 超酷炫!
Jun 17 Javascript
JS实现颜色动态淡化效果
Mar 06 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
Jul 31 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
js生成word中图片处理方法
Jan 06 Javascript
浅析vue中常见循环遍历指令的使用 v-for
Apr 18 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
Jul 04 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
Jan 27 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
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
python开发入门——列表生成式
2020/09/03 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
校园文化建设方案
2014/02/03 职场文书
在校生证明
2015/06/17 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技