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


Posted in Javascript onApril 10, 2015

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

要点一:

function getstyle(obj,name){
if(obj.currentStyle){
return obj.currentStyle[name];
}else{
return getComputedStyle(obj,false)[name];
}
}

从样式表中根据id和属性名取值。

要点二:

if(attr == "opacity"){
cur = Math.round(parseFloat(getstyle(obj,attr))*100);
}else{
cur = parseInt(getstyle(obj,attr));
}

如果设置的是透明度的值,因为有可能会是小数点,所以需要用parseFloat,然后有可能会有小数,用round方法四舍五入取整。

如果设置的非透明度值,用parseInt,可以只取数值部分

其它的注意点,前面几篇都有提到,此处不再赘述。

最后,上代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>无标题文档</title>
<style>
body,ul,li{margin:0; padding:0;}
#runs li{width:80px; height:80px; background:#06c;
list-style:none; margin:10px; border:1px solid #000;
filter:alpha(opacity=30); opacity:0.3;}
</style>
<script>
window.onload = function(){
 var runs = document.getElementById("runs");
 var runs_li = runs.getElementsByTagName("li");
  runs_li[0].onmouseover = function(){
   startrun(this,"width",300);
  }
  runs_li[0].onmouseout = function(){
   startrun(this,"width",80);
  }
  runs_li[1].onmouseover = function(){
   startrun(this,"height",300);
  }
  runs_li[1].onmouseout = function(){
   startrun(this,"height",80);
  }
  runs_li[2].onmouseover = function(){
   startrun(this,"fontSize",50);
  }
  runs_li[2].onmouseout = function(){
   startrun(this,"fontSize",14);
  }
  runs_li[3].onmouseover = function(){
   startrun(this,"opacity",100);
  }
  runs_li[3].onmouseout = function(){
   startrun(this,"opacity",30);
  }
}
function startrun(obj,attr,target){
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
 var cur = 0;
 if(attr == "opacity"){
  cur = Math.round(parseFloat(getstyle(obj,attr))*100);
 }else{
  cur = parseInt(getstyle(obj,attr));
 }
 var speed = (target - cur)/8;
 speed = speed>0?Math.ceil(speed):Math.floor(speed);
  
  if(cur == target){
   clearInterval(obj.timer);
  }else{
   if(attr == "opacity"){
    obj.style.filter='alpha(opacity='+(cur+speed)+')';
    obj.style.opacity=(cur+speed)/100;
   }else{
    obj.style[attr] = cur+speed+"px";
   }
  }
 },30);
}
function getstyle(obj,name){
 if(obj.currentStyle){
  return obj.currentStyle[name];
 }else{
  return getComputedStyle(obj,false)[name];
 }
}
</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>
</ul>
</body>
</html>

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

Javascript 相关文章推荐
几个javascript操作word的参考代码
Oct 26 Javascript
Javascript继承(上)——对象构建介绍
Nov 08 Javascript
浅析tr的隐藏和显示问题
Mar 05 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
Aug 01 Javascript
学习Node.js模块机制
Oct 17 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
详解如何使用koa实现socket.io官网的例子
Nov 04 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 Javascript
js实现类似jquery里animate动画效果的方法
Apr 10 #Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 #Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
Apr 10 #Javascript
js简单的点击返回顶部效果实现方法
Apr 10 #Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 #Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 #Javascript
JavaScript 变量、作用域及内存
Apr 08 #Javascript
You might like
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
javascript中new关键字详解
2015/12/14 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
python 正确保留多位小数的实例
2018/07/16 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
公益广告宣传方案
2014/02/28 职场文书
校园绿化美化方案
2014/06/08 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
开除员工通知
2015/04/22 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers