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 相关文章推荐
FireFox中textNode分片的问题
Apr 10 Javascript
jQuery lazyload 的重复加载错误以及修复方法
Nov 19 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
JavaScript function函数种类详解
Feb 22 Javascript
jQuery实现布局高宽自适应的简单实例
May 28 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
写gulp遇到的ES6问题详解
Dec 03 Javascript
vue基于两个计算属性实现选中和全选功能示例
Feb 08 Javascript
JavaScript如何实现元素全排列实例代码
May 14 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
May 08 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
EsLint入门学习教程
2017/02/17 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
在Python中使用正则表达式的方法
2015/08/13 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
django settings.py 配置文件及介绍
2019/07/15 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
django foreignkey(外键)的实现
2019/07/29 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
Python API len函数操作过程解析
2020/03/05 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
自荐信的格式
2014/03/10 职场文书
司考复习计划
2015/01/19 职场文书
党员证明模板
2015/06/19 职场文书
详解CSS3浏览器兼容
2022/12/24 HTML / CSS