我有一个JavaScript驱动的视差滑块,改编自本教程(http://tympanus.net/codrops/2011/01/03/parallax-slider/),还有一个小脚本,在滚动过一定点后将滑块图像淡出。
这是脚本:
$(document).ready(function() {
$(window).scroll(function () {
var $slider = $('.pxs_slider');
var sTop = $('body').scrollTop();
var sTop_ff = $('html').scrollTop();
var opacity = 1;
if(sTop < 40) {
opacity = 1;
if(sTop_ff < 40) {
opacity = 1;
} else {
opacity = 0;
}
} else {
opacity = 0;
}
$slider.css('opacity', opacity);
});
});
一切正常,但在此过渡期间滚动变得非常缓慢。但是,我发现它在所有浏览器的Chrome中确实存在此问题。 Firefox中没有性能损失。
我可以尝试一种更有效的方法来解决这个问题吗?
答案 0 :(得分:1)
缓存$('.pxs_slider')
所以每次滚动条移动时都不会查询它是大的:
$(document).ready(function() {
var $slider = $('.pxs_slider');
$(window).scroll(function() {
var sTop = $('body').scrollTop();
var sTop_ff = $('html').scrollTop();
var opacity = 1;
if(sTop < 40) {
opacity = 1;
if(sTop_ff < 40) {
opacity = 1;
} else {
opacity = 0;
}
} else {
opacity = 0;
}
$slider.css('opacity', opacity);
});
});
另外,我认为$(window).scrollTop()
是正确的方法:
$(document).ready(function() {
var $slider = $('.pxs_slider');
$(window).scroll(function() {
$slider.css('opacity', $(window).scrollTop() < 40 ? 1 : 0);
});
});