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 相关文章推荐
input的focus方法使用
Mar 13 Javascript
document.createElement()用法
Mar 13 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
Oct 30 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
Angular的事件和表单详解
Dec 26 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
解决URL地址中的中文乱码问题的办法
Feb 10 Javascript
JS实现两周内自动登录功能
Mar 23 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
Jun 02 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 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
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
用JS在浏览器中创建下载文件
2014/03/05 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
python中的错误处理
2016/04/10 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
python中requests小技巧
2017/05/10 Python
Python 多进程和数据传递的理解
2017/10/09 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python异步存储数据详解
2019/03/19 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
德国拖鞋网站:German Slippers
2019/11/08 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
建筑工程自我鉴定
2013/10/18 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
校运会班级霸气口号
2015/12/24 职场文书
Python中的pprint模块
2021/11/27 Python
Python中如何处理常见报错
2022/01/18 Python
什么是SOLID
2022/03/24 Javascript