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 全面解析各种浏览器网页中的JS 执行顺序
Feb 17 Javascript
运算符&amp;&amp;的三个不同层次
Apr 07 Javascript
一个JS的日期格式化算法示例
Jul 31 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
js实现微信分享代码
Oct 11 Javascript
jquery siblings获取同辈元素用法实例分析
Jul 25 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 Javascript
JavaScript实现瀑布流以及加载效果
Feb 11 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
vue中使用v-for时为什么不能用index作为key
Apr 04 Javascript
5个实用的JavaScript新特性
Jun 16 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
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
php简单截取字符串代码示例
2016/10/19 PHP
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
jquery延迟对象解析
2016/10/26 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
python同步两个文件夹下的内容
2019/08/29 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
气象学专业个人求职信
2014/04/22 职场文书
学校搬迁方案
2014/06/15 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript