【发布时间】:2023-03-04 23:16:02
【问题描述】:
我正在尝试为某些元素设置动画。内容包装器 div 中有跨度。
一旦我们到达带有content-wrapper 类的div,b-fadein 类就会被添加到每个span 中,并且动画应该开始,并且span 应该一个接一个地出现。
$(window).scroll(function() {
$('.el').each(function(){
var pos = $(this).offset().top;
var topOfWindow = $(window).scrollTop();
if (pos < topOfWindow+400) {
$(this).addClass("b-fadein");
}
});
});
动画。
.b-fadein {
/* hidden by default */
opacity: 0;
animation: fadeIn 0.5s linear forwards;
animation-delay: calc(0.5 * var(--i));
}
@keyframes fadeIn {
from {
/* is not visible*/
opacity: 0;
}
to {
/* is visible */
opacity: 1;
}
}
HTML
<div class="content-wrapper" style="">
<!-- 0 -->
<span style="--i: 0; opacity:0;" class="el el1">1</span>
<!-- 1 -->
<span style="--i: 1; opacity:0;" class="el el2">2</span>
<!-- 2 -->
<span style="--i: 2; opacity:0;" class="el el3">3</span>
<!-- if more elements, increase the --i css variable for next elements -->
</div>
目前,只有当content-wrapper 中的每个跨度显示为一条线(flex-direction 设置为列)时,才能看到所需的效果。
但所有跨度都可以在同一行。
问题是,如果它们在同一行,一旦我们到达content-wrapper,它们就会同时显示。
到达 content-wrapper div 后,如何一个接一个地显示 span?
【问题讨论】:
标签: javascript html jquery css