• [TimLinux] django html如何实现固定表头


     1. 需求

    表格很长,这个时候就希望表格头部不动,而只是表格内容行支持滚动功能。

    2. 方法

    • 两张表:一张表(THeader)负责头部字段的显示,另一张表(TBody)负责内容行字段的显示。
    • 两张表都存放在一个div中
    • THeader、TBody分别存放在一个div中
    • 整个div不支持滚动条:overflow: hidden
    • 包住TBody的div支持滚动条:overflow-y: scroll
    • THeader的显示字段比Tbody多一个:用来存放滚动条的位置,宽度设置为17px
    • TBody的高度需要通过JavaScript来计算,可以使用onresize事件动态触发高度的变化

    3. 代码

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Table</title>
    <style>
        table {
            width: 100%;
            border-collapse: collapse;
            border-radius: 4px;
        }
    
        th, td {
            text-align: center;
            border: 1px solid green;
        }
        
        th {
            background-color: rgba(167, 167, 167, 0.5);
            font-size: 15px;
        }
        
        td {
            font-size: 14px;
        }
        
        tr:nth-child(even) {
            background-color: #e8f5ed;
        }
        
        .table-col-1 { width: 30px; }
        .table-col-2 { width: 60px; }
        .table-col-3 { width: 80px; }
        .table-col-4 { width: 22px; }
        /* .table-col-5 {  30px; } 这列作为动态宽度值 */
        .table-col-6 { width: 140px; }
        .table-col-7 { width: 220px; }
        .table-col-8 { width: 180px; }
        .table-col-9 { width: 16px; }
        
        #idTableBody {
            width: 100%;
            overflow-y: scroll; 
            height: 120px; /* 如果需要动态的表格内容高度,可以将高度属性的设置转移到onresize事件中实现 */
        } 
    </style>
    </head>
    <body>
        <div class="table-details">
            <div id="idTableHeader">
                <table>
                    <colgroup>
                        <col class="table-col-1">
                        <col class="table-col-2">
                        <col class="table-col-3">
                        <col class="table-col-4">
                        <col class="table-col-5">
                        <col class="table-col-6">
                        <col class="table-col-7">
                        <col class="table-col-8">
                        <col class="table-col-9">
                    </colgroup>
                    <tr>
                        <th>1</th>
                        <th>1</th>
                        <th>1</th>
                        <th>1</th>
                        <th>1</th>
                        <th>1</th>
                        <th>1</th>
                        <th>1</th>
                        <th></th>
                    </tr>
                </table>
            </div>
            <div id="idTableBody">
                <table>
                    <colgroup>
                        <col class="table-col-1">
                        <col class="table-col-2">
                        <col class="table-col-3">
                        <col class="table-col-4">
                        <col class="table-col-5">
                        <col class="table-col-6">
                        <col class="table-col-7">
                        <col class="table-col-8">
                    </colgroup>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                        <td>1</td>
                    </tr>
            </div>
        </div>
    </body>
    </html>

    效果:

    onresize事件:

    function setTBodyHeight() {
        var t = document.getElementById('idTableBody');
        var innerHeight = window.innerHeight;
        t.style.height = (innerHeight - 200) + "px"; // 减去200是去掉一个固定高度
    }
    
    window.onload = function () {
        // 监听事件
        window.onresize = setTBodyHeight;
    
        // 首次加载,由代码触发一次resize事件。
        var ev = document.createEvent("Events");
        ev.initEvent('resize', false, true);
        window.dispatchEvent(ev);
    };
  • 相关阅读:
    oracle 分析函数3
    oracle 分析函数4
    oracle 分析函数2
    postgres
    博客系统
    Java 笔试面试 算法编程篇 一
    Java 笔试面试 基础篇 一
    Struts2
    mysql 数据类型
    ExceptionDemo
  • 原文地址:https://www.cnblogs.com/timlinux/p/9261774.html
Copyright © 2020-2023  润新知