【发布时间】:2022-01-25 09:09:24
【问题描述】:
如何调整此代码使其不会立即消失?换句话说,让图像淡入,静置几秒钟,然后淡出?
这是我现在的代码:
<div id="slideshow-example" data-component="slideshow">
<div role="list">
<div class="slide fade">
<img src="https://images.unsplash.com/photo-1486312338219-ce68d2c6f44d?w=752&ixid=dW5zcGxhc2guY29tOzs7Ozs%3D" alt="">
</div>
<div class="slide fade">
<img src="https://images.unsplash.com/photo-1488590528505-98d2b5aba04b?w=750&ixid=dW5zcGxhc2guY29tOzs7Ozs%3D" alt="">
</div>
<div class="slide fade">
<img src="https://images.unsplash.com/photo-1498753427761-548428edfa67?w=889&ixid=dW5zcGxhc2guY29tOzs7Ozs%3D" alt="">
</div>
</div>
</div>
[data-component="slideshow"] .slide {
display: none;
text-align: center;
}
[data-component="slideshow"] .slide.active {
display: block;
}
.fade
{
-webkit-animation: fadeinout 2s linear forwards;
animation: fadeinout 2s linear forwards;
}
@-webkit-keyframes fadeinout {
0%,100% { opacity: 0; }
50% { opacity: 1; }
}
@keyframes fadeinout {
0%,100% { opacity: 0; }
50% { opacity: 1; }
}
var slideshows = document.querySelectorAll('[data-component="slideshow"]');
slideshows.forEach(initSlideShow);
function initSlideShow(slideshow) {
var slides = document.querySelectorAll(`#${slideshow.id} [role="list"] .slide`);
var index = 0, time = 5000;
slides[index].classList.add('active');
setInterval( () => {
slides[index].classList.remove('active');
index++;
if (index === slides.length) index = 0;
slides[index].classList.add('active');
}, time);
}
请忽略这部分,StackOverflow 不会让我发布,因为它“主要是代码”,即使我无法对我的问题给出更多解释。但是,如果您对我的问题感到困惑,请问我,我会尝试更深入地解释它。
【问题讨论】:
-
我建议使用
transition属性而不是动画,并使用js async await 语法通过const wait = time => new Promise(resolve => setTimeout(resolve, time));之类的辅助函数来控制延迟/时间流,我可以提供更多详细信息如果当前答案不满足您的用例,则稍后再做。 -
我应该把它放在我的代码中的什么地方?
-
我为你添加了一个答案,如果你想要一个例子????
标签: javascript html css