浅谈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 相关文章推荐
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
js判断空对象的实例(超简单)
Jul 26 Javascript
vuejs2.0实现一个简单的分页示例
Feb 22 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
AngularJS实现的回到顶部指令功能实例
May 17 Javascript
d3绘制基本的柱形图的实现代码
Dec 12 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
小程序和web画三角形实现解析
Sep 02 Javascript
token 机制和实现方式
Dec 15 Javascript
原生js实现自定义难度的扫雷游戏
Jan 22 Javascript
JavaScript实现优先级队列
Dec 06 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
PHP 字符串操作入门教程
2006/12/06 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
PHP多线程类及用法实例
2014/12/03 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
理解JavaScript的prototype属性
2012/02/11 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python 开发Activex组件方法
2009/11/08 Python
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
python中实现栈的三种方法
2020/12/19 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
应聘教师推荐信
2013/10/31 职场文书
幼儿师范毕业生自荐信
2013/11/09 职场文书
简历自荐信
2013/12/02 职场文书
酒店节能降耗方案
2014/05/08 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
秋季运动会开幕词
2015/01/28 职场文书
市场总监岗位职责
2015/02/11 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python