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 EasyUI API 中文文档 - Tree树使用介绍
Nov 19 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
原生js制作简单的数字键盘
Apr 24 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
基于jQuery Tipso插件实现消息提示框特效
Mar 16 Javascript
详解jQuery中的empty、remove和detach
Apr 11 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
Jun 16 Javascript
使用axios实现上传图片进度条功能
Dec 21 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
Apr 03 Javascript
elementUI多选框反选的实现代码
Apr 03 Javascript
vue父子模板传值问题解决方法案例分析
Feb 26 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
Python切片用法实例教程
2014/09/08 Python
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python实现将元祖转换成数组的方法
2015/05/04 Python
Python第三方库的安装方法总结
2016/06/06 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
Python生成器generator用法示例
2018/08/10 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
5款实用的python 工具推荐
2020/10/13 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
写好自荐信要注意的问题
2013/11/10 职场文书
驾驶员岗位职责
2014/01/29 职场文书
关于建议书的格式范文
2014/05/20 职场文书
留守儿童工作方案
2014/06/02 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL