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

WebKit Transform Rotate在Safari中失效,求CSS旋转动画兼容方案

解决Safari中CSS旋转动画不生效的问题

问题分析

你这段六边形旋转动画在Safari里失效的核心原因是在同一个关键帧中重复声明了transform属性。浏览器解析CSS时,同一个属性的重复声明会被后面的覆盖——比如你在68%的关键帧里写了:

transform:rotate(0deg);
transform:scale(1);

最终浏览器只会应用transform:scale(1),旋转效果直接被忽略了。Safari对这种写法的兼容性要求更严格,这就导致整个动画的旋转逻辑完全乱掉了。

修复方案

把每个关键帧里的多个变换操作合并到同一个transform属性中,用空格分隔不同的变换函数就行(变换顺序不影响最终效果,保持统一即可):

@keyframes hexagon {
  0% { 
    transform: rotate(0deg); 
  }
  50% { 
    transform: rotate(360deg); 
  }
  68% { 
    transform: rotate(0deg) scale(1); 
  }
  71% { 
    transform: rotate(0deg) scale(1); 
  }
  76% { 
    transform: rotate(360deg) scale(1.25); 
  }
  85% { 
    transform: rotate(360deg) scale(1); 
  }
  86% { 
    transform: rotate(360deg) scale(1); 
  }
  100% { 
    transform: rotate(0deg); 
  }
}

额外兼容性优化

如果需要兼容更旧版本的Safari,可以添加-webkit-前缀(现在主流新版本Safari已经支持标准语法,但保险起见可以加上):

@-webkit-keyframes hexagon {
  /* 复制上面修复后的关键帧内容 */
}

/* 给目标元素应用动画时也要加前缀 */
.your-hexagon-class {
  -webkit-animation: hexagon 2s infinite;
  animation: hexagon 2s infinite;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:57:56