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