浅谈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 相关文章推荐
修改好的jquery滚动字幕效果实现代码
Jun 22 Javascript
用js实现in_array的方法
Nov 05 Javascript
JavaScript编程学习技巧汇总
Feb 21 Javascript
jQuery中的each()详细介绍(推荐)
May 25 Javascript
深入理解js中this的用法
May 28 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
Oct 05 Javascript
原生Javascript插件开发实践
Jan 18 Javascript
vue input实现点击按钮文字增删功能示例
Jan 29 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
vue+animation实现翻页动画
Jun 29 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
Jul 24 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 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
mysql5详细安装教程
2007/01/15 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP编程风格规范分享
2014/01/15 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
python根据文件大小打log日志
2014/10/09 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Python_LDA实现方法详解
2017/10/25 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
python自动化办公操作PPT的实现
2021/02/05 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
文秘专业大学生求职信
2013/11/10 职场文书
新书吧创业计划书
2014/01/31 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
村党建工作汇报材料
2014/11/02 职场文书
2014年客房部工作总结
2014/11/22 职场文书
先进典型事迹材料
2014/12/29 职场文书
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技