2016-08-24 6 views
1

次のコードを使用してページの2つの特定のセクションの下部にヒットすると、メインページがスクロールするのを止めようとしていますが、それらの部門全体でマウスが子要素の上にあるときに本文をスクロールしない

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(){ \t \t body.style.overflowY = 'auto';\t \t $( 'body')。css({width: '100%'}); \t \t $( 'body')。css({float: 'none'}); \t \t \t} \t機能disableScroll(){ \t \t VAR bodyWidth = $( "本体")幅()。 \t \t body.style.overflowY = 'hidden';\t \t $( 'body')。css({width:bodyWidth + 'px'});\t \t $( 'body')。css({float: 'left'}); \t} 'それを救済する。 –

関連する問題