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

CSS伪元素动画速度快于主元素问题求助

伪元素动画速度比主元素快的原因及解决方法

问题根源

伪元素属于主元素的子级定位元素,当主元素执行transform: translateY(650px)动画时,伪元素的整个坐标系会跟着主元素一起移动。而你让伪元素继承了相同的动画,相当于在主元素移动的基础上,伪元素自己再额外移动650px,总位移是主元素的两倍,所以视觉上伪元素的移动速度看起来是主元素的两倍。

解决方法

核心是避免transform动画的叠加效应,可以通过两种方式实现:

方法一:将主元素设为定位容器,让所有雪花层独立执行动画

把主元素改为相对定位作为容器,让主元素和伪元素都作为独立的雪花层执行动画,这样每个元素的动画都是基于页面坐标系的,不会出现叠加:

body {
  width: 100%;
  height: 100vh;
  margin: 0;
  background-color: black;
}
.snow {
  position: relative;
  width: 100%;
  height: 100%;
  background-image: radial-gradient(4px 4px at 100px 50px, #fff, transparent);
  animation: snowAnimation 4s linear infinite;
}

.snow::after,
.snow::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(4px 4px at 100px 50px, #fff, transparent);
  animation: inherit;
}

/* 给伪元素设置不同初始位置和延迟,实现更自然的雪花效果 */
.snow::before {
  background-position: 200px 100px;
  animation-delay: 1s;
}

.snow::after {
  background-position: 300px 150px;
  animation-delay: 2s;
}

@keyframes snowAnimation {
  from {
    transform: translateY(0);
  }
  to {
    transform: translateY(650px);
  }
}
<body>
  <div class="snow"></div>
</body>

方法二:改用背景位置动画替代transform

如果不想调整定位结构,可以把动画目标从transform改为background-position-y,这样主元素和伪元素的动画都是修改背景位置,不会出现坐标系叠加的问题:

body {
  width: 100%;
  height: 100vh;
  margin: 0;
  background-color: black;
}
.snow {
  position: absolute;
  inset: 0;
  background-image: radial-gradient(4px 4px at 100px 50px, #fff, transparent);
  animation: snowAnimation 4s linear infinite;
}

.snow::after,
.snow::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(4px 4px at 100px 50px, #fff, transparent);
  animation: inherit;
}

.snow::before {
  background-position: 200px 100px;
}

.snow::after {
  background-position: 300px 150px;
}

@keyframes snowAnimation {
  from {
    background-position-y: 0;
  }
  to {
    background-position-y: 650px;
  }
}

内容的提问来源于stack exchange,提问作者Thomas Pötz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:17:40