【发布时间】:2021-12-19 04:58:47
【问题描述】:
在使用translateX 转换属性为两张图像设置动画时,是否可以让 CSS 滑块循环显示它们?
我面临几个问题:
-
我似乎无法显示第二张图片,即使它在 HTML 中,除非我使用
position: absolute然后overflow: hidden在父级上不起作用? -
如何重置第一张图片以回到开头重新开始?
注意:在动画速记中,动画持续2.5s,初始延迟3s。
我只想使用 translateX 属性来处理这个,因为我想要 60FPS 的平滑度(完成后将使用 translate3d 来完成,但是为了使代码更易于阅读,我使用了 translateX)。我不想为margin: left 或left 属性等设置动画。
任何帮助都会很棒。
代码在下方或链接到 Codepen:https://codepen.io/anna_paul/pen/ZEJrvRp
body {
position: relative;
margin: 0;
display: flex;
justify-content: center;
}
.container {
width: 500px;
height: 333px;
overflow: hidden;
}
.slider-wrapper {
display: flex;
}
.image {
display: block;
}
.hero-image-1 {
transform: translateX(0);
animation: slide-out-image-1 2.5s 3s cubic-bezier(0.54, 0.12, 0.44, 1)
forwards;
}
@keyframes slide-out-image-1 {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
.hero-image-2 {
transform: translateX(100%);
animation: slide-in-image-2 2.5s 3s cubic-bezier(0.54, 0.12, 0.44, 1) forwards;
}
@keyframes slide-in-image-2 {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(0);
}
}
<div class="container">
<div class="slider-wrapper">
<picture>
<img class="image hero-image-1" src="https://drive.google.com/uc?export=view&id=1l7cTX35wqd-4eYvFL8A5QLZ7LbOF9m4J">
</picture>
<picture>
<img class="image hero-image-2" src="https://drive.google.com/uc?export=view&id=1iB9R1aoeYSmkPX9Ju3NNOZhKylOjCA0y">
</picture>
</div>
</div>
【问题讨论】:
标签: css slider css-animations transform translate