所以我一直試圖弄清楚這一點,似乎無法得到它。動畫滾動很buggy
我使用由圓圈組成的導航(請參閱下面的網站),當用戶點擊一個導航時,它會將他/她轉發到相應的幻燈片。
當您單擊時,它有時會一直滑回窗口的開始處(margin-left = 0)。如果它一開始沒有這樣做,只需點擊一下或兩個,你最終會看到它。
下面是這車的代碼:
$("#footer-slidenav .links a").click(function() {
// Get nav index
var slidenum = $(this).attr("id").slice(3);
// Setup slide selector with string to avoid issues
var slidetext = ".slide:eq(" + slidenum + ")";
slidenum = $(slidetext).offset().left;
console.log("Top: " + slidenum);
var offset2 = 0;
// Find window offset to center slide if screen is bigger than 1000px (size of one slide)
if (($(window).width() - 1000)/2 > 0) {
offset2 = ($(window).width() - 1000)/2;
}
// Slide window to slide # that was clicked
$("html:not(:animated), body:not(:animated)").animate({
scrollLeft: slidenum
}, 1000, function() {
console.log("Middle: " + slidenum);
// Callback to center slide and give a nice little animated touch
slidenum = $(slidetext).offset().left;
console.log("Bottom: " + slidenum);
$("html:not(:animated), body:not(:animated)").animate({
scrollLeft: (slidenum - offset2)
}, "fast");
});
return false;
});
我嘗試之類的東西$("html:not(:animated), body:not(:animated)")
與其他幾個類似的可能的解決方案,但錯誤依然存在。
任何建議將是偉大的,我很樂意接受任何想法,你們可能有。
謝謝。
檢查你的變量slidenum是不是在改變它不應該改變(範圍)...做一些像console.log(「A - 」+ slidenum);的console.log( 「B - 」 + slidenum);每次您將值設置爲slidenum變量後。 – Tank
我添加了上面的代碼,所以你可以看看控制檯。由於某種原因,這似乎是兩次調用回調。 – switz
雙重回調被稱爲是因爲你爲body和html設置了動畫(當你選擇** html,body **時,它選擇了兩個元素而不是一個)。兩個動畫立刻就是邪惡的。 – yoavmatchulsky