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 相关文章推荐
JS定时器实例
Apr 17 Javascript
js跳转页面方法总结
Jan 29 Javascript
推荐10 款 SVG 动画的 JavaScript 库
Mar 24 Javascript
基于jquery css3实现点击动画弹出表单源码特效
Aug 31 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
原生js的数组除重复简单实例
May 24 Javascript
详解Node.js读写中文内容文件操作
Oct 10 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
JS求解两数之和算法详解
Apr 28 Javascript
微信jssdk踩坑之签名错误invalid signature
May 19 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 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调用c接口无错版介绍
2014/03/11 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
Django 自动生成api接口文档教程
2019/11/19 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
主题婚礼策划方案
2014/02/10 职场文书
生物技术专业求职信
2014/06/10 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
综合办公室岗位职责
2015/04/11 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server