我建立一個網站,有一些路段,他們每一位都是窗口的100%的高度,但800像素從部分滾動到部分
我想使滾動將視圖從部分轉移到最小但如果滾動低於800,則將按照正常滾動的方式進行操作,直至到達結束或新節的開始,然後滾動至該節。
我試圖寫自己的腳本,但它不工作很好enoght
有沒有一個好的腳本或教程?
(這是我試過到目前爲止做的......但沒有成功...)
var prevScroll = $(window).scrollTop();
var currentSection = getCurrentSection();
$(window).scroll(function(){
var newScroll = $(this).scrollTop();
if (newScroll > prevScroll){
checkScrolling("down");
} else {
checkScrolling("up");
}
prevScroll = newScroll;
});
function checkScrolling(direction) {
var fromTop = $(window).scrollTop();
var windowHeight = Math.max($(window).height(), 800);
var currentPlace = $(currentSection).offset().top;
if (direction == "down") {
if (currentSection != ".blogs") {
var nextPlace = $(currentSection).next().offset().top;
if (fromTop+windowHeight >= nextPlace) {
$("html, body").animate({scrollTop: nextPlace}, 1000);
setTimeout(function(){
currentSection = getCurrentSection();
}, 1001);
}
}
} else {
if (currentSection != ".about") {
var prevPlace = $(currentSection).prev().offset().top;
if (fromTop <= prevPlace+windowHeight) {
$("html, body").animate({scrollTop: prevPlace}, 1000);
setTimeout(function(){
currentSection = getCurrentSection();
}, 1001);
}
}
}
}
function getCurrentSection() {
var fromTop = $(window).scrollTop();
var windowHeight = Math.max($(window).height(), 800);
var s1 = $(".about").offset().top;
var s2 = $(".works").offset().top;
var s3 = $(".blogs").offset().top;
if (s1 <= fromTop && fromTop < s1+windowHeight) {
return ".about";
} else if (s2 <= fromTop && fromTop < s2+windowHeight) {
return ".works";
} else if (s3 <= fromTop && fromTop <= s3+windowHeight) {
return ".blogs";
}
}
這是視差,我沒有看到的東西,使滾動的部分章節在一個滾動...... –
你不能因爲scroll事件OB文件每次叫該事件被觸發。你可以設置一個間隔和布爾值來告訴你的jquery滾動或不滾動(代碼和滾動事件的唯一方式)。 –