首页 > 其他分享 >前端页面Table CSS实现固定表头表首行和固定列拖动固定

前端页面Table CSS实现固定表头表首行和固定列拖动固定

时间:2023-05-29 10:57:19浏览次数:42  
标签:固定 表头 sticky th position table fixed 表首行

需要用到的2个属性

table-layout : fixed  
position : sticky

table-layout

table-layout属性有两种特定值:

auto(预设值)-表格的总宽度决定每一个储存格(cell)的最大值
fixed - 表格的总宽度决定于表格width的定义,以及各栏位(column)width的定义
为了让表格呈现滚动效果,必须设定table-layout:fixed 并且给与表格宽度。

table {
 table-layout: fixed;
 width: 100%;
}

Position

大家对position 的作用应该不陌生,而固定表格则需要使用到 position : sticky 的设定

sticky 的表现类似于relative 和fixed 的合体,在目标区域中可见时,他的行为就像relative 不会有任何变化,而当页面滚动超出目标区域时,他的表现改为fixed会固定于目标位置

要注意的是当position : sticky应用于table,只能作用于<th>和<td>,并且一定要定义目标位置 left / right / top / bottom 才会出现固定效果!

thead tr th {
 position:sticky;
 top:0;
}

实例如下

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>纯CSS实现表格首行和首列固定</title>
    <!-- 插入Vue -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        .main{
            width: 500px;
            overflow:auto;
            height:208px;  /* 设置固定高度 */
        }
        td, th {
            /* 设置td,th宽度高度 */
            border:1px solid gray;
            width:100px;
            height:30px;
        }
        th {
            background-color:lightblue;
        }
        table {
            table-layout: fixed;
            width: 200px; /* 固定宽度 */
        }
        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>
</head>
<body>
<div id="app">
    <div class="main">
        <table  cellspacing="0" >
            <thead>
            <tr>
                <th> </th>
                <th> </th>
                <th> </th>
                <th> </th>
                <th> </th>
                <th> </th>
                <th> </th>
                <th> </th>
                <th> </th>
            </tr>
            </thead>
            <tbody>
            <tr v-for="(item, index) in 30" :key="index">
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
            </tr>
            </tbody>
        </table>
    </div>
</div>
</body>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: 'Hello'
        },
    })
</script>
</html>

效果如下

 

标签:固定,表头,sticky,th,position,table,fixed,表首行
From: https://www.cnblogs.com/lgx5/p/17439809.html

相关文章

  • 如何设计一个速率限制器(令牌桶/漏桶/固定窗口/滑动窗口)
    在网络系统中,速率限制器被用来控制客户端或服务发送的流量的速率。在HTTP领域,速率限制器限制了在指定周期内允许发送的客户端请求的数量。如果API请求的数量超过了速率限制器定义的阈值,所有超出的调用都会被阻止。以下是一些示例:用户每秒钟最多只能发布2篇帖子。你可以每天......
  • vue iview render函数渲染table表头和列表内容
    1computed:{2tableColumns(){3return[4{5title:"封面",6key:"pageImage",7render:(h,params)=>{8returnh("img",{9style:{10......
  • java 定义不固定长度的数组
    在Java中,我们可以使用ArrayList来定义不固定长度的数组,因为ArrayList内部使用了一个动态数组来存储元素。ArrayList<Integer>intList=newArrayList<Integer>();intList.add(1);intList.add(2);intList.add(3);intList.a......
  • Element 表格固定列横向滚动条无法拖动的问题解决
    在Element-UI中,当对表格列进行固定后,底部的横向滚动条就无法拖动了,主要的问题就是固定区域盖住了横向滚动条。方案一:修改el-table__body-wrapper样式的层级,随便设个层级就可::v-deep.el-table__body-wrapper{z-index:2}//加了fixed之后失效::v-deep.el-table__fi......
  • Python自动化办公对每个子文件夹的Excel表加个表头(Excel不同名且有xls文件)
    大家好,我是皮皮。一、前言上一篇文章,我们抛出了一个问题,这篇文章来进行解答。如果针对子文件夹下不同的Excel表名,而且Excel表格类型包括了.xls和.xlsx应该如何处理?要求一步到位。二、实现过程其实这里依靠【ChatGPT】给的答案,只需要修改其中一行代码就可以搞定了,如下所示:imp......
  • Python自动化办公对每个子文件夹的Excel表加个表头(Excel不同名)(上篇)
    大家好,我是皮皮。一、前言上一篇文章,我们抛出了一个问题,这篇文章来进行解答。如果针对子文件夹下不同的Excel表名,应该如何处理?二、实现过程我们继续问ChatGPT,它给出了一个方法,如下所示:提问如下:假如你是一名Python程序员,现在你有一个自动化办公的需求,你桌面上有一个新建文件夹......
  • 在DevExpress中使用BandedGridView表格实现多行表头的处理
    在之前较早随笔中介绍过实现多行表头的处理,通过手工创建字段以及映射数据源字段属性的方式实现,有些客户反映是否可以通过代码方式更方便的创建对应的处理操作,因此本篇随笔继续探讨这个多行表头的处理的操作,使用代码的方式结合扩展函数处理,快速的实现GridControl的多行表头的处理操......
  • 使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)
    使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)受本篇问答的启发http://stackoverflow.com/questions/11272847/make-uiview-in-uiscrollview-stick-to-the-top-when-scrolled-up修改代码如下注意:使UIScrollView的子控件self.letter在scrolling的过程中,子......
  • 从AWR快照中固定执行计划
    Troubleshooting/resolutionf18mgmxm76kdr–sql_idprovidebyuserchecksqlplanhistorycolbtimefora25selecta.sql_id,a.plan_hash_value,to_char(begin_interval_time,'dd-mon-yyhh24:mi')btime,executions_deltaexecutions,round(ELAPSED......
  • Echarts X轴 强制显示所有标签 && 每行固定字数并换行显示
     效果图如下: 直接上代码:axisLabel:{//轴文字interval:0,//强制显示完整//每行显示4个文字换行formatter:function(value){varret="";//拼接加\n返回的类目项varmaxLen......