js滚动到指定位置再进行固定定位(position:fixed)

在写js交互效果时,遇到一个问题场景,想让某部分div一开始是固定的,当滚动一定距离的时候,这部分div就开始固定定位(position:fixed),查了网上的资料后,自己已经写出了这个交互效果,但是还有一个小bug,bug如下
图片描述

当滚动到最底部的时候,红色标注部分会超出底部界限范围,我程序的思路是判断滚动条距顶部的距离scrollTop的范围值,当滚动距离超过一定范围距离的时候,给后侧部分加上position:fixed让它滚动,但是这样不能解决到底部的时候离底部距离的bug,不知道这部分bug应该怎么解决,使它移到底部的时候,不会超出底部范围.

我滚动相关部分的代码如下:

  window.onscroll=function(){
        var topScroll =document.body.scrollTop;//滚动的距离,距离顶部的距离
        var bignav = document.getElementById("bignav");//获取到导航栏id
        if(topScroll <= 250){
            //当滚动距离小于250的时候执行下面的内容,也就是让导航栏恢复原状    
            bignav.style.position = 'static';
        }else{      
            //当滚动距离大于250px时执行下面的东西
            bignav.style.position = 'fixed';
            bignav.style.top = '6%';
            bignav.style.right = '6%';
            console.log(topScroll)
        }

    }
阅读 11.4k
1 个回答

首先有个问题就是移到底部时,你所期望的效果是什么,例如减少fixed元素高度,或是减少fixed元素top值?
判断是否会有重叠情况,其实就是判断 屏幕高度 是否大于 fixed元素的top值 + fixed元素的高度 + 底部栏的高度,如果大于,则不会重叠;如果小于,则其会重叠,这时候你需要进行一定的操作了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题