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

CSS @keyframes实现环形进度条无法超过180deg停在指定位置求助

问题根因

你当前用的是双遮罩环形进度条实现方案,180度节点动画异常有三个核心问题:

  • 错误修改了第三个进度条.mask.half的clip属性,破坏了半侧遮罩的裁剪逻辑
  • 给不需要旋转的.mask.full也绑定了旋转动画,只有填充层fill需要执行旋转
  • 3/4圈总角度为270度,你只给了full层下的fill设置了180度旋转,half层下的fill没有设置剩余的90度旋转参数

修改步骤

  1. 调整动画绑定规则,仅给fill层添加动画:
/* 替换原有的动画绑定代码 */
/* .circle-wrap .circle .mask.full,
.circle-wrap .circle .fill {
  animation: fill ease-in-out 3s forwards;
} */
/* 改为如下代码 */
.circle-wrap .circle .fill {
  animation: fill ease-in-out 3s forwards;
}
  1. 修正第三个进度条的HTML代码,恢复mask.half的默认裁剪规则,给half层下的fill补充旋转参数:
<div class="circle-wrap">
    <div class="circle">
      <div class="mask full">
        <div class="fill" style="--rt:180deg;"></div>
      </div>
      <!-- 删除原来错误添加的style="clip: rect(-71px, 404px, 240px, 0px);" -->
      <div class="mask half">
        <!-- 新增剩余角度的旋转参数 -->
        <div class="fill" style="--rt:90deg"></div>
      </div>
      <div class="inside-circle">
        abc<span></span>
        <div class="cone">
          <div class="dial-speeds">
            <div class="left">
                <img src="">
              <span>abc</span>
            </div>
            <div class="right">
                <img src="">
              <span>abc</span>
            </div>
          </div>
        </div>
      </div>
    </div>
</div>

修改后总填充角度为180+90=270度,刚好对应3/4圈的展示需求,动画会正常停在目标位置。

内容的提问来源于stack exchange,提问作者John K Bell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:36:00