【问题标题】:Make div and table header fixed on scroll使 div 和表头固定在滚动上
【发布时间】:2017-12-06 16:59:38
【问题描述】:

我有一个 div,其中有一个下拉菜单,然后在底部有一个表格。 我正在使用 ngx-infinite-scrolling,当我滚动时,我希望 div 和表的标题在添加和向下滚动更多数据时保持固定。

这是一个 jsfiddle JSFiddle

HTML代码:

 <div class="topTable row ">

  <div class="col-md-4 col-lg-3 col-sm-4 col-6">
  <form class="form-inline">
      <div class="form-group" style="width:100%;max-width:200px;">
        <div class="input-group" style="width:100%">
            <select class="form-control"  >
                <option >All</option>
                <option >Option1</option>
                 <option >Option1</option>
                  <option >Option1</option>
              </select>

        </div>
   </div>


 <div class="container-fluid">
   <div class="col-md-12">
  <div class="col-md-12 tableDiv"  >
  <div class="constrained"  >
  <table class="table table-striped col-md-12 table-condensed cf" >
  <thead class="table-bordered cf">
    <tr>
      <th>Column1</th>
      <th>Column2</th>
      <th>Column3</th>
      <th>Column4</th>
      <th>Column5</th>
      <th>Column6</th>

    </tr>
  </thead>
  <tbody >
    <tr>
      <td > asdf</td>
      <td >asdfa</td>
      <td >fsdf</td>
      <td>sdfsfd</td>
      <td>sdfs</td>
      <td>fsdfsdf</td>
    </tr>
        <tr>
      <td > asdf</td>
      <td >asdfa</td>
      <td >fsdf</td>
      <td>sdfsfd</td>
      <td>sdfs</td>
      <td>fsdfsdf</td>
    </tr>
        <tr>
      <td > asdf</td>
      <td >asdfa</td>
      <td >fsdf</td>
      <td>sdfsfd</td>
      <td>sdfs</td>
      <td>fsdfsdf</td>
    </tr>
        <tr>
      <td > asdf</td>
      <td >asdfa</td>
      <td >fsdf</td>
      <td>sdfsfd</td>
      <td>sdfs</td>
      <td>fsdfsdf</td>
    </tr>
        <tr>
      <td > asdf</td>
      <td >asdfa</td>
      <td >fsdf</td>
      <td>sdfsfd</td>
      <td>sdfs</td>
      <td>fsdfsdf</td>
    </tr>
        <tr>
      <td > asdf</td>
      <td >asdfa</td>
      <td >fsdf</td>
      <td>sdfsfd</td>
      <td>sdfs</td>
      <td>fsdfsdf</td>
    </tr>

   </tbody>
  </table>
 </div>
  <div>
  </div>
 </div>
</div> 
</div>

CSS:

.topTable{
 height:70px;
background:red;
margin-top:-20px;
margin-bottom:20px;     
display: flex;
padding-left: 32px;
border:1px solid rgba(0,0,0,.1)
}

.tableDiv{
margin-top:50px
}

我尝试将 position:static 放在 div 上,但是向下滚动时,表格会放在它上面。 如何也使表静态及其标题固定? 任何帮助表示赞赏

【问题讨论】:

  • 请考虑使用[最小、完整且可验证的示例] (stackoverflow.com/help/mcve) 发布您的问题。你这里有一个有点臃肿asdfs。
  • 啊,对不起。这些只是行的随机内容,因此它有足够的行需要向下滚动。

标签: css bootstrap-4


【解决方案1】:

您必须将顶部块与内容块分开,否则您会修复所有问题。

现在您可以固定第一个块,该块的宽度和 z-index 必须比内容块多 100%(默认为 0 -> 所以我们需要 1 或更高)。

position:fixed;
width:100%;
z-index: 1;

我已经分叉了你的小提琴:http://jsfiddle.net/n958b7q3/1/ 更改已标记。

一些提示:

html

  • 你有很多 div,只有在真正需要时才创建新的 div
  • 您的表单没有结束标签&lt;/form&gt;

css:

  • 你在border:1px solid rgba(0,0,0,.1)之后忘记了;

【讨论】:

  • 非常感谢,但这只会修复 topDiv。我也试图固定表头,这就是为什么我不知道要使用哪些位置,因为两者都需要在向下滚动时固定。
  • 对不起,我误解了...像这样:jsfiddle.net/adsrr8ss ?你只需要多设计一点样式
  • 谢谢,但这不起作用,因为现在标题已从表格中分离出来,并且如果某个列数据有更多文本并且它会扩展,那么标题将不会做同样的事情。每个标题列都应该与内容列匹配,而不是给它一个固定的宽度,因为我不知道文本会有多长。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2012-11-24
  • 2019-12-30
  • 2015-05-04
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多