1 回答

TA貢獻1821條經驗 獲得超6個贊
我已經實現了一個基本的 Intersection Observer 供您查看。
document.addEventListener("DOMContentLoaded", function () {
var elements = document.querySelectorAll(".slide-in");
// Intersection observer
var observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.intersectionRatio > 0) {
entry.target.classList.add("animate");
} else {
entry.target.classList.remove("animate");
}
});
});
elements.forEach((el) => {
observer.observe(el);
});
});
.pre-scroll {
min-height: 100vh;
}
.container {
min-height: 110vh;
}
.slide-in {
position: relative;
background-color: #333333;
height: 300px;
width: 100%;
margin-bottom: 50px;
animation: animateInit 0.7s ease-in-out;
}
.slide-in.animate {
animation: animate 0.7s ease-in-out;
}
@keyframes animate {
0% {
opacity: 0;
transform: translateX(-20rem);
}
100% {
opacity: 1;
transform: translateX(0rem);
}
}
@keyframes animateInit {
0% {
opacity: 0;
transform: translateX(-20rem);
}
100% {
opacity: 1;
transform: translateX(0rem);
}
}
<div class="container">
<div class="slide-in"></div>
<div class="slide-in"></div>
<div class="pre-scroll"></div>
<div class="slide-in"></div>
</div>
添加回答
舉報