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

将图片放入div元素后CSS动画仍不生效,是什么原因?

问题根因

  • CSS中left偏移属性仅对position为relative/absolute/fixed的元素生效,默认所有元素定位为static,因此你定义的horse动画修改left不会产生任何视觉效果,这是动画不生效的核心原因。
  • 外层#track容器未设置高度,背景图无法正常渲染,也会干扰动画效果的观测。
  • 直接使用div作为选择器过于宽泛,容易意外影响页面其他div元素,建议替换为更精准的选择器。

修复后代码

CSS 代码

#track{
    background: url(https://t4.ftcdn.net/jpg/02/79/76/03/240_F_279760385_TMIljsgKvdgTFjRfefxKIHhqAqd1qT39.jpg);
    background-repeat: no-repeat;
    background-size: 100% 100%;
    height: 100vh; /* 新增:给轨道设置高度,正常显示背景 */
    position: relative; /* 新增:可作为子元素绝对定位的参照容器 */
}
/* 替换通用div选择器为更精准的范围选择器 */
#track .horsee div{
    position: relative; /* 新增:开启定位,让left属性修改生效 */
    display: flex;
    flex-flow: column;
    align-self: start;
    height: 20vh;
    width: 25vh;
    z-index: 2;
    animation-name: horse;
    animation-duration: 5s;
    animation-iteration-count: infinite;
}
#horse1{
    animation-timing-function: ease;
}
#horse2{
    animation-timing-function: ease-in;
}
#horse3{
    animation-timing-function: ease-out;
}
#horse4{
    animation-timing-function: step-end;
}
#horse5{
    animation-timing-function: linear;
}
@keyframes horse{
    0%{
        left: 0%;
    }
    80%{
        left: 80%;
    }
    100%{
        left: 0%; /* 可选新增:让动画循环更流畅,跑完自动回到起点 */
    }
}

HTML 代码(无需修改)

<section id="track">
    <section class="horsee">
        <div id="horse1"><img src="https://i.pinimg.com/originals/80/b9/f4/80b9f49b3131c76e567945dc9bd14166.gif" class="horsee" alt="horse1"></div>
        <div id="horse2"><img src="https://i.pinimg.com/originals/80/b9/f4/80b9f49b3131c76e567945dc9bd14166.gif" class="horsee" alt="horse2"></div>
        <div id="horse3"><img src="https://i.pinimg.com/originals/80/b9/f4/80b9f49b3131c76e567945dc9bd14166.gif" class="horsee" alt="horse3"></div>
        <div id="horse4"><img src="https://i.pinimg.com/originals/80/b9/f4/80b9f49b3131c76e567945dc9bd14166.gif" class="horsee" alt="horse4"></div>
        <div id="horse5"><img src="https://i.pinimg.com/originals/80/b9/f4/80b9f49b3131c76e567945dc9bd14166.gif" class="horsee" alt="horse5"></div>
    </section>
</section>

补充说明

如果不需要元素相对自身原始位置位移,也可以把horse容器的position设为absolute,此时left是相对于外层#track容器的偏移,可根据实际布局需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:54:08