最简单的固定表格列实现

ref: https://dev.to/nicolaserny/table-with-a-fixed-first-column-2c5b

假设我们现在有这样一个表格

  <table>
    <thead>
      <tr>
        <th>姓名</th>
        <th>性别</th>
        <th>民族</th>
        <th>年龄</th>
        <th>籍贯</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>夏依然</td>
        <td></td>
        <td></td>
        <td>25</td>
        <td>四川成都</td>
      </tr>
      <tr>
        <td>郭丹</td>
        <td></td>
        <td>穿青人</td>
        <td>32</td>
        <td>四川丹棱</td>
      </tr>
      <tr>
        <td>阿说伍叁</td>
        <td></td>
        <td></td>
        <td>20</td>
        <td>四川喜德</td>
      </tr>
      <tr>
        <td>塔瑞克·加尼尤</td>
        <td></td>
        <td></td>
        <td>25</td>
        <td>北京</td>
      </tr>
      <tr>
        <td>爱新觉罗·玄烨</td>
        <td></td>
        <td></td>
        <td>30</td>
        <td>北京</td>
      </tr>
    </tbody>
  </table>

我们得到这样一个表格:

在这里插入图片描述

我们的需求是固定第一列,首先,我们使用overflow-x: auto使横向滚动条出现。

注意: 该属性适用元素为block/flex/grid元素

我们使用 divtable包裹起来,然后对这个div使用overflow-x属性:

<div class="container">
    <table>
      ...
    </table>
  </div>
.container {
  overflow-x: auto;
}

表格横向滚动的时候,我们使用粘性定位将第一列固定在左侧:

    .container {
      max-width: 250px;
      overflow-x: auto;
    }

    table {
      width: 100%;
      white-space: nowrap;
    }

    tr>th:first-child,
    tr>td:first-child {
      position: sticky;
      left: 0;
    }

效果如下:

在这里插入图片描述

但是拖动后会出现如下问题(文字重叠):

在这里插入图片描述

为了解决这个问题,我们需要使单元格具有背景,增加如下css:

...
    tr:nth-child(odd) td {
      background: #fff;
    }

    tr:nth-child(even) td,
    th {
      background: #e2e8f0;
    }

效果:
在这里插入图片描述

拖动后:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值