純css實現table固定列與表頭中間橫向滾動執行個體講解

來源:互聯網
上載者:User
這篇文章主要給大家介紹了關於如何利用純css實現table固定列與表頭,中間橫向滾動的相關資料,文中通過範例程式碼詳細的給大家介紹了關於實現該效果的思路與方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

最近在做的後台管理系統要處理大量的表格,因為原項目是採用的for迴圈加拼接字串的方式實現;導致js代碼一大堆;各種單引號和雙引號的嵌套;讓人頭疼;遂引入vue.js;用v-for做模板渲染;工作量頓時減輕不少,心情舒暢;

文字被強制換行了

由於個別表的列數較多;文字都擠在一起向下換行了;現場慘不忍睹;於是採用強制不換行的方式


<style>p{     white-space: nowrap;//強制不折行}</style>

新的問題是強制換行之後整個寬度超出了body

於是考慮到把table重要的列給固定掉;中間用橫向捲軸來拖動;


<style>p{    white-space: nowrap;    overflow: hidden;//控制溢出隱藏    overflow-x: scroll;//設定橫向捲軸}</style>
  • 考慮到要做固定列;於是要把table拆分出來;然後用浮動把table還原;下面這個案例就是把一個table拆成三個;然後浮動起來還原

  • 考慮到要做自適應;於是採用百分比來做;


<style>    p{        width: 100%;        white-space: nowrap;    }    table td{        border: 1px solid #000;    }    .tab1{        width: 20%;        float: left;    }    .tab2{        width: 70%;        float: left;        overflow: hidden;        overflow-x: scroll;    }    .tab3{        width: 10%;        float: left;    }</style><body><p>    <table class="tab1">        <thead>        <tr>            <th>首列</th>        </tr>        </thead>        <tbody>        <tr>            <td>首列</td>        </tr>        </tbody>    </table>    <table class="tab2">        <thead>        <tr>            <th>中間列</th>        </tr>        </thead>        <tbody>        <tr>            <td>中間列</td>        </tr>        </tbody>    </table>    <table class="tab3" >        <thead>        <tr>            <th>尾列</th>        </tr>        </thead>        <tbody>        <tr>            <td>尾列</td>        </tr>        </tbody>    </table></p></body>

於是上面這個案例就完成了

還有一點是中間table的表頭也需要固定 不能隨下面的額tbody去滑動;我這裡採取的思路是用定位去做;既然上面都是用百分比去做;那麼定位的left值也是百分比;這裡就不上代碼了

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.