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

基于WebKit内核的浏览器中SVG动画显示异常问题求助

Safari下SVG加载动画异常的修复方案

针对你遇到的WebKit内核浏览器(如Safari)中SVG加载动画失效的问题,核心原因有两个:一是SVG元素的旋转原点默认值在WebKit中与Chrome不一致,二是原代码中使用的stroke-dasharray数值未匹配圆的实际周长,导致浏览器解析差异。

以下是修复后的完整代码:

CSS代码

.progressIndicator {
  stroke: red;
}

.progressIndicator svg {
  animation: crotate 1.5s linear infinite;
  -webkit-animation: crotate 1.5s linear infinite;
  height: 100%;
  width: 100%;
  /* 明确设置旋转原点为中心,解决WebKit下旋转偏移问题 */
  transform-origin: center center;
  -webkit-transform-origin: center center;
}

.progressIndicator circle {
  stroke-dasharray: 1, 125.66; /* 使用圆的实际周长2*π*20≈125.66 */
  stroke-dashoffset: 0;
  animation: cdash 1.5s ease-in-out infinite;
  -webkit-animation: cdash 1.5s ease-in-out infinite;
  stroke-linecap: round;
  fill: none;
  stroke-width: 7.5px;
  /* 开启硬件加速,优化WebKit下动画流畅度 */
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
}

@keyframes crotate {
  100% {
    transform: rotate(360deg);
  }
}

@-webkit-keyframes crotate {
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@keyframes cdash {
  0% {
    stroke-dasharray: 1, 125.66;
    stroke-dashoffset: 0;
  }
  50% {
    stroke-dasharray: 44.83, 125.66; /* 按周长比例换算原89的对应值 */
    stroke-dashoffset: -21.99; /* 按周长比例换算原-35的对应值 */
  }
  100% {
    stroke-dasharray: 44.83, 125.66;
    stroke-dashoffset: -77.79; /* 按周长比例换算原-124的对应值 */
  }
}

@-webkit-keyframes cdash {
  0% {
    stroke-dasharray: 1, 125.66;
    stroke-dashoffset: 0;
  }
  50% {
    stroke-dasharray: 44.83, 125.66;
    stroke-dashoffset: -21.99;
  }
  100% {
    stroke-dasharray: 44.83, 125.66;
    stroke-dashoffset: -77.79;
  }
}

HTML代码

<div class="progressIndicator">
  <svg viewBox="0 0 100 100">
    <circle cx="50" cy="50" r="20" />
  </svg>
</div>

关键改动说明

  • 设置旋转原点:给SVG元素添加transform-origin: center center及WebKit前缀,确保旋转时绕圆心进行,解决Safari中旋转偏移的问题。
  • 匹配圆周长:将stroke-dasharray和stroke-dashoffset的数值按照圆的实际周长(2*π*半径)进行换算,避免不同浏览器对非标准数值的解析差异。
  • 硬件加速:给circle元素添加translateZ(0)触发硬件加速,提升WebKit浏览器下的动画流畅度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:03:20