2017-12-04 6 views
0

.nav-icon-underlay.activeがオンの場合、画面のスクロールを無効にするにはどうすればいいですか?ナビゲーションメニューがモバイルの幅で表示されていることを意味しますか?ドロップダウンメニューがアクティブなときにスクロールを無効にする方法は?

私の問題は、私は次のスクリプトをスクロールしたときに私のナビゲーションメニューが消えていることである:

//HIDE OR SHOW NAVBAR WHEN SCROLLING 
$(window).on('DOMMouseScroll mousewheel', function (event) { 
    //identifying wheelData: wheelDeltaX & wheelDeltaY 
    if (event.originalEvent.detail > 0 || event.originalEvent.wheelDelta < 0){ 
    //hides navbar when scrolling down 
    $('.nav-container').slideUp(); 
    } 
    else { 
    //adds navbar when scrolling up 
    $('.nav-container').slideDown(); 
    } 
}); 

/*CSS*/ 
.nav-container.active { 
height: 100%; 
transition: .7s; 
top: 0; 
display: block; 
}/* show drop-down menu */ 
/*HIGHLIGHT*/ 

.nav-container.scroll { 
display: block; 
} 

感謝!

答えて

0

まあ一番簡単な方法は、nav-icon-underlayはjQueryのhasClass()方法で行うことができるクラスactiveを、持っているかどうかを確認するために、条件を使用することです。

クラスが存在しない場合、ページはモバイルの幅で表示されていてはなりません。そのため、単純に次の内側にあなたのスクロールロジックをラップ:既存のコードと組み合わせ

if (!$('.nav-icon-underlay'.hasClass('active') { } 

は、次のようになります。

$(window).on('DOMMouseScroll mousewheel', function (event) { 
    if (!$('.nav-icon-underlay'.hasClass('active') { 
    //identifying wheelData: wheelDeltaX & wheelDeltaY 
    if (event.originalEvent.detail > 0 || event.originalEvent.wheelDelta < 0){ 
     //hides navbar when scrolling down 
     $('.nav-container').slideUp(); 
    } 
    else { 
     //adds navbar when scrolling up 
     $('.nav-container').slideDown(); 
    } 
    } 
}); 

・ホープこのことができます! :)

+0

あなたのコメントありがとうございますが動作していないようです。今のところ、$( '。nav-container')の後に.addClass()を使用して、スクロールダウン時に縮小されたバージョンのNav-barを有効にしました。それ以前は、画面幅を広げるためにナビゲーションバーを隠すことができましたが、間違ってスクロールすると、ドロップダウンメニューがモバイルの幅で閉じるようになってしまいました。私はドロップダウンメニューが開いているときに、モバイルの幅でマウスのスクロール値を無効にすることを考えていましたか?他の提案は高く評価されます。申し訳ありませんが、私はかなりJQueryとJSの笑に新しいです。 – pmqesprit

関連する問題