永发信息网

js怎么让一个div同时有多个运动?求大神解答

答案:1  悬赏:0  手机版
解决时间 2021-04-16 23:16
  • 提问者网友:爱了却不能说
  • 2021-04-16 06:34
js怎么让一个div同时有多个运动?求大神解答
最佳答案
  • 五星知识达人网友:荒野風
  • 2021-04-16 08:05
改成这样就行了:不要把timer绑定在obj上,这样就一起都清除了,放到闭包里面,这样就只会清除和那个属性变化相关的timer
function getStyle(obj, name) {
  if (obj.currentStyle) {
    return obj.currentStyle[name]
  } else {
    return getComputedStyle(obj, false)[name]
  }
}

function startMove(obj, name, iTarget) {
// this_timer会在动作完成后,在闭包中清除
  var this_timer = setInterval(function() {
    var cur = 0;
    if (name == "opacity") {
      cur = Math.round(parseFloat(getStyle(obj, name)) * 100)
    } else {
      cur = parseInt(getStyle(obj, name))
    }
    var speed = (iTarget - cur) / 5
    speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed)
    if (iTarget == cur) {
    // 释放计时器
      clearInterval(this_timer)
    } else {
      if (name == "opacity") {
        obj.style.filter = "alpha(opacity=" + (cur + speed) + ")"
        obj.style.opacity = (cur + speed) / 100
      } else {
        obj.style[name] = cur + speed + "px"
      }
    }
  }, 30)
}
var oEwmf=document.getElementById("ewm")
var oEwm=oEwmf.getElementsByTagName("img")[0]
oEwm.onmouseover = function() {
  startMove(this, "height", 180)
  startMove(this, "width", 180)
}
oEwm.onmouseout = function() {
  startMove(this, "height", 80)
  startMove(this, "width", 80)
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯