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 相关文章推荐
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
Mar 28 Javascript
网页防止tab键的使用快速解决方法
Nov 07 Javascript
js/jquery判断浏览器类型的方法小结
May 12 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
jQuery实现div拖拽效果实例分析
Feb 20 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
js仿QQ邮箱收件人选择与搜索功能
Feb 10 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
vue实现长图垂直居上 vue实现短图垂直居中
Oct 18 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
ES6 Promise对象的应用实例分析
Jun 27 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
分享PHP守护进程类
2015/12/30 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
PHP运行模式汇总
2016/11/06 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
热点新闻滚动特效的js代码
2013/08/17 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python安装twisted的问题解析
2018/08/21 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
python 基于opencv去除图片阴影
2021/01/26 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
数控技术应届生求职信
2013/11/13 职场文书
英语感恩演讲稿
2014/01/14 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
体育节口号
2014/06/19 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
大学生军训感言
2015/08/01 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
MySQL索引失效场景及解决方案
2022/07/23 MySQL