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

如何让所有SVG风扇实现旋转动画?当前仅单个风扇可动

解决所有SVG风扇旋转的问题

问题根源

你的CSS选择器.fan.fan2.fan3.fan4.fan5.fan6 svg只会匹配同时拥有所有这些类的元素,也就是第一个<div>,其他风扇容器只包含.fan和单个子类(比如.fan2),所以动画没被应用。另外所有SVG用position: absolute会重叠在一起,导致看起来只有一个在转。

修复方案

  1. 修正CSS选择器:用.fan svg选中所有风扇的SVG元素,确保动画应用到每个风扇。
  2. 调整布局:给每个风扇容器设置不同的位置,避免重叠。
  3. 可选优化:添加动画延迟,让风扇旋转更有层次感。

修改后的完整代码

CSS

/* 给每个风扇容器设置相对定位,方便调整位置 */
.fan {
  position: absolute;
  width: 50px;
  height: 50px;
}

/* 所有风扇的SVG应用旋转动画 */
.fan svg {
  width: 100%;
  height: 100%;
  animation: fan-spin 4s linear;
  animation-iteration-count: 4;
}

/* 给不同风扇设置位置偏移 */
.fan2 { top: 0; left: 0; }
.fan3 { top: 0; left: 80px; }
.fan4 { top: 80px; left: 0; }
.fan5 { top: 80px; left: 80px; }
.fan6 { top: 40px; left: 40px; }

@keyframes fan-spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

HTML

<div class="fan fan2">
  <svg width="50px" height="50px" viewBox="76 130 381 381">
    <g id="fan">
      <path fill="#000" stroke="#000" d="m166.3352 168.6294c5.5396 2.4448 45.2339 54.394 72.7499 91.0151-9.1901-44.8757-21.7959-109.0279-19.9558-114.796 4.1462-12.9949 33.7039-13.5172 41.5845-13.7579 7.8827-.2415 37.4165-1.5221 42.3488 11.1948 2.1872 5.6436-6.4773 70.4506-12.9142 115.8007 25.2309-38.2323 61.6818-92.5089 67.0612-95.2865 12.119-6.2568 33.3898 14.2749 39.1337 19.6768 5.7424 5.402 27.5341 25.3815 22.0294 37.859-2.4441 5.5389-54.3954 45.2354-91.0172 72.7506 44.8757-9.1901 109.0293-21.7959 114.7974-19.9559 12.9927 4.1442 13.5193 33.7032 13.7586 41.5838.2422 7.8819 1.5221 37.4165-11.192 42.3473-5.6471 2.1894-70.4541-6.4765-115.8049-12.9127 38.2323 25.2323 92.5081 61.6783 95.2871 67.0605 6.2581 12.1175-14.2742 33.3877-19.6776 39.133-5.4027 5.7432-25.3815 27.5341-37.8563 22.0279-5.5396-2.4434-45.2361-54.3961-72.7534-91.0143 9.1901 44.8757 21.7952 109.0287 19.9551 114.7953-4.1434 12.9934-33.7026 13.5157-41.5852 13.7586-7.8799.24-37.4165 1.5221-42.3431-11.1936-2.1887-5.6464 6.4779-70.4541 12.9133-115.8071-25.2323 38.2323-61.6824 92.5124-67.0639 95.2908-12.1169 6.256-33.3891-14.2728-39.1337-19.6754-5.7432-5.4027-27.5313-25.383-22.0251-37.8578 2.4434-5.5396 54.394-45.2339 91.0136-72.7526-44.8764 9.1908-109.0266 21.7944-114.7967 19.9566-12.9934-4.1434-13.5171-33.7025-13.7586-41.5852-.2407-7.8806-1.5221-37.4165 11.1963-42.346 5.6443-2.1879 70.4498 6.4752 115.8 12.9121-38.233-25.2316-92.5081-61.6783-95.2865-67.0612-6.256-12.1169 14.2748-33.3913 19.6768-39.1337 5.4006-5.7438 25.3794-27.5333 37.8584-22.0272z" />
    </g>
  </svg>
</div>
<div class="fan fan3">
  <svg width="50px" height="50px" viewBox="76 130 381 381">
    <use href="#fan" />
  </svg>
</div>
<div class="fan fan4">
  <svg width="50px" height="50px" viewBox="76 130 381 381">
    <use href="#fan" />
  </svg>
</div>
<div class="fan fan5">
  <svg width="50px" height="50px" viewBox="76 130 381 381">
    <use href="#fan" />
  </svg>
</div>
<div class="fan fan6">
  <svg width="50px" height="50px" viewBox="76 130 381 381">
    <use href="#fan" />
  </svg>
</div>

关键修改说明

  • 移除第一个容器的多余类,每个风扇容器只保留.fan和对应的子类(比如.fan2),避免选择器混淆。
  • 用.fan svg作为选择器,确保所有风扇的SVG都能获取到旋转动画。
  • 给每个.fan设置绝对定位和不同的top/left值,让风扇分散显示。
  • 若需要每个风扇旋转节奏不同,可以给不同子类添加动画延迟,比如:
    .fan3 svg { animation-delay: 0.5s; }
    .fan4 svg { animation-delay: 1s; }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:10:31