固定位置,直到页脚之前

迈克尔·塞缪尔(Michael Samuel)

我有以下代码:

<html>

<head>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<script>
$(window).on("scroll",function(e){

var sidepos = parseFloat($('#footer').offset().top - $('#side').outerHeight());

if($(window).scrollTop() > 100 && $('#side').offset().top < sidepos) {
   $('#side').css('position','fixed');
   $('#side').css('top','0');
}

else if($(window).scrollTop() > 100 && $('#side').offset().top >= sidepos) {
     $('#side').css('position','absolute');
     $('#side').css('top','' + sidepos + 'px');
}

else if($(window).scrollTop() < 100) {
  $('#side').css('position','');
  $('#side').css('top','');
}

}); 
</script>
</head>

<body>

<div id="header"></div>
<div id="body">
     <div id="side"></div>
</div>
<div id="footer"></div>

</body>
</html>

我想#side在滚动到之前之前保持固定,#footer以免与它重叠。

现在有两个问题:

  1. 如果像按键盘上的“结束”按钮那样快速向下滚动,则该功能将不会执行,并且该边与#footer忽略if条件重叠
  2. 切换到后,position:absolute无法确定向上滚动时如何再次修复#side#footer即使再次向上滚动,也将永久停留在该位置

我创建了一个小提琴供您测试:http : //jsfiddle.net/JuD5h/

昌兰树

这是您更新的小提琴:http : //jsfiddle.net/JuD5h/4/

我对CSS进行了一些更改:

#body {
    height: 3000px;
    position: relative;
}
#side {
    width: 100px;
    height: 350px;
    float: left;
    border: 1px solid #000000;
    position: absolute;
    top: 0;
}

这是更新的Javascript:

$(function(){ // document ready
    var maxAbsoluteTop = $('#body').outerHeight() - $('#side').outerHeight();
    var minAbsoluteTop = 0;
    $(window).scroll(function(){
      var windowTop = $(window).scrollTop();
      var actualTop = windowTop - 100;
      if ( actualTop <= maxAbsoluteTop && actualTop >= minAbsoluteTop) {
          $('#side').css({ top: windowTop - 100 });
      } else if (actualTop > maxAbsoluteTop){
          $('#side').css({ top: maxAbsoluteTop });
      } else {
          $('#side').css({ top: minAbsoluteTop });
      }
    });
});

使用position: absolute会使动画闪烁,但我希望您可以使用少量延迟来解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建固定位置的表格页脚?

来自分类Dev

Tailwind CSS-固定位置的页脚溢出

来自分类Dev

将导航高度放在页脚之外,而不是固定位置

来自分类Dev

Bootstrap固定位置左列,在查看页脚时变为固定

来自分类Dev

相对定位的固定高度页脚在它之前覆盖了绝对div。

来自分类Dev

元素的固定位置?

来自分类Dev

在固定位置侧栏上粘贴页脚,需要CSS解决方案

来自分类Dev

如何将页脚ID偏移到固定位置底部

来自分类Dev

固定位置的页脚,但Flexbox也是元素流的一部分

来自分类Dev

到达底部页脚时如何停止粘性侧边栏的固定位置

来自分类Dev

将页脚元素定位在页面底部与其之前的兄弟元素相对应的位置

来自分类Dev

剖面位置:固定重叠页脚

来自分类Dev

页脚位置无法固定

来自分类Dev

页脚位置无法固定

来自分类Dev

位置固定元素与页脚重叠

来自分类Dev

如何将元素从顶部定位到固定位置,直到被另一个元素推动

来自分类Dev

如何将元素从顶部定位到固定位置,直到被另一个元素推动

来自分类Dev

固定位置不可滚动

来自分类Dev

固定位置响应居中

来自分类Dev

使iframe /表格固定位置

来自分类Dev

固定位置填充div

来自分类Dev

CKeditor在线固定位置

来自分类Dev

MPAndroidChart MarkerView固定位置

来自分类Dev

固定位置-宽度错误

来自分类Dev

“ clearfix”用于固定位置

来自分类Dev

固定位置响应居中

来自分类Dev

固定位置响应式

来自分类Dev

有固定位置的问题。

来自分类Dev

从右到左以固定位置过渡