我正在一個虛擬網站上工作。我想嘗試一下帶有整個屏幕的全尺寸頁面部分的網站,例如Tumblr的主頁。setTimeout不適用於bounce.js和fullpage.js
我的網站(「塊」)的標題顯示在首頁部分中心的6個彩色塊中,每個字母都佔據其自己的彩色塊。每當您向下滾動到另一個頁面部分並返回到第一個頁面時,我都希望彩色塊在它們之間以100ms開始動畫。
這裏是我的jQuery:
$(document).ready(function() {
var titleBlock1 = $(".titleBlock1");
titleBlock2 = $(".titleBlock2");
titleBlock3 = $(".titleBlock3");
titleBlock4 = $(".titleBlock4");
titleBlock5 = $(".titleBlock5");
titleBlock6 = $(".titleBlock6");
siteTitleLetter = $('.site-title-letter');
bounce = new Bounce();
bounce.scale({
from: { x: 0.1, y: 0.1 },
to: { x: 1, y: 1 },
duration: 1500,
bounces: 5,
});
$('#fullpage').fullpage({
sectionsColor: ['#56BC8A', '#A77DC2', '#36465D', '#F2992E'],
anchors: ['firstPage', 'secondPage', 'thirdPage', 'fourthPage', 'lastPage'],
menu: '#menu',
resize: false,
afterLoad: function(anchorLink, index){
//using index
if(index == 1){
for (var x = 1; x < 7; x++) {
var delayTime = x * 100;
setTimeout(function() {
console.log(x);
bounce.applyTo($('.titleBlock' + x));
}, x*100);
}
}
}
});
});
我使用bounce.js創造了一個反彈的動畫,我想只要fullPage.js檢測到的頁面部分之一已加載來激活它。
我的問題是:爲什麼setTimeout函數不工作?每當我通過滾動回到首頁部分來測試它時,它說它不能將反彈應用到未定義的元素。然而,當我刪除setTimeout,只是試試這個:
afterLoad: function(anchorLink, index){
//using index
if(index == 1){
for (var x = 1; x < 7; x++) {
var delayTime = x * 100;
bounce.applyTo($('.titleBlock' + x));
}
}
}
它工作得很好,只是當然不包括我想要的延遲。
我在這裏做錯了什麼?
(我猜)你需要使用閉包:http://brackets.clementng。()函數(){..},(parseInt(x)* 100));我的/ post/24150213014/example-of-javascript-closure-settimeout-裏面 – 2014-12-06 20:06:51
嘗試setTimeout – Dave 2014-12-06 20:13:13
感謝您的幫助,夥計們。可悲的是,這些選擇都沒有奏效。 – ClaytonAlanKinder 2014-12-06 20:37:32