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分析、压缩工具 JavaScript Analyser
Nov 30 Javascript
ajax读取数据后使用jqchart显示图表的方法
Jun 10 Javascript
跟我学习javascript的闭包
Nov 16 Javascript
JQuery中Ajax()的data参数类型实例分析
Dec 15 Javascript
javascript基本语法
May 31 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
JS实现简易换图时钟功能分析
Jan 04 Javascript
node.js读取Excel数据(下载图片)的方法示例
Aug 02 Javascript
vue项目中axios请求网络接口封装的示例代码
Dec 18 Javascript
vue-cli3 取消eslint校验代码的解决办法
Jan 16 Javascript
基于JavaScript的数据结构队列动画实现示例解析
Aug 06 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
一些使用频率比较高的php函数
2008/10/03 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
javascript 动态加载 css 方法总结
2009/07/11 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
js加强的经典分页实例
2013/03/15 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
token 机制和实现方式
2020/12/15 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
python处理xml文件的方法小结
2017/05/02 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
学前教育教师求职自荐信
2013/09/22 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Nginx配置使用详解
2022/07/07 Servers