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

CSS Animation实现#container内元素从右向左移动失效求助

问题原因

你的代码存在三个核心错误导致动画无法生效、效果不符合预期:

  • 语法错误:原生CSS不支持选择器嵌套,你将@keyframes moving写在了.items的样式块内部,浏览器无法识别该动画声明,动画本身没有被成功注册
  • 逻辑错误:你动画控制的background-position属性仅用于调整元素背景图片的位置,完全不会改变元素自身的坐标,自然看不到元素移动的效果
  • 配置错误:你给每个独立的.items加了动画,而你要实现的是整行元素整体左移,正确做法是将动画绑定在父容器#container上

修正后代码

CSS代码

#container {
  display: grid;
  align-items: stretch;
  /* 如果需要无缝循环,这里改成repeat(12, minmax(300px, 1fr)),同时HTML复制6份items */
  grid-template-columns: repeat(6, minmax(300px, 1fr));
  grid-column-gap: 30px;
  grid-row-gap: 20px;
  overflow: hidden;
  width: 100%;
  animation: moving 30s infinite linear;
}

.items {
  height: 210px;
  background-color: blue;
}

@keyframes moving {
  0% {
    transform: translateX(0);
  }
  100% {
    /* 移动距离为单行总宽度:6*300px + 5*30px = 1950px */
    transform: translateX(-1950px);
  }
}

HTML代码(基础版)

<div id="container">
  <div class="items"></div>
  <div class="items"></div>
  <div class="items"></div>
  <div class="items"></div>
  <div class="items"></div>
  <div class="items"></div>
</div>

无缝循环优化

如果需要避免滚动到末尾跳回的突兀感,实现完全无缝的无限循环,可将HTML中的.items复制6份(总共12个元素),同时把CSS中grid-template-columns参数改为repeat(12, minmax(300px, 1fr))即可,其余代码不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:18:02