The accepted answer did not work for me. It looks like code that a generic jquery to javascript converter spat out.
This is what worked for me:
<script type="text/javascript">
window.addEventListener('scroll', function() {
if (window.pageYOffset > 10) {
document.querySelector('.header').classList.add('scroll');
} else {
document.querySelector('.header').classList.remove('scroll');
}
});
</script>
Note that I replaced scrollTop with pageYOffset. The former does not work my Chrome browser on MacOS. See: window.pageYOffset vs document.documentElement.scrollTop
Don't forget to use a passive listener if supported.
<script type="text/javascript">
// Test via a getter in the options object to see if the passive property is accessed
var supportsPassive = false;
try {
var opts = Object.defineProperty({}, 'passive', {
get: function() {
supportsPassive = true;
}
});
window.addEventListener("testPassive", null, opts);
window.removeEventListener("testPassive", null, opts);
} catch (e) {}
// Use our detect's results. passive applied if supported, capture will be false either way.
window.addEventListener('scroll', function() {
if (window.pageYOffset > 10) {
document.querySelector('.header').classList.add('scroll');
} else {
document.querySelector('.header').classList.remove('scroll');
}
}, supportsPassive ? { passive: true } : false);
</script>