前言
通常情況下,當內部滾動條滾動到兩端時,再接著滾動時外層的滾動條就會跟著滾動;可是有時我們希望用戶只能滾動當前區域,而不觸發外層(window)的滾動條,離開當前區域后,才能滾動外層的滾動條。因為用戶可能一不小心滾動的幅度過大了,導致當前區域離開可視區域。
在jquery中,滾動事件是scroll,而這個事件是不能阻止冒泡和阻止默認事件的。假如我們設定要禁止window的滾動條,我采取的策略是:當鼠標進入到當前區域后,則window的滾動條的高度始終是鼠標進入前的高度
如下的代碼:
<style type="text/css"> .main{ overflow: auto; width: 400px; height: 400px; border: 1px solid #aaa; } .main p{ height: 800px; }</style><body> <div id="main" class="main"> <p></p> </div> <p style="height:1000px;"></p></body>$(function () { var scrollTop = -1; // 鼠標進入到區域后,則存儲當前window滾動條的高度 $('#main').hover(function(){ scrollTop = $(window).scrollTop(); }, function(){ scrollTop = -1; }); // 鼠標進入到區域后,則強制window滾動條的高度 $(window).scroll(function(){ scrollTop!==-1 && $(this).scrollTop(scrollTop); })})
從上面的代碼可以看到,我并沒有阻止window滾動條的事件,而是用戶每次滾動時,都會重新進行賦值。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,當然,或許還有更好的方法,歡迎大家提供,謝謝!
新聞熱點
疑難解答