如何在页脚停止固定位置滚动

时间:2018-04-10 22:38:02

标签: jquery html css

我已经对此进行了大量研究,我似乎无法弄清楚为什么这对我不起作用。

我有两个div元素。其中一个div position: fixed始终保持在窗口中。

一旦div击中页脚,它应该删除固定的滚动并粘贴到页脚的顶部。我尝试使用this example中的代码,但div只是在到达页脚时快速回到页面顶部。

这是一个例子的小提琴:



$(document).scroll(function (){
  if($('.userInfo').offset().top + $('.userInfo').height() >= $('footer').offset().top - 10){
    $('.userInfo').css('position', 'absolute');
  }
        
  if($(document).scrollTop() + window.innerHeight < $('footer').offset().top){
    $('.userInfo').css('position', 'fixed');
  } 
});
&#13;
.profileMain{
    display: flex;
}

.userInfoContainer{
    height: 100%;
    width: 50%;
    display: inline-block;
}

.userInfo{
    background: red;
    width: 50%;
    position: fixed;
}

.userContent{
    background: blue;
    width: 50%;
    margin-bottom: 10em;
}

footer{
  background: gray;
  width: 100%;
  height: 30em;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class = "profileMain">
  <div class = "userInfoContainer">
    <div class = "userInfo">f</div>
  </div>
  <div class = "userContent">f</div>
</div>

<footer></footer>
&#13;
&#13;
&#13;

有人可以向我解释我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

执行与您提供的示例相反的操作(将div粘贴到顶部而不是底部),从第二个window.innerHeight中删除if并将滚动+元素的高度与{进行比较页脚的{1}},并使用offsettop位置将div放置在您想要的位置,

这应该可以解决问题:

bottom

这是一个小提琴:https://jsfiddle.net/xpvt214o/93144/