我使用http://nick-jonas.github.io/windows/的修正版本,它允許用戶在DIV內部滾動不同部分,然後再跳回原位。當用戶滾動時停止當前的scrollTo事件
因爲我滾動我已經更換一個DIV:
$('.windows').animate({scrollTop: scrollTo }, options.snapSpeed, function(){
if(!completeCalled){
if(t){clearTimeout(t);}
t = null;
completeCalled = true;
options.onSnapComplete($visibleWindow);
}
});
有:
$('.windows').scrollTo($visibleWindow , options.snapSpeed, { onAfter:function(){
if(!completeCalled){
if(t){clearTimeout(t);}
t = null;
completeCalled = true;
options.onSnapComplete($visibleWindow);
}
}});
所以你可以看到我用的scrollTo插件跳到可見DIV,而不是依靠像以前的代碼一樣複雜的偏移量。
我注意到在原始代碼和我自己的錯誤是,如果捕捉已經開始,然後用戶通過滾動來中斷這些,它們將最終與滾動事件作鬥爭來滾動內容。因此,如果scrollTo向下滾動100個像素,然後他們嘗試使用瀏覽器滾動條向上滾動300個像素,則隨着事件和瀏覽器滾動戰鬥,屏幕將會出現抖動。
有關如何阻止此問題的任何想法?我希望現在我正在使用scrollTo插件,這將更容易處理。
到目前爲止,我曾嘗試:
$('.windows').bind("scroll mousedown DOMMouseScroll mousewheel keyup", function(e){
if (e.which > 0 || e.type === "mousedown" || e.type === "mousewheel"){
$(this).stop().unbind('scroll mousedown DOMMouseScroll mousewheel keyup');
}
});
但這停止捕捉情況發生在所有...任何想法的解決?
我不確定您是否可以使用fullPage.js代替您想要的。 – Alvaro
順便說一句,爲了避免使用鼠標滾動,使用css'body,html {scroll:hidden;}'是繼續的方法。 – Alvaro
@Alvaro沒有名爲'scroll'的CSS屬性。你是不是指「溢出」? – Pavlo