-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscroll-fade.js
30 lines (26 loc) · 1003 Bytes
/
scroll-fade.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const scrollFadeElements = document.querySelectorAll('[scroll-fade]')
const scrollFadeobserver = new IntersectionObserver(entries =>
entries.forEach(entry => {
const element = entry.target
if(entry.isIntersecting){
if(!element.scrollFade){
const easing = element.getAttribute('scroll-fade-easing') || 'ease-in-out'
const duration = Number(element.getAttribute('scroll-fade-duration')) || 1000
if(element.hasAttribute('scroll-fade-onetime')) element.scrollFade = true
element.animate([
{opacity: 0},
{opacity: 1},
],
{
duration,
easing,
fill: 'forwards'
})
}
}else if(!element.scrollFade) element.style.opacity = 0
})
)
scrollFadeElements.forEach(element => {
scrollFadeobserver.observe(element)
element.style.opacity = 0
})