2016-08-24 75 views
1

我試圖在用戶使用下面的代碼敲擊頁面的兩個特定部分的底部時停止滾動主頁面,但它停止了鼠標滾輪的工作在那些divs。當鼠標懸停在子元素上時不滾動主體

var scroller = document.querySelector('#Filters'); 

    scroller.addEventListener('wheel', listener); 

function listener(event) 
    { 
     var elem = event.currentTarget; 

     if ((event.deltaY < 0 && elem.scrollTop === 0) || 
      (event.deltaY > 0 && elem.offsetHeight + elem.scrollTop >= elem.scrollHeight)) 
     { 
      event.preventDefault(); 
     } 
     else if ((event.deltaX < 0 && elem.scrollLeft === 0) || 
      (event.deltaX > 0 && elem.offsetWidth + elem.scrollLeft >= elem.scrollWidth)) 
     { 
      event.preventDefault(); 
     } 
    } 

回答

1

您可以使用比重新計算js中的滾動更有效的解決方案,在滾動子元素時禁用滾動身體。

HTML:

<div onmouseover="disableScroll();" onmouseout="enableScroll();"> 
    content 
</div> 

JS:

var body = document.getElementsByTagName('body')[0]; 
function enableScroll() { 
    body.style.overflowY = 'auto'; 
} 
function disableScroll() { 
    body.style.overflowY = 'hidden'; 
} 
+0

這是完美的,除了我有一些內容時滾動條消失,頁面變寬移動。 –

+0

如果其他人使用這種解決方案,並且存在右對齊元素移動的問題,我使用'function enableScroll()body.style.overflowY ='auto'; $('body')。css({width:'100%'}); $('body')。css({float:'none'}); 。 \t \t \t } \t功能disableScroll(){ \t \t變種bodyWidth = $( 「正文」)寬(); \t \t body.style.overflowY ='hidden'; $('body')。css({width:bodyWidth +'px'}); $('body')。css({float:'left'}); 「爲了補救它。 –

相關問題