【问题标题】:Navbar and THead Fixed-Top导航栏和头部固定顶部
【发布时间】:2023-03-21 19:44:01
【问题描述】:

我正在创建一个简单的站点,该站点将显示计算机列表及其一些信息。到目前为止,除了滚动时无法让标题保持固定在导航栏上之外,我的所有功能几乎都按我想要的方式运行。我对这一切还是很陌生,但我将在下面列出我尝试过的一些事情以及我的网页的简化版本。

  1. 通过广告在导航栏/表格周围放置一个 div:不滚动
  2. 使 tbody 可滚动并固定 navbar/thead 的位置: 破坏格式
  3. 仅将固定位置应用于前导:也会破坏格式

非常感谢任何帮助!

HTML

    <nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
      </li>
    </ul>
    <form class="form-inline my-2 my-lg-0">
      <input id="myInput" onkeyup="myFunction()" class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
    </form>
  </div>
</nav>
<br><br>
<table id="myTable" class="table table-striped table-hover tablesorter">
  <thead>
    <tr>
      <th scope="col">Status</th>
      <th scope="col">Computer</th>
      <th scope="col">IP Address</th>
      <th scope="col">MAC</th>
    </tr>
  </thead>
  <tbody id="myTableSearch">
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 1</td>
      <td>192.168.1.21</td>
      <td>92:41:04:FF:15:EB</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 2</td>
      <td>192.168.1.22</td>
      <td>5C:3B:C8:EA:6C:3A</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 3</td>
      <td>192.168.1.23</td>
      <td>BD:2D:94:8A:63:83</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 4</td>
      <td>192.168.1.24</td>
      <td>9C:D7:16:1F:0B:A3</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 5</td>
      <td>192.168.1.25</td>
      <td>05:C4:95:A6:B2:E6</td>
    </tr>
     <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 1</td>
      <td>192.168.1.21</td>
      <td>92:41:04:FF:15:EB</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 2</td>
      <td>192.168.1.22</td>
      <td>5C:3B:C8:EA:6C:3A</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 3</td>
      <td>192.168.1.23</td>
      <td>BD:2D:94:8A:63:83</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 4</td>
      <td>192.168.1.24</td>
      <td>9C:D7:16:1F:0B:A3</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 5</td>
      <td>192.168.1.25</td>
      <td>05:C4:95:A6:B2:E6</td>
    </tr>
     <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 1</td>
      <td>192.168.1.21</td>
      <td>92:41:04:FF:15:EB</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 2</td>
      <td>192.168.1.22</td>
      <td>5C:3B:C8:EA:6C:3A</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 3</td>
      <td>192.168.1.23</td>
      <td>BD:2D:94:8A:63:83</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 4</td>
      <td>192.168.1.24</td>
      <td>9C:D7:16:1F:0B:A3</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 5</td>
      <td>192.168.1.25</td>
      <td>05:C4:95:A6:B2:E6</td>
    </tr>
     <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 1</td>
      <td>192.168.1.21</td>
      <td>92:41:04:FF:15:EB</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 2</td>
      <td>192.168.1.22</td>
      <td>5C:3B:C8:EA:6C:3A</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 3</td>
      <td>192.168.1.23</td>
      <td>BD:2D:94:8A:63:83</td>
    </tr>
    <tr>
      <td><span class="badge badge-success">Online</span></td>
      <td>Computer 4</td>
      <td>192.168.1.24</td>
      <td>9C:D7:16:1F:0B:A3</td>
    </tr>
    <tr>
      <td><span class="badge badge-danger">Offline</span></td>
      <td>Computer 5</td>
      <td>192.168.1.25</td>
      <td>05:C4:95:A6:B2:E6</td>
    </tr>
  </tbody>
</table>

JS

$(function() {
  $("#myTable").tablesorter();
});

    $(document).ready(function(){
      $("#myInput").on("keyup", function() {
        var value = $(this).val().toLowerCase();
        $("#myTableSearch tr").filter(function() {
          $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
        });
      });
});

https://jsfiddle.net/80Lt2d6p/

【问题讨论】:

    标签: javascript jquery html twitter-bootstrap


    【解决方案1】:

    我们可以使用here提供的答案作为起点,进行以下修改:

    .table-fixed {
      width: 100%;
    }
    
    .table-fixed thead th {
        position: sticky;
        position: -webkit-sticky;
        /*top: 0;*/
        top:55px; /* the height of the fixed nav-bar */
        z-index: 999;
        background-color: #000;
        color: #fff;
    }
    

    现在删除HTMLnav-bar 之后的&lt;br&gt;

    <nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark">
      <a class="navbar-brand" href="#">Navbar</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
    
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item active">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
        </ul>
        <form class="form-inline my-2 my-lg-0">
          <input id="myInput" onkeyup="myFunction()" class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
        </form>
      </div>
    </nav>
    <!-- remove the br from here, we will tackle this with the top:55px -->
    

    这是一个更新的 JSFiddle:
    DEMO

    【讨论】:

      【解决方案2】:

      也许这会对你有所帮助这是一个基于你自己的小提琴。

      1st)通过一些简单的检查来修复thead,如下所示

      $(window).scroll(function() {
      if ($(this).scrollTop() >= 100) { 
          $('#myTable').addClass('fixed');  
      } else {
                  $('#myTable').removeClass('fixed');
          }
      });
      

      2nd) 应用一些 css

      #myTable.fixed thead { 
        position: fixed; background: #dddddd;
        left: 0; width: 100%;
      }
      

      我不确定哪种格式被破坏了,如果你在谈论 th 那么你可以用一些 css 来设置它

      https://jsfiddle.net/bLjdhc9x/1/

      【讨论】:

        【解决方案3】:

        .table-area {
          position: relative;
          z-index: 0;
          margin-top: 60px;
        }
        
        table.rajresponsive-table {
          display: table;
         
          table-layout: fixed;
          
          width: 100%;
         
          height: 100%;
        }
        
        table.rajresponsive-table thead {
          position: fixed;
          top: 50px;
          left: 0;
          right: 0;
          width: 100%;
          height: 50px;
          line-height: 3em;
          
          table-layout: fixed;
          display: table;
        }
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
        
        <nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark">
          <a class="navbar-brand" href="#">Navbar</a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
          </button>
        
          <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
              <li class="nav-item active">
                <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
              </li>
            </ul>
            <form class="form-inline my-2 my-lg-0">
              <input id="myInput" onkeyup="myFunction()" class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
            </form>
          </div>
        </nav>
        <br><br>
        <section class="content-area">
          <div class="table-area">
            <table class="rajresponsive-table table">
          <thead>
            <tr>
              <th scope="col">Status</th>
              <th scope="col">Computer</th>
              <th scope="col">IP Address</th>
              <th scope="col">MAC</th>
            </tr>
          </thead>
          <tbody id="myTableSearch">
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 1</td>
              <td>192.168.1.21</td>
              <td>92:41:04:FF:15:EB</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 2</td>
              <td>192.168.1.22</td>
              <td>5C:3B:C8:EA:6C:3A</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 3</td>
              <td>192.168.1.23</td>
              <td>BD:2D:94:8A:63:83</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 4</td>
              <td>192.168.1.24</td>
              <td>9C:D7:16:1F:0B:A3</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 5</td>
              <td>192.168.1.25</td>
              <td>05:C4:95:A6:B2:E6</td>
            </tr>
             <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 1</td>
              <td>192.168.1.21</td>
              <td>92:41:04:FF:15:EB</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 2</td>
              <td>192.168.1.22</td>
              <td>5C:3B:C8:EA:6C:3A</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 3</td>
              <td>192.168.1.23</td>
              <td>BD:2D:94:8A:63:83</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 4</td>
              <td>192.168.1.24</td>
              <td>9C:D7:16:1F:0B:A3</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 5</td>
              <td>192.168.1.25</td>
              <td>05:C4:95:A6:B2:E6</td>
            </tr>
             <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 1</td>
              <td>192.168.1.21</td>
              <td>92:41:04:FF:15:EB</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 2</td>
              <td>192.168.1.22</td>
              <td>5C:3B:C8:EA:6C:3A</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 3</td>
              <td>192.168.1.23</td>
              <td>BD:2D:94:8A:63:83</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 4</td>
              <td>192.168.1.24</td>
              <td>9C:D7:16:1F:0B:A3</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 5</td>
              <td>192.168.1.25</td>
              <td>05:C4:95:A6:B2:E6</td>
            </tr>
             <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 1</td>
              <td>192.168.1.21</td>
              <td>92:41:04:FF:15:EB</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 2</td>
              <td>192.168.1.22</td>
              <td>5C:3B:C8:EA:6C:3A</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 3</td>
              <td>192.168.1.23</td>
              <td>BD:2D:94:8A:63:83</td>
            </tr>
            <tr>
              <td><span class="badge badge-success">Online</span></td>
              <td>Computer 4</td>
              <td>192.168.1.24</td>
              <td>9C:D7:16:1F:0B:A3</td>
            </tr>
            <tr>
              <td><span class="badge badge-danger">Offline</span></td>
              <td>Computer 5</td>
              <td>192.168.1.25</td>
              <td>05:C4:95:A6:B2:E6</td>
            </tr>
          </tbody>
        </table>
         </div>
        </section>

        【讨论】:

        • @StaticBeagle 位置:粘性;位置:-webkit-sticky;不支持某些浏览器