我目前正在尝试在屏幕的右侧制作一个浮动表格,同时在左侧放置其他内容。

左列和右列使用引导程序class="col-md-6分隔。

使表浮动很容易,但是我希望它在左div的底部停止浮动。

我按照本教程https://stackoverflow.com/a/8653109/9364403

当浮动div到达div的底部时,它的确会更改为position:absolute;

但是,当位置设置为绝对值时,表将返回到div顶部的位置,而不是位于底部。当我向上滚动一点时,桌子又回到浮动状态。

如何确保浮动的div不会像显示上方评论链接的jsfiddle那样跳回? (http://jsfiddle.net/Kkv7X/

当前HTML:

<div class="container">
  <div class="row" id="">

    <div class="col-md-6">
    Content for the left hand column
    </div>

    <div class="col-md-6" style="position:relative;">
      <div class="positionfixed" id="fixedcard">
        <table class="table" id="recipetable">
          <tr class="tablerow">
            <th class="tableheader" style="width:45%;">header 1</th>
            <th class="tableheader" style="width:25%;">header 2</th>
            <th class="tableheader" style="width:30%;">header 3</th>
            <th class="tableheader" style="width:30%;">header 4</th>
          </tr>
          <tr class="tablerow">
            <td>row 1</td>
            <td></td>
            <td></td>
            <td></td>
          </tr>
          <tr class="tablerow">
            <td>row 2</td>
            <td></td>
            <td></td>
            <td></td>
          </tr>
          <tr class="tablerow">
            <td>row 3</td>
            <td></td>
            <td></td>
            <td></td>
          </tr>
          <tr class="tablerow">
            <td>row 4</td>
            <td></td>
            <td></td>
            <td></td>
          </tr>
          <tr class="tablerow" id="TableTotalRow">
            <td>row 5</td>
            <td ></td>
            <td ></td>
            <td ></td>
          </tr>
        </table>
      </div>
    </div>

  </div>
</div>
<div id="stop">
</div>


当前的js:

function checkOffset() {
    if($('#fixedcard').offset().top + $('#fixedcard').height() >= $('#stop').offset().top - 10){
      $('#fixedcard').css('position', 'absolute');
    }
    if($(document).scrollTop() + window.innerHeight < $('#stop').offset().top){
      $('#fixedcard').css('position', 'fixed'); // restore when you scroll up
    }
  }
  $(document).scroll(function() {
    checkOffset();
  });


当前的CSS:

 .positionfixed{
    position: fixed;
  }


我对我的代码在这里正在做什么做了一个jsFiddle:https://jsfiddle.net/fjfkbrtn/12/

谢谢。

最佳答案

当更改为absolute时,只需将bottom CSS属性设置为0px,并在位置返回到fixed时将其更改回原来的位置,如下所示:

function checkOffset() {
  if ($('#fixedcard').offset().top + $('#fixedcard').height() >= $('#stop').offset().top - 10) {
    $('#fixedcard').css('position', 'absolute');
    $('#fixedcard').css('bottom', '0px'); // ADD THIS
  }
  if ($(document).scrollTop() + window.innerHeight < $('#stop').offset().top) {
    $('#fixedcard').css('position', 'fixed');
     $('#fixedcard').css('bottom', 'initial'); // AND THIS
  }
}
$(document).scroll(function() {
  checkOffset();
});

10-07 19:56
查看更多