¡Claro que sí! Si tienes un desplazamiento horizontal y quieres detectar cuando el scroll está a la izquierda, en el medio, o a la derecha, simplemente tendrías que cambiar la propiedad 'scrollTop' por 'scrollLeft' y 'clientHeight' y 'scrollHeight' por 'clientWidth' y 'scrollWidth'. Aquí te muestro cómo:
JavaScript:
var div = document.getElementsByClassName('categorys-all')[0];
var checkScroll = function() {
if (div.scrollLeft === 0) {
console.log('Scroll está al inicio!');
} else if (div.scrollLeft + div.clientWidth >= div.scrollWidth) {
console.log('Scroll está al final!');
} else {
console.log('Scroll está en un punto intermedio!');
}
};
var observer = new MutationObserver(function() {
if(div.scrollHeight > div.clientHeight || div.scrollWidth > div.clientWidth) {
document.getElementsByClassName('phom2')[0].style.display="block";
document.getElementsByClassName('phom')[0].style.display="block";
} else {
document.getElementsByClassName('phom2')[0].style.display="none";
document.getElementsByClassName('phom')[0].style.display="none";
}
checkScroll();
});
observer.observe(div, { childList: true, attributes: true, subtree: true });
div.onscroll = checkScroll;
checkScroll();
Espero que esto solucione tu problema. Con este código podrás detectar la posición del desplazamiento horizontal en tiempo real.
if(document.querySelector('.categorys-all')){
var div = document.getElementsByClassName('categorys-all')[0];
var checkScroll = function() {
if (div.scrollLeft === 0) {
document.getElementsByClassName('phom2')[0].style.display="none";
document.getElementsByClassName('phom')[0].style.display="block";
} else if (div.scrollLeft + div.clientWidth >= div.scrollWidth) {
document.getElementsByClassName('phom2')[0].style.display="block";
document.getElementsByClassName('phom')[0].style.display="none";
} else {
document.getElementsByClassName('phom2')[0].style.display="block";
document.getElementsByClassName('phom')[0].style.display="block";
}
};
var observer = new MutationObserver(function(){
if(div.scrollHeight > div.clientHeight || div.scrollWidth > div.clientWidth) {
document.getElementsByClassName('phom2')[0].style.display="block";
document.getElementsByClassName('phom')[0].style.display="block";
}else{
document.getElementsByClassName('phom2')[0].style.display="none";
document.getElementsByClassName('phom')[0].style.display="none";
}
checkScroll();
});
observer.observe(div, { childList: true, attributes: true, subtree: true });
div.onscroll = checkScroll;
checkScroll();
}
todo funciona bien, pero ahora puedes hacer que el checkScroll solo funcione si el scroll esta?