javascript - 向上滚动时背景图像不变,但向下滚动时工作正常

标签 javascript jquery html css

我是 Javascript 和 Jquery 的初学者。我正在尝试实现背景图像在滚动文本上发生变化的效果。该代码适用于从上到下滚动,但一张图像在从下到上滚动时没有变化。这是我的代码,

<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script>
$(window).scroll(function(){
    var fromTopPx = 200; // distance to trigger
    var scrolledFromtop = $(window).scrollTop();
    if(scrolledFromtop > fromTopPx && scrolledFromtop < 600) // distance to trigger second background image
    {
        $('html').addClass('scrolled');
    }

    else if(scrolledFromtop > 600 && scrolledFromtop < 1000) //  distance to trigger third background image
    {
    $('html').addClass('scrolledtwo');
    }

    else{
        $('html').removeClass('scrolled');
        $('html').removeClass('scrolledtwo')
    }
});
</script>    
<style>

html {
    background-repeat: no-repeat;
    background-position: center center;
    background-attachment: fixed;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}

html {
   background-image:url(assets/images/b1.jpeg);
}

html.scrolled {
    background-image:url(assets/images/ab3.jpeg);
}
html.scrolledtwo {
    background-image:url(assets/images/ab9.jpeg);
}   

</style>
</head>

我错过了什么?

最佳答案

你必须这样尝试,在 scroll 期间添加的 classes 也可能需要在某些情况下被删除,如下所示,

$(window).scroll(function() {
  var fromTopPx = 200; // distance to trigger
  var scrolledFromtop = $(window).scrollTop();
  if (scrolledFromtop > fromTopPx && scrolledFromtop <= 600) // distance to trigger second background image
  {
    $('html').addClass('scrolled');
    $('html').removeClass('scrolledtwo');
  } else if (scrolledFromtop >= 601 && scrolledFromtop < 1000) //  distance to trigger third background image
  {
    $('html').addClass('scrolledtwo');
    $('html').removeClass('scrolled');
  } else {
    $('html').removeClass('scrolled');
    $('html').removeClass('scrolledtwo')
  }
});
html {
  background-repeat: no-repeat;
  background-position: center center;
  background-attachment: fixed;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

body {
  height: 1200px;
}

html {
  background-image: url("http://placehold.it/350x150/111/fff");
}

html.scrolled {
  background-image: url("http://placehold.it/350x150/f11/fff");
}

html.scrolledtwo {
  background-image: url("http://placehold.it/350x150/f2f/fff");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

scrollTop 在 200 到 600 之间时删除 .scrolledtwo 类,当它在 601 到 1000 之间时以同样的方式删除 .scrolled else if它越过条件删除两者。

关于javascript - 向上滚动时背景图像不变,但向下滚动时工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178364/

相关文章:

html - 调整图像大小 - 保持比例 - 没有背景图像

php - 通过 AJAX 模板化动态加载内容的最佳方法?

jquery - 获取给定 jQuery <tr> 对象的 <td> 值字符串

html - 尝试在 VPN 上的 Lync UCWA 上运行应用程序的 POST 请求时获取 502 Bad Gateway

c# - 在 asp.net mvc 3 中使用 ajax 发送一组 json 对象以进行操作

jquery - 当我点击手机屏幕上的后退按钮时图像消失

javascript - 如何从页面获取 HTML 源代码?

javascript - 如何自动将用户信息传递到 Bot Framework 对话实例,而不将其作为显式消息发布在聊天窗口中?

javascript - Next.js getServerSideProps 在本地、PR 预览和生产中使用/api

javascript - Bootstrap模态登录表单立即消失?