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的eval JSON object问题
Nov 15 Javascript
javascript实现文字图片上下滚动的具体实例
Jun 28 Javascript
jquery $.each() 使用小探
Aug 23 Javascript
在JavaScript中使用开平方根的sqrt()方法
Jun 15 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
Dec 29 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
Jun 13 Javascript
JavaScript获取当前url根目录(路径)
Jun 17 Javascript
js实现浏览器倒计时跳转页面效果
Aug 12 Javascript
jQuery实现大图轮播
Feb 13 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
Jun 12 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
Vue拖拽组件列表实现动态页面配置功能
Jun 17 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的面向对象编程
2006/10/09 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
使用npm安装最新版本nodejs
2018/01/18 NodeJs
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
在Django的通用视图中处理Context的方法
2015/07/21 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
python中比较两个列表的实例方法
2019/07/04 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
如何用python处理excel表格
2020/06/09 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
Java基础面试题
2012/11/02 面试题
大二法学专业职业生涯规划范文
2014/02/12 职场文书
小学安全教育材料
2014/02/17 职场文书
期末考试复习计划
2015/01/19 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏