I am trying to add animations to elements that are only viewable after the scroll down has taken place, how do I ensure that the animations have only taken place AFTER the user has scrolled down and can view them. Preferably using CSS and not Javascript.
Asked
Active
Viewed 36 times
-2
-
https://stackoverflow.com/questions/487073/how-to-check-if-element-is-visible-after-scrolling --> How to check if element is visible after scrolling? – ikiK Feb 16 '21 at 14:20
-
AFAIK there is not direct way to condition CSS styling to the scrolling in a page. This might be relevant though https://css-tricks.com/styling-based-on-scroll-position/ – AsTeR Feb 16 '21 at 14:20
-
Sounds as though intersectionObserver would be helpful here, though it needs a bit (not much) of Javascript. If you put up some code to show your specific case it would help. – A Haworth Feb 16 '21 at 14:22
1 Answers
0
You can't do it without javascipt.
you can use IntersectionObserver to do that. It's mostly used for lazy loading but you will need a small piece of to be able to observe your scroll.
var sections = document.querySelectorAll('section');
var options = {
rootMargin: '0px',
threshold: 0.25
}
var callback = (entries) => {
entries.forEach((entry) => {
var target = entry.target;
console.log(target);
if (entry.intersectionRatio >= 0.25) {
target.classList.add("is-inview");
} else {
target.classList.remove("is-inview");
}
})
}
var observer = new IntersectionObserver(callback, options)
sections.forEach((section, index) => {
observer.observe(section)
});
you can see smallest working code here.

Jignesh
- 51
- 1
- 1