我正在一个虚拟网站上工作。我想尝试一下带有整个屏幕的全尺寸页面部分的网站,例如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