【发布时间】:2014-12-08 02:51:27
【问题描述】:
我正在开发一个虚拟网站。我想在一个占据整个屏幕的全尺寸页面部分的网站上尝试一下,比如Tumblr 的主页。
我的网站标题(“块”)显示在首页部分中心的 6 个彩色块中,每个字母占据自己的彩色块。每当您向下滚动到另一个页面部分并返回到第一个部分时,我希望彩色块以它们之间的 100 毫秒开始动画。
这是我的 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));
}
}
}
它工作得很好,它当然不包括我想要的延迟。
我在这里做错了什么?
【问题讨论】:
-
(我猜)你需要使用闭包:brackets.clementng.me/post/24150213014/…
-
尝试 setTimeout(function() { .. }, (parseInt(x)*100));
-
谢谢你们的帮助,伙计们。遗憾的是,这些选项都不起作用。
标签: jquery fullpage.js