Здесь скрипка
<style>
#scrollable{
width: 300px;
height: 300px;
overflow: scroll;
}
#contents{
width: 500px;
height: 500px;
position: relative;
}
#element{
background-color: rgba(0,0,0,0.5);
position: absolute;
top:0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: 200px;
height: 80px;
}
</style>
<div id="scrollable">
<div id="contents">
<div id="element">
While this is hovered, #scrollable should not scroll
</div>
</div>
</div>
Как я могу предотвратить прокрутку прокручиваемого элемента, не удаляя полосы прокрутки, а также парящий другой элемент, который не прокручивается аналогичным образом, если прокручивается прокручиваемый.
$('#element').on({
'mousewheel': function(event) {
event.preventDefault();
event.stopPropagation();
},
'DOMMouseScroll': function(event) {
event.preventDefault();
event.stopPropagation();
}
});
Поскольку вы не можете прервать и отменить событие прокрутки напрямую, используя jQuery, вы можете просто изменить свойство переполнения прокручиваемых элементов:
$('#element').on('mouseover',function(){
$('#scrollable, html, body').css('overflow','hidden');
});
$('#element').on('mouseout',function(){
$('#scrollable, html, body').css('overflow','auto');
});