浅谈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 相关文章推荐
将函数的实际参数转换成数组的方法
Jan 25 Javascript
非html5实现js版弹球游戏示例代码
Sep 22 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
js实现拖拽效果
Feb 12 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 Javascript
实例详解jQuery结合GridView控件的使用方法
Jan 04 Javascript
JavaScript重载函数实例剖析
May 13 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
浅谈如何使用 webpack 优化资源
Oct 20 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
May 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
PHP实现时间轴函数代码
2011/10/08 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
js实现录音上传功能
2019/11/22 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
python文件比较示例分享
2014/01/10 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python实现与redis交互操作详解
2020/04/21 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
python中四舍五入的正确打开方式
2021/01/18 Python
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
EJB面试题
2015/07/28 面试题
仓库管理制度
2014/01/21 职场文书
关于期中考试的反思
2014/02/02 职场文书
活动策划求职信模板
2014/04/21 职场文书
2014年个人工作总结范文
2014/11/07 职场文书