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

如何让CSS translate位移效果适配SVG圆形弧块的自身摆放角度?

实现方案

要实现各弧段hover时沿自身径向向外位移,可通过CSS变换组合+少量JS逻辑实现,具体操作如下:

1 修正HTML规范问题

原代码中多个<g>标签共用相同id="arc",不符合HTML id唯一性要求,将所有对应标签的属性修改为class="arc"。

2 调整CSS基础配置

给弧段统一设置过渡效果和变换原点,变换原点设为整个圆形的中心坐标,保证旋转、位移的基准正确:

.arc {
  transition: all 0.2s;
  /* 对应SVG viewBox="0 0 439 439"的中心位置 */
  transform-origin: 219.5px 219.5px;
}

3 添加JS逻辑实现角度适配的位移

核心逻辑是利用CSS变换的叠加效果:先将弧段旋转到自身径向对齐全局Y轴,向外位移后再旋转回原角度,即可实现沿弧段自身径向的位移效果。
你的弧段是6等分圆形,每个弧段夹角为60度,直接按顺序绑定对应中心角度即可:

const arcs = document.querySelectorAll('.arc');
// 按给出的6个弧段顺序匹配的中心角度,单位为度
const arcCenterAngles = [30, 150, 210, 330, 270, 90];

arcs.forEach((arc, idx) => {
  const angle = arcCenterAngles[idx];
  // 鼠标移入时沿径向向外位移10px
  arc.addEventListener('mouseenter', () => {
    arc.style.transform = `rotate(${angle}deg) translateY(10px) rotate(${-angle}deg)`;
  });
  // 鼠标移出时复位
  arc.addEventListener('mouseleave', () => {
    arc.style.transform = 'none';
  });
});

如果需要适配任意非等分的弧段,可通过解析弧段path的坐标,自动计算每个弧段的中心角度,无需手动维护角度数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:48:00