pet*_*rxz 5 javascript jquery scrollmagic
在我的网站上,ScrollMagic 场景触发器挂钩位置存储在一个数组中slideOffsets = [],该数组在初始化时使用
var scene;
for (var i=0; i<slides.length; i++) {
//Get offsets
if(i != 1) {
scene = new ScrollMagic.Scene({
triggerElement: slides[i]
})
.setPin(slides[i])
.addIndicators() // INDICATORS FROM PLUGINS
.addTo(controller);
} else {
scene = new ScrollMagic.Scene({
triggerElement: slides[i], duration: "10%"
})
.setPin(slides[i])
.addIndicators() // INDICATORS FROM PLUGINS
.addTo(controller);
}
slideOffsets.push(Math.ceil(scene.triggerPosition()));
scenes.push(scene);
}
Run Code Online (Sandbox Code Playgroud)
然后附加到每个<a>元素的函数滚动到相应的位置。这一切都完美无缺,但是在调整窗口大小后这不起作用。我将场景存储在一个数组中,以便我可以访问它们,但是即使在遍历它们并在调整大小后重新存储钩子位置之后,返回的位置也不能反映钩子在页面上的真正位置,即使在尝试采取离开/也添加场景的持续时间。
$(window).on("resize", function() {
slideOffsets = [];
for (var i=0; i<slides.length; i++) {
slideOffsets.push(Math.ceil(scenes[i].triggerPosition() - scenes[i].duration()));
}
console.log("regathering done");
});
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,我知道这会在用户调整窗口大小时不断运行,但是我想先解决这个问题)
有任何想法吗?我已经浏览文档很长时间了,但没有任何成功,.triggerPosition()、.scrollOffset() 似乎在做完全相同的事情,但在调整大小后它们都不能正常工作。
我终于设法解决了问题,我要做的就是迭代保存的场景并单独删除和重置引脚,刷新场景,然后询问每个场景的scrollOffset位置:
$(window).on("resize", function() {
slideOffsets = [];
for (var i = 0; i < scenes.length; i++) {
scenes[i].removePin(true);
scenes[i].setPin(slides[i]);
scenes[i].refresh();
slideOffsets.push(Math.ceil(scenes[i].scrollOffset()));
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5027 次 |
| 最近记录: |