浅谈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的拖动布局插件
Nov 25 Javascript
原生javascript和jquery判断浏览器版本等信息
Jul 04 Javascript
javascript 得到文件后缀名的思路及实现
May 09 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
Bootstrap简单表单显示学习笔记
Nov 15 Javascript
Node.js学习入门
Jan 03 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
js编写选项卡效果
May 23 Javascript
node使用UEditor富文本编辑器的方法实例
Jul 11 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 Javascript
js设置默认时间跨度过程详解
Jul 17 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正则的Unknown Modifier错误解决方法
2010/03/02 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
遗传算法python版
2018/03/19 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
python中字符串内置函数的用法总结
2018/09/13 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
员工拾金不昧表扬信
2014/01/09 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
农村改厕实施方案
2014/03/22 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
文明倡议书
2015/01/19 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
nginx请求限制配置方法
2021/07/09 Servers
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server