当前位置: 首页 > 编程笔记 >

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

柯甫
2023-03-14
本文向大家介绍js实现同一页面多个不同运动效果的方法,包括了js实现同一页面多个不同运动效果的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • 本文向大家介绍js实现同一页面多个运动效果的方法,包括了js实现同一页面多个运动效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现同一页面多个运动效果的方法。分享给大家供大家参考。具体分析如下: 实现原理,就是在调用的时候,给这五个元素,循环加上事件。需要注意的是,每个元素的定时器需要分开。 要点一: 缓冲运动效果,一开始速度很快,然后越来越慢,直到停止 如果速度大于0,则

  • 本文向大家介绍js实现同一个页面多个渐变效果的方法,包括了js实现同一个页面多个渐变效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现同一个页面多个渐变效果的方法。分享给大家供大家参考。具体分析如下: 这里可实现5个元素中随便一个,鼠标移上去透明度渐渐增加,鼠标移出,透明度渐渐减小的效果。 要点一: 根据目标值和当时值的对比,来决定是正向还是负向速度。 要点二: 给每一个元

  • 本文向大家介绍js实现缓冲运动效果的方法,包括了js实现缓冲运动效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现缓冲运动效果的方法。分享给大家供大家参考。具体分析如下: 该实例可实现一开始速度很快,然后慢下来,直到停止的效果。 要点: 目标点减去元素的当前位置的值除以8,因为offsetleft的值是一直在变大,所以速度的值也是一直的变小 正向速度的时候向上取整,反向速度

  • 实现瀑布流浏览互联网图片的界面效果。 开发者@假如你就是李四 说:最近看了几个别人写的瀑布效果源码,感觉复杂了点,于是自己通过UITableview的组合实现了下这个效果,感觉性能上应该还不错。里面用到了第三方的库(SDWebImage)和数据。 [Code4App.com]

  • 本文向大家介绍js实现下一页页码效果,包括了js实现下一页页码效果的使用技巧和注意事项,需要的朋友参考一下 效果图: 代码如下: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 本文向大家介绍js实现分享到随页面滚动而滑动效果的方法,包括了js实现分享到随页面滚动而滑动效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现分享到随页面滚动而滑动效果的方法。分享给大家供大家参考。具体如下: 页面向上向下滚动,分享到的模块随着滑动。 要点: 获得页面垂直居中的位置   上代码: 希望本文所述对大家的javascript程序设计有所帮助。