整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          html表格實現固定table的表頭和第一列內容

          頁中實現像表格文檔那樣固定table的表頭和第一列內容,類似于excel表格那樣!下面說說實現方法

          效果如下:

          在數據眾多的列表下,規定的區域內上下左右都可以滾動查看,然而表頭和側邊表頭都還在,方便用戶查看數據,增強用戶體驗!

          實現代碼

          html結構:

          css代碼:

          javascript代碼:

          CSS table表格 thead固定 tbody滾動效果

          由于項目需要,在表格中,當數據量越來越多時,就會出現滾動條,而在滾動的過程中,默認情況下表格頭部會跟著表格內容一起滾動,導致看不到頭部對應的字段名,影響體驗效果!

          實現思路:

          將內容要滾動的區域控制在 tbody 標簽中添加 overflow-y: auto; 樣式,給 tr 標簽添加 table-layout:fixed; (這是核心)樣式,由于 tbody 有了滾動條后,滾動條也要占位,又會導致 tbody 和 thead 不對齊,所以在設置 tbody 的寬度時要把滾動條的寬度也加上【如果不想顯示滾動條的話,可以把滾動條的寬度設置為0px,滾動條就沒有了。

          下面是效果圖,具體完整實例代碼也在下面:


          完整實例代碼:

          <!DOCTYPE html>
          <html lang="en">
           
          <head>
              <meta charset="UTF-8">
              <meta name="viewport" content="width=device-width, initial-scale=1.0">
              <meta http-equiv="X-UA-Compatible" content="ie=edge">
              <title>純CSS table表格 thead固定 tbody滾動</title>
              <style>
                  .table-box {
                      margin: 100px auto;
                      width: 1024px;
                  }
           
                  /* 滾動條寬度 */
                  ::-webkit-scrollbar {
                      width: 8px;
                      background-color: transparent;
                  }
           
                  /* 滾動條顏色 */
                  ::-webkit-scrollbar-thumb {
                      background-color: #27314d;
                  }
           
                  table {
                      width: 100%;
                      border-spacing: 0px;
                      border-collapse: collapse;
                  }
           
                  table caption{
                      font-weight: bold;
                      font-size: 24px;
                      line-height: 50px;
                  }
           
                  table th, table td {
                      height: 50px;
                      text-align: center;
                      border: 1px solid gray;
                  }
           
                  table thead {
                      color: white;
                      background-color: #38F;
                  }
           
                  table tbody {
                      display: block;
                      width: calc(100% + 8px); /*這里的8px是滾動條的寬度*/
                      height: 300px;
                      overflow-y: auto;
                      -webkit-overflow-scrolling: touch;
                  }
           
                  table tfoot {
                      background-color: #71ea71;
                  }
           
                  table thead tr, table tbody tr, table tfoot tr {
                      box-sizing: border-box;
                      table-layout: fixed;
                      display: table;
                      width: 100%;
                  }
           
                  table tbody tr:nth-of-type(odd) {
                      background: #EEE;
                  }
           
                  table tbody tr:nth-of-type(even) {
                      background: #FFF;
                  }
           
                  table tbody tr td{
                      border-bottom: none;
                  }
           
              </style>
          </head>
           
          <body>
              <section class="table-box">
                  <table cellpadding="0" cellspacing="0">
                      <caption>純CSS table表格 thead固定 tbody滾動</caption>
                      
                      <thead>
                          <tr>
                              <th>序 號</th>
                              <th>姓 名</th>
                              <th>年 齡</th>
                              <th>性 別</th>
                              <th>手 機</th>
                          </tr>
                      </thead>
           
                      <tbody>
                          <tr>
                              <td>001</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>女</td>
                              <td>Mobile</td>
                          </tr>
                          <tr>
                              <td>002</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>男</td>
                              <td>Mobile</td>
                          </tr>
                          <tr>
                              <td>003</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>女</td>
                              <td>Mobile</td>
                          </tr>
                          <tr>
                              <td>004</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>男</td>
                              <td>Mobile</td>
                          </tr>
                          <tr>
                              <td>005</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>女</td>
                              <td>Mobile</td>
                          </tr>
                          <tr>
                              <td>006</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>男</td>
                              <td>Mobile</td>
                          </tr>
                          <tr>
                              <td>007</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>女</td>
                              <td>Mobile</td>
                          </tr>
                          <tr>
                              <td>008</td>
                              <td>Name</td>
                              <td>28</td>
                              <td>男</td>
                              <td>Mobile</td>
                          </tr>
                      </tbody>
           
                      <tfoot>
                          <tr>
                              <td colspan="5">【table,thead,tbody,tfoot】 colspan:合并行, rowspan:合并列 </td>
                          </tr>
                      </tfoot>
                  </table>
              </section>
          </body>
           
          </html>

          我自己是一名從事了多年開發的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。



          原文鏈接:https://blog.csdn.net/muguli2008/article/details/103787152

          ## table

          表格是一個網站很常用的元素,用以展示大量的數據。在處理表格時,通常會加入許多功能,如斑馬線、選中高亮、固定表頭、鎖定列等等,本篇文章主要介紹如何單純的使用css實現固定行或列的功能。

          ### 一般做法

          大部分的網上介紹的實現方式,甚至部分ui框架如iview等都是通過三至四個表格組合,然后js處理同步滾動來實現,這樣的好處是容易實現,pc端也不會出現什么問題。但是在手機端時,會有嚴重的不同步滾動現象,處理的不好時,甚至會出現錯位等,體驗非常不好。

          ### 本文做法

          主要使用了二個css屬性

          * table-layout: fixed

          * posotion: sticky

          ### table-layout

          為了讓表格呈現滾動效果,必須設定table-layout: fixed,并且給與表格寬度

          ```css

          table {

          table-layout: fixed;

          width: 100%;

          }

          ```

          ### position

          固定表格的行列需要使用到`posotion: sticky`設定

          sticky的表現類似于relative和fixed的合體,在超過目標區域時,他會固定于目標位置

          **注意:** `posotion: sticky`應用于table時,只能作用于`<th>`和`<td>`,并且必須定義目標位置left / right / top / bottom來實現固定效果

          ```

          thead tr th {

          position:sticky;

          top:0;

          }

          ```

          簡單說明這兩個屬性后,我們首先建立一個帶表格的html頁面

          ```html

          <!DOCTYPE html>

          <html lang="en">

          <head>

          <meta charset="UTF-8">

          <title>Title</title>

          </head>

          <body>

          <div>

          <table cellspacing="0" border="0" cellpadding="0">

          <thead>

          <tr>

          <th></th>

          <th></th>

          <th></th>

          <th></th>

          <th></th>

          </tr>

          </thead>

          <tbody>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr> <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          <tr>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          <td></td>

          </tr>

          </tbody>

          </table>

          </div>

          </body>

          </html>

          ```

          css部分如下

          ```

          <style>

          div{

          overflow:auto;

          width:400px;

          height:290px; /* 固定高度 */

          border:1px solid gray;

          border-bottom: 0;

          border-right: 0;

          }

          td, th {

          border-right :1px solid gray;

          border-bottom :1px solid gray;

          width:100px;

          height:30px;

          box-sizing: border-box;

          }

          th {

          background-color:lightblue;

          }

          table {

          border-collapse:separate;

          table-layout: fixed;

          width: 100%; /* 固定寬度 */

          }

          td:first-child, th:first-child {

          position:sticky;

          left:0; /* 首行在左 */

          z-index:1;

          background-color:lightpink;

          }

          thead tr th {

          position:sticky;

          top:0; /* 第一列最上 */

          }

          th:first-child{

          z-index:2;

          background-color:lightblue;

          }

          </style>

          ```

          最后的效果如下:



          ### 注意

          * z-index很重要,需要仔細設置,尤其是對于ios

          * 如果是固定多列,每一列需要注意設置好left的值

          * 自測時,手機端安卓與ios測試各測試了兩臺,均是可以的,但是測試的機型不全,需要自行多測試


          主站蜘蛛池模板: 国产亚洲一区二区三区在线| 国产免费一区二区三区VR | 国产经典一区二区三区蜜芽| 国产一区二区三区在线观看免费| 国产成人无码AV一区二区| 少妇人妻精品一区二区| 亚洲一区二区三区在线| 亚洲av无码一区二区三区天堂古代 | 国产伦精品一区二区三区免费迷 | 亚洲国产精品一区二区第四页 | 最新欧美精品一区二区三区| 日韩爆乳一区二区无码| 精品人妻系列无码一区二区三区| 国产色综合一区二区三区| 亚洲一区二区三区在线观看精品中文 | 中文字幕一区二区三匹| 91精品一区二区综合在线| 在线精品视频一区二区| 国产成人av一区二区三区不卡| 福利国产微拍广场一区视频在线| 久久精品免费一区二区喷潮| 在线观看精品视频一区二区三区| 香蕉视频一区二区三区| 国产在线精品一区在线观看| 日产亚洲一区二区三区| 蜜桃AV抽搐高潮一区二区| 国产高清精品一区| 无码人妻一区二区三区在线视频 | 亚洲图片一区二区| 亚洲a∨无码一区二区| 久久亚洲中文字幕精品一区四 | 亚洲色无码专区一区| 亚洲国产精品一区二区第四页| 奇米精品一区二区三区在线观看| 无码av免费一区二区三区试看| 在线观看日韩一区| 3d动漫精品啪啪一区二区免费| 八戒久久精品一区二区三区| 中文字幕一区二区精品区| 精品视频在线观看一区二区三区| 久久精品国产第一区二区|