多物体运动的简单Demo(一)

一、Html布局
<body>
  <ul>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</body>
二、Css样式
<style>
    body,ul{
      margin:0;
      padding: 0;
    }
    ul,li{
      list-style: none;
    }
    ul li{
      width:200px;
      height: 100px;
      background: yellow;
      margin-bottom: 20px;
      filter:alpha(opacity:30); /*针对 IE8 以及更早的版本*/
      opacity:0.3;
    }
  </style>
三、Js部分
  • 改变宽/高度
<script>
    window.onload = function(){
      var aLi = document.getElementsByTagName("li");
      for (var i = 0; i < aLi.length; i++) {
        aLi[i].timer = null;
        //多物体运动 必须给每个li定义定时器
        aLi[i].onmouseover = function(){
          startMove(this,400);
        }
        aLi[i].onmouseout = function(){
          startMove(this,200);
        }
      }
    }
    startMove = function(obj,iTarget){
      clearInterval(obj.timer);
      //开启定时器前先关闭所有定时器
      obj.timer = setInterval(function(){
        var speed = (iTarget - obj.offsetWidth)/8;
        //为了方便直接使用offsetWidth 后面的demo中会修改
        speed = speed > 0?Math.ceil(speed):Math.floor(speed);
        //缓冲运动 speed>0向上取整 speed<0向下取整
        if(obj.offsetWidth == iTarget){
          clearInterval(obj.timer);
        }else{
          obj.style.width = obj.offsetWidth + speed + "px";
        }
      },30)
    }
  </script>

  • 改变透明度
<script>
    window.onload = function(){
      var aLi = document.getElementsByTagName("li");
      for (var i = 0; i < aLi.length; i++) {
        aLi[i].alpha = 30;
        //多物体运动 透明度也不能共用
        aLi[i].timer = null;
        //多物体运动 必须给每个li定义定时器
        aLi[i].onmouseover = function(){
          startMove(this,100);
        }
        aLi[i].onmouseout = function(){
          startMove(this,30);
        }
      }
    }
    startMove = function(obj,alphaNum){
      clearInterval(obj.timer);
      //开启定时器前先关闭所有定时器
      obj.timer = setInterval(function(){
        var clarity = 0;
        //定义透明度改变的速度
        if(obj.alpha > alphaNum){
          clarity = -10;
        }else{
          clarity = 10;
        }
        if(obj.alpha == alphaNum){
          clearInterval(obj.timer);
        }else{
           obj.alpha += clarity;
           obj.style.filter = 'alpha(opacity: '+obj.alpha+')';
           //针对 IE8 以及更早的版本
           obj.style.opacity = obj.alpha/100;
        }
      },30)
    }
  </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Html布局 二、Css样式 三、Js部分 改变添加边框后的宽/高度 自定义改变添加边框后的宽/高度 自定义改...
    做有趣的恶魔阅读 1,423评论 0 0
  • 基础复习笔记 JS效果三要素: 时间 事件 运动轨迹(分步骤来实现先死后活法逐步来) (1)获取元素 : getE...
    2e9a10d418ab阅读 3,118评论 0 3
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 5,882评论 0 1
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,378评论 2 17
  • 参加了八百流沙回来之后,心中就有个想法在脑海里浮现,要把对八百流沙的热爱写成一本书《我的八百流沙》。这个想法从开始...
    多多雪阅读 1,872评论 0 0