【问题标题】:jQuery Change Background images while scrolling滚动时jQuery更改背景图像
【发布时间】:2013-04-01 05:26:01
【问题描述】:

我一直在努力尝试在滚动时更改背景图像。我尝试了发布到类似问题的解决方案,但到目前为止没有运气,它只会显示第一个背景图片。

基本上,我将背景设置为固定位置和几个 div,每个 div 都是视口的大小,每个上边距都是视口高度的大小。换句话说,当滚动时,用户只有在滚动经过每个 div 后才能看到背景图像。我希望背景图像在滚动经过每个 div 后发生变化。

代码如下:

$(window).scroll(function() {
    var windowY = $(window).height();
    var scrolledY = $(window).scrollTop();
    var image_url = '/images/image1.jpg';

    if (scrolledY > windowY) {
        image_url = '/images/image2.jpg';
        }

    $('body').css('background', "url(" + img_url + ")");

});

提前致谢!

【问题讨论】:

  • 你的代码格式错误,检查'background'的值,它有一个错误的paren并且没有正确关闭。
  • 将背景更改放在滚动函数中,或者给它一个单独的函数名称,您可以在 if 条件中调用它。

标签: jquery css image background scroll


【解决方案1】:

你有两个错别字,括号然后是你的image_url 变量名。最初你有:

$(body).css('background', "url(" + img_url) + "'";

改为:

$(body).css('background', "url(" + image_url + ")");

括号不正确,最终连接的字符串也是如此。此外,您的变量被声明为image_url,但在您的css 函数中您使用了img_url

【讨论】:

  • 糟糕,很好,谢谢!不幸的是,它似乎没有什么不同,更正后的代码仍然无法正常工作:/
  • 您是否可以在您的函数中设置debuggeralerts 来检查您的scrolledY 值是否按预期运行?只是试图缩小可能性!
  • 是的,scrolledY 似乎很好,在 if 语句中的 img_url 之后立即设置警报,显示像素在我通过 640 像素时立即滚动。但是,如果我在 $(body).css 语句之后设置它,则不会显示警报,所以由于某种原因,这就是问题所在!
  • 您检查过错误吗?因为在你在那里出现语法错误之前,你说你已经修复了它。你能重新发布你现在使用的确切代码吗?只是为了确定?
  • 哦!您的 css 函数调用有另一个错字,我更新了我的答案。
【解决方案2】:

将调用更改为您的背景属性

$(window).scroll(function() {
    var windowY = $(window).height();
    var scrolledY = $(window).scrollTop();
    var image_url = '/images/image1.jpg';

    if (scrolledY > windowY) {
    image_url = '/images/image2.jpg';
    backgroundChange(image_url);
    }
});


function backgroundChange(img_url){
  $("body").css("background", "url(" + img_url + ")");
}

【讨论】:

  • 不幸的是也没有运气
  • 好的,单独放置它仍然是个好主意,这样您就可以使用任何图像调用它。您是否尝试将函数放在 $(document).ready(....) .. 之外?当然总是检查路径。通常就是这样。再次查看您的代码时,它应该可以工作。检查萤火虫控制台!