浅谈Javascript如何实现匀速运动


Posted in Javascript onDecember 19, 2014

网站上会经常用到Javascript 中的运动,这次与大家分享一下一些运动的基本应用 。 方便大家在开发中能够直接使用。

代码简单易懂,适用于初学者。最后会一步一步整理出一套自己的运动框架。

应用案例效果图:

浅谈Javascript如何实现匀速运动

鼠标移动到分享上 ,左边的div就会显示出来。移开会自己恢复。相信这个大家都会用到 很实用,下面看看代码是如何实现的。

<style type="text/css">

            #div1 {

                width: 150px;

                height: 200px;

                background: green;

                position: absolute;

                left: -150px;

            }

            #div1 span {

                position: absolute;

                width: 20px;

                height: 60px;

                line-height: 20px;

                background: blue;

                right: -20px;

                top: 70px;

            }

        </style>
<body>

        <div id="div1">

            <span>

                分享到

            </span>

        </div>

    </body>

以下是Javascript 代码

<script type="text/javascript">

            window.onload=function(){

                var oDiv=document.getElementById("div1");

                oDiv.onmouseover=function(){

                    startMove(0);

                };

                oDiv.onmouseout=function(){

                    startMove(-150);

                };

            }

            var time=null;

            function startMove(iTraget){

                var oDiv=document.getElementById("div1");

                clearInterval(time);

                time=setInterval(function(){

                    var speed=0;

                    if(oDiv.offsetLeft>iTraget){

                        speed=-10;

                    }else{

                        speed=10;

                    }

                    if(oDiv.offsetLeft==iTraget){

                        clearInterval(time);

                    }else{

                        oDiv.style.left=oDiv.offsetLeft+speed+'px';

                    }

                },30);

            }

        </script>

思路:

样式中初始的left是-150 这样div就是缩在里面,给0 就会显示出来。 那么我们只要变动这个值就可以了

startMove 中的参数 iTarget 是目标点 ,表示到哪个目标点会停下来。

控制speed 的大小 就能控制运动的快慢。如果达到目标点 就停止定时器 。

规律:

*  假设

*         left:30           iTarget:300     得出    往右  为正
*         left:600         iTarget:50       得出    往左  为负

* 通过当前位置left 与目标点的 关系 iTarget 推断出 速度的正负

注意: 一上来就要关了定时器,因为是每次移动到分享到,都会开个定时器,开的越多相对来说速度就越快,因为同时会有多个定时器执行。

所以每次要保证一个定时器工作。

遵循:函数功能一样,参数越少越好的原则 ,所以根据上面的规律把speed 并不是作为参数传入。

举个生活中的例子:你打车,告诉出租车司机已100码的速度到哪哪哪,一般是不可能的吧。打车你不可能告诉师傅你要跑多快

所以程序也是一样的,这里就把速度这个传参去掉了。

当然现在的这个运动框架还会有许多问题,在之后会陆续解决。下篇文章,我们来探讨下匀速运动如何停止。

Javascript 相关文章推荐
javascript 面向对象编程  function是方法(函数)
Sep 17 Javascript
jQuery中after的两种用法实例
Jul 03 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
May 29 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
微信小程序 页面传参实例详解
Nov 16 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
Javascript添加监听与删除监听用法详解
Dec 19 #Javascript
Javascript 实现图片无缝滚动
Dec 19 #Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 #Javascript
JS获取各种宽度、高度的简单介绍
Dec 19 #Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 #Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 #Javascript
jQuery多级弹出菜单插件ZoneMenu
Dec 18 #Javascript
You might like
第十节--抽象方法和抽象类
2006/11/16 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python可迭代对象操作示例
2019/05/07 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
Python 实现数组相减示例
2019/12/27 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
AJAX的优缺点都有什么
2015/08/18 面试题
大学毕业生简单自荐信
2013/11/05 职场文书
高中的职业生涯规划书
2013/12/28 职场文书
班主任2015新年寄语
2014/12/08 职场文书
孔庙导游词
2015/02/04 职场文书
高考学习决心书
2015/02/04 职场文书
法律进社区活动总结
2015/05/07 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python