Почему функция onscroll не работает?

#javascript #jquery #scroll

#javascript #jquery #прокрутка

Вопрос:

Я создаю элемент div, который должен исчезать при прокрутке. Я пробовал просто предупреждать о прокрутке (без замирания) с помощью onscroll, scroll, DOMMouseScroll, mousewheel, также с помощью jquery, но это не работает ни с одним из них. Работает только с onmousewheel в Chrome.

https://jsfiddle.net/643v7rod/

 var el = document.getElementById('el');

var opacity = 1;
el.onmousewheel = function(e){
    if(e.deltaY > 0){
        opacity -= 0.25;
        el.style.opacity = opacity;
    }else{
        opacity  = 0.25;
        el.style.opacity = opacity;
    }
}
  

Что я здесь делаю не так?

Ответ №1:

Это событие мыши устарело, смотрите это

Попробуйте вместо этого эту и убедитесь, что высота вашего div достаточна для прокрутки 🙂

 var el = document.getElementById('el');
var opacity = 1;
//if you want to be able to revert the effect, you will
//have to store the current window position 
//in a variable and update it each time;
var position = window.scrollY;
//declaring the function
function effect(){
	if(window.scrollY > position){
		opacity -= 0.01;
		el.style.opacity = opacity;
        //now update the positoin
        position = window.scrollY;
	}else{
		opacity  = 0.01;
		el.style.opacity = opacity;
        //do it again
        position = window.scrollY;
	}
};
//adding the event listener
window.addEventListener("scroll", effect);  
 #el {
	width: 300px;
	height: 1200px;
	background-color: red;
}  
 <div id="el"></div>  

Я изменил коэффициент непрозрачности, чтобы вы получили четкое представление об эффекте.