Skip to content

Instantly share code, notes, and snippets.

@Pan-Maciek
Created February 15, 2017 14:02
Show Gist options
  • Select an option

  • Save Pan-Maciek/eb3a58c78ed237e5ca32df0684d0308a to your computer and use it in GitHub Desktop.

Select an option

Save Pan-Maciek/eb3a58c78ed237e5ca32df0684d0308a to your computer and use it in GitHub Desktop.
/** Celem funkcji addLanding jest dodanie klas(y) w momęcie gdy obiekt staje się widzialny na stronie.
* @param {String} selector Selektor elementów.
* @param {String|Array<String>} className Klasa lub klasy które mają być dodane gdy element staje się widoczny.
* @param {Number=} offset Ile pikseli elementu musi być widoczne, domyślnie 20.
* @returns {void}
*/
const addLanding = (selector, className, offset = 20) => {
if (!selector) throw "Podaj selektor w innym wypadku używanie tej funkcji nei ma sensu."
if (!className) throw "Podaj nazwę klasy w innym wypadku używanie tej funkcji nei ma sensu."
const found = document.querySelectorAll(selector)
for (const element of found) {
const event = () => {
if (window.scrollY + window.innerHeight > element.offsetTop + offset) {
element.classList.add(className)
window.removeEventListener('scroll', event)
delete event
delete element
}
}
window.addEventListener('scroll', event)
event()
}
delete found
}
addLanding(".land", "done", 50)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment