A mimic version of GSAP ScrollTrigger with 5.86kB π
π Please don't use ScrollTrigger with the trigger element that has
stickyposition because of the wrong calculation (because the top position of the trigger element is always0when sticking)
Self hosted π https://github.com/vuquangpham/scroll-trigger/
| Name | Default | Description |
|---|---|---|
id |
unique |
id for clarifying each instance |
start |
top top |
trigger start position (trigger when top of the element hits top of the viewport) |
end |
bottom bottom |
end position (when bottom of the element hits bottom of the viewport) |
responsive |
[] |
change the observed breakpoint (start and end) on different breakpoint |
onEnter:(self) => {} |
function |
|
onLeave:(self) => {} |
function |
|
onUpdate:(self) => {} |
function |
| Name | Parameter | Description |
|---|---|---|
create |
object |
create the instance |
get |
id |
get the ScrollTrigger instance |
destroy |
instance |
destroy the ScrollTrigger instance |
const instance = ScrollTrigger.create({
start: 'top center', // trigger when top of the element hits the center of the viewport
end: () => '+=' + 300, // end when scroll 300px after trigger
onEnter: (self) => {
// get the trigger element
console.log('The trigger element has entered the viewport', self.trigger);
// check which of direction that the trigger enter the viewport
console.log('Enter back:', self.isEnterBack);
},
onUpdate: (self) => {
console.log('Progress:', self.progress);
},
onLeave: (self) => {
// check which of direction that the trigger leave the viewport
console.log('Leave back:', self.isLeaveBack);
// destroy the instance when out of viewport
self.destroy();
},
responsive: [
{
breakpoint: 1024,
start: 'top 60%', // top of the element hits the 60% of the viewport
end: 'bottom 60%+=200px' // end when the bottom of the element hit the (60% + 200px) of the viewport
}
]
});| Name | Description |
|---|---|
onEnter:(self) => {} |
trigger at the first time that the element hits the viewport breakpoint |
onUpdate:(self) => {} |
trigger on each scroll event when the element in viewport |
onLeave:(self) => {} |
trigger when the element goes out of viewport |
Run ./public and ./dev in live server
npm run devBuild files from ./src and ./dev to ./dist for production
npm run buildBuild files from ./src for production
npm run prod