js实现同一页面多个运动效果的方法


Posted in Javascript onApril 10, 2015

本文实例讲述了js实现同一页面多个运动效果的方法。分享给大家供大家参考。具体分析如下:

实现原理,就是在调用的时候,给这五个元素,循环加上事件。需要注意的是,每个元素的定时器需要分开。

要点一:

var speed = (target - obj.offsetWidth)/8;

缓冲运动效果,一开始速度很快,然后越来越慢,直到停止

speed = speed>0?Math.ceil(speed):Math.floor(speed);

如果速度大于0,则向上取整,如果速度小于0,则向下取整。

要点二:

if(obj.offsetWidth == target){
clearInterval(obj.timer);
}else{
obj.style.width = obj.offsetWidth+speed+"px";
}

元素宽度和目标值比较,如果相等,关闭定时器,否则,宽度继续增加。

要点三:

for(i=0; i<runs_li.length; i++){
runs_li[i].timer = null;
runs_li[i].onmouseover = function(){
startrun(this,300);
}
runs_li[i].onmouseout = function(){
startrun(this,80);
}
}

给每个元素加上各自的定时器属性,各自的鼠标事件,在鼠标事件中调用运动函数。

最后,上代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
body,ul,li{margin:0; padding:0;}
#runs li{width:80px; height:80px; background:#06c; list-style:none;
position:absolute; left:0;}
</style>
<script>
window.onload = function(){
 var runs = document.getElementById("runs");
 var runs_li = runs.getElementsByTagName("li");
 var i=0;
 for(i=0; i<runs_li.length; i++){
 runs_li[i].timer = null;
 runs_li[i].onmouseover = function(){
  startrun(this,300);
 }
 runs_li[i].onmouseout = function(){
  startrun(this,80);
 }
 }
}
function startrun(obj,target){
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
 var speed = (target - obj.offsetWidth)/8;
 speed = speed>0?Math.ceil(speed):Math.floor(speed);
 
 if(obj.offsetWidth == target){
  clearInterval(obj.timer);
 }else{
  obj.style.width = obj.offsetWidth+speed+"px";
 }
 document.title = obj.offsetWidth + ',' + target;
 },30);
}
</script>
</head>
<body>
<ul id="runs">
 <li style="top:0">1</li>
 <li style="top:90px;">2</li>
 <li style="top:180px;">3</li>
 <li style="top:270px;">4</li>
 <li style="top:360px;">5</li>
</ul>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript 有用的脚本函数
May 07 Javascript
function foo的原型与prototype属性解惑
Nov 19 Javascript
jQuery中live方法的重复绑定说明
Oct 21 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
Jul 20 Javascript
ECMAScript6快速入手攻略
Jul 18 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
最实用的JS数组函数整理
Dec 05 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 Javascript
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
详解JavaScript作用域 闭包
Jul 29 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 #Javascript
js实现缓冲运动效果的方法
Apr 10 #Javascript
js实现分享到随页面滚动而滑动效果的方法
Apr 10 #Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 #Javascript
js实现类似jquery里animate动画效果的方法
Apr 10 #Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 #Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
Apr 10 #Javascript
You might like
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
深入Python解释器理解Python中的字节码
2015/04/01 Python
python实现线程池的方法
2015/06/30 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
详解python深浅拷贝区别
2019/06/24 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
生物学学生自我评价
2014/01/17 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
Mysql基础之常见函数
2021/04/22 MySQL