You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IE9中如何实现类似CSS animate rotate的叶子持续摆动效果?

解决IE9下叶子摆动动画的问题

IE9确实不支持CSS animation 属性,也没有对应的 -ms- 前缀适配,不过既然你已经验证了单独设置 transform: rotate() 在IE9中有效,我们可以用JavaScript(结合jQuery)来模拟这个持续摆动的效果。下面是两种可行的方案:

方案1:递归调用实现循环摆动

这种方式和你原CSS动画的逻辑最接近,通过交替设置旋转角度+延迟,再递归调用自身形成无限循环:

function animateLeafSwing() {
  $(".leaf_01")
    // 转到右侧3deg
    .css("transform", "rotate(3deg)")
    // 停留800ms(对应原动画1.6s周期的一半)
    .delay(800)
    // 切换到左侧-3deg
    .queue(function(next) {
      $(this).css("transform", "rotate(-3deg)");
      next();
    })
    .delay(800)
    // 递归调用,重复循环
    .queue(function(next) {
      animateLeafSwing();
      next();
    });
}

// 启动动画
animateLeafSwing();

方案2:使用setInterval定时切换角度

如果觉得递归的方式不够直观,也可以用定时器来周期性切换旋转方向:

// 标记当前旋转方向
var isRotatingRight = true;
// 每800ms切换一次角度,总周期和原CSS动画一致
var swingInterval = setInterval(function() {
  var targetAngle = isRotatingRight ? "rotate(-3deg)" : "rotate(3deg)";
  $(".leaf_01").css("transform", targetAngle);
  // 切换方向标记
  isRotatingRight = !isRotatingRight;
}, 800);

// 如果需要停止动画,可以调用:
// clearInterval(swingInterval);

关键注意点

  • 确保你使用的jQuery版本兼容IE9(推荐jQuery 1.12.x系列,2.x及以上版本不再支持IE9)。
  • 保留原CSS中的 transform-origin: center -20px,这个属性在IE9中是支持的,它决定了叶子摆动的支点,是动画效果正确的核心。
  • 两种方案的延迟时间(800ms)对应原CSS动画的1.6s周期,你可以根据需求调整这个数值来改变摆动速度。

这样就能在IE9中实现和原CSS动画几乎一致的叶子摆动效果了。

内容的提问来源于stack exchange,提问作者user9792193

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:50:33