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

Safari中transform rotate关键帧动画偏心晃动问题修复咨询

修复Safari中SVG元素偏心旋转问题

问题原因

Safari对SVG元素的transform-box和transform-origin解析存在兼容性问题,导致旋转时变换原点偏离视觉中心。

修复方案

方法1:统一设置变换盒与原点

给所有需要变换的SVG子元素明确指定transform-box: fill-box和中心原点,替换原有CSS规则:

/* 统一设置变换基准 */
.link__cloud, .link__text, .link__face, .link__arrow {
  transform-box: fill-box;
  transform-origin: 50% 50%;
}

/* 保留原有动画与过渡规则 */
.link__cloud {
  animation: rotate normal infinite 60s linear;
  fill: rgba(255, 255, 255, 0.15);
}

.link__face, .link__arrow {
  transition: transform 0.15s cubic-bezier(0.32, 0, 0.67, 0);
}

.link:hover .link__face, .link:hover .link__arrow {
  transform: scale(1.1);
  transition: transform 0.3s cubic-bezier(0.33, 1, 0.68, 1);
}

.link__text {
  animation: rotateReverse normal infinite 20s linear;
}

方法2:使用具体坐标作为原点(更兼容)

由于SVG的viewBox为0 0 200 200,视觉中心坐标是100 100,直接用像素值指定原点可避免百分比解析偏差:

.link__cloud, .link__text, .link__face, .link__arrow {
  transform-origin: 100px 100px;
}

原理

  • transform-box: fill-box强制浏览器以元素自身的填充边界作为变换参考系,而非默认的SVG视口;
  • 具体坐标原点绕过了Safari对百分比原点的解析差异,确保旋转中心精准对应SVG视觉中心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:49:52