let options = {
root: document.querySelector("#scrollArea"),
rootMargin: "0px",
threshold: .5,
};
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add('show');
} else {
entry.target.classList.remove('show');
}
}, options);
});
const hiddenElements = document.querySelectorAll('.hidden, .from-left, .from-right, .grow, .shrink');
hiddenElements.forEach((el) => observer.observe(el));
.hidden {
opacity: 0;
transition: all 1s;
}
.from-left {
opacity: 0;
transform: translateX(-100%);
transition: all 1s;
}
.from-right {
opacity: 0;
transform: translateX(+100%);
transition: all 1s;
}
.grow {
opacity: 0;
transform: scale(.3, .3);
transition: all 1s;
}
.shrink {
opacity: 0;
transform: scale(3, 3);
transition: all 2s;
}
.show {
opacity: 1;
transform: translateX(0);
}
.skill {
height: 150px;
width: 150px;
border-radius: 1rem;
display: flex;
align-items: center;
justify-content: center;
}
.skill:nth-child(2){
transition-delay: 200ms;
}
.skill:nth-child(3){
transition-delay: 400ms;
}
.skill:nth-child(4){
transition-delay: 600ms;
}
.hidden to .show
.from-left
delay: 0ms
delay: 200ms
delay: 400ms
delay: 600ms
.from-right
.grow
.shrink