CSS 带有 'IntersectionObserver' 的动画不起作用(Vanilla JS)
CSS animation with 'IntersectionObserver' doesn't work (Vanilla JS)
我的 InsersectionObserver 代码有问题:.timeline-graphs class 的内容应该是从下面出现(@keyframes 动画 CSS),但仅当视口与其相交时,感谢 InsersectionObserver(JS ).很简单,但我无法让它工作。这是代码:
HTML、CSS 和 JAVASCRIPT:
const elementsToExpand = document.querySelectorAll('.timeline-graphs');
let expansionObserver = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.intersectionRatio > 0) {
entry.target.classList.add('isVisible');
} else {
entry.target.classList.remove('isVisible');
}
});
});
elementsToExpand.forEach((element) => {
expansionObserver.observe(element);
});
.timeline-graphs {
display: flex;
flex-flow: row no-wrap;
justify-content: center;
text-align: center;
align-items: center;
}
.timeline-graphs.isVisible {
animation-name: fadeIn;
animation-duration: 2.5s;
animation-fill-mode: both;
}
@keyframes fadeIn {
0% {
opacity: 0;
-webkit-transform: translate3d(0,40%,0);
transform: translate3d(0,40%,0);
}
100% {
opacity: 1;
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
}
<section class="timeline-graph-section">
<article class="timeline-graphs">
<h1>This is a title</h1>
</article>
</section>
感谢大家对此的支持!
根据您当前的实施,视口始终与您的 timeline-graphs
元素相交。
为了模仿正常工作,向该元素添加大量 margin-top
并尝试通过滚动将 timeline-graphs
移入和移出视图。
已解决!在看到每个人都可以使用的代码(包括亲眼看到它在 Codepen 中工作)但从未在我的本地存储库中看到后,我怀疑它必须是以下两种情况之一:有一个隐式的 library/framework 在工作Whosebug/CodePen 我没有使用...或者我没有包含在此处的 HTML 代码有问题。
就是这样:我将脚本从 head 元素中取出,并将其放在 body 元素内的最后一行,就在结束标记之前。现在代码可以工作了!谢谢大家的帮助!
我的 InsersectionObserver 代码有问题:.timeline-graphs class 的内容应该是从下面出现(@keyframes 动画 CSS),但仅当视口与其相交时,感谢 InsersectionObserver(JS ).很简单,但我无法让它工作。这是代码:
HTML、CSS 和 JAVASCRIPT:
const elementsToExpand = document.querySelectorAll('.timeline-graphs');
let expansionObserver = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.intersectionRatio > 0) {
entry.target.classList.add('isVisible');
} else {
entry.target.classList.remove('isVisible');
}
});
});
elementsToExpand.forEach((element) => {
expansionObserver.observe(element);
});
.timeline-graphs {
display: flex;
flex-flow: row no-wrap;
justify-content: center;
text-align: center;
align-items: center;
}
.timeline-graphs.isVisible {
animation-name: fadeIn;
animation-duration: 2.5s;
animation-fill-mode: both;
}
@keyframes fadeIn {
0% {
opacity: 0;
-webkit-transform: translate3d(0,40%,0);
transform: translate3d(0,40%,0);
}
100% {
opacity: 1;
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
}
<section class="timeline-graph-section">
<article class="timeline-graphs">
<h1>This is a title</h1>
</article>
</section>
感谢大家对此的支持!
根据您当前的实施,视口始终与您的 timeline-graphs
元素相交。
为了模仿正常工作,向该元素添加大量 margin-top
并尝试通过滚动将 timeline-graphs
移入和移出视图。
已解决!在看到每个人都可以使用的代码(包括亲眼看到它在 Codepen 中工作)但从未在我的本地存储库中看到后,我怀疑它必须是以下两种情况之一:有一个隐式的 library/framework 在工作Whosebug/CodePen 我没有使用...或者我没有包含在此处的 HTML 代码有问题。
就是这样:我将脚本从 head 元素中取出,并将其放在 body 元素内的最后一行,就在结束标记之前。现在代码可以工作了!谢谢大家的帮助!