• 原生表格滚动合并功能


    表格

    我们在做管理系统的时候。
    经常使用表格展示数据。
    用了这么久的表格,你还记得原生表格怎么写的嘛?
    

    表格标签的简单介绍

    table:是整个表格的框架。
    
    rt:表示表格的行。表格中有多少个 <tr> 标签就表示有多少行数据。
    
    td:单元格。 
    它是存放数据的标签。单元格的数据可以是文本、图片、列表、段落。
    
    th: 是表格的表头。
    <th> 其实是 <td> 单元格的一种变体.
    本质上还是一种单元格。
    <th> 一般位于第一行,充当每一列的标题。
    大多数的浏览器会把表头显示为【粗体居中】的文本。
    
    tbody 是表格内容的
    

    表格滚动

    1.错误的做法,并不会产生滚动条的
    <tbody class="tbodybox">
        <tr class="trcss">
            <td>学习语文</td>
        </tr>
    </tbody>
    .tbodybox {
        height: 200px;
        overflow-y: auto;
    }
    
    正确的做法
    .tbodybox {
        max-height: 360px;
        display: block;
        overflow-y: overlay;
    }
    如果想要在tbody支持表格滚动的话,
    tbody必须要设置为具有块级元素的特征。
    这样滚动才会生效
    
    th和td 需要设置display: inline-block;
    这样元素样式才不会出现问题
    否者的话,会有问题的哈。
    
    但是这样会带来另外一个问题。
    那就是表格在合并的时候合并的样式会出问题。
    合并的时候不允许有table有相关属性display:xxx
    

    下面我们来写一个简单的表格支持滚动

    <!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 {
                /* 表格中的单元格居中 */
                text-align: center;
                /* 去除间隙 */
                border-collapse: collapse;
                /* 边框 */
                border: 1px solid pink;
                border-right: none;
            }
            
            tbody tr {
                /* 表格每一行的顶部表框 */
                border-top: 1px solid pink;
            }
            
            table tr th,
            table tbody tr td {
                /* 滚动的时候需要,否者表格内容宽度不对 */
                display: inline-block;
                height: 40px;
                line-height: 40px;
                 170px;
                /* 超出显示省略号 */
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
                /* 右边的边框线 */
                border-right: 1px solid pink;
            }
            
            .tbodybox {
                max-height: 360px;
                <!-- 这个是必须有的,否者不可以滚动 -->
                display: block;
                overflow-y: overlay;
            }
            
            .table-table .trcss:nth-child(odd) {
                background: palegoldenrod;
            }
            
            .table-table .trcss:nth-child(even) {
                background: palegreen;
            }
        </style>
    </head>
    
    <body>
        <table class="table-table">
            <tr class="table-header-table">
                <th>星期一</th>
                <th>星期二</th>
                <th>星期三</th>
                <th>星期四</th>
                <th>星期五</th>
            </tr>
            <tbody class="tbodybox">
                <tr class="trcss">
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                </tr>
                <tr class="trcss">
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                </tr>
                <tr class="trcss">
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                    <td>学习语文</td>
                </tr>
            </tbody>
        </table>
    </body>
    
    </html>
    

    合并表格

    colspan 合并横向的单元格td;或者说 colspan向右合并单元格 
    colspan="2" 表示td这个单元格横向占据2份;
    
    rowspan 属性表示向下合并单元格 
    rowspan="2" 表示td这个单元格纵向占据2份; 
    
     <!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 {
                /* 表格中的单元格居中 */
                text-align: center;
                /* 去除间隙 */
                border-collapse: collapse;
                /* 边框 */
                border: 1px solid pink;
                border-right: none;
            }
            
            tbody tr {
                /* 表格每一行的顶部表框 */
                border-top: 1px solid pink;
            }
            
            table tr th,
            table tbody tr td {
                /*
            display: inline-block;
            有了display表格的合并会失效
            */
                height: 40px;
                line-height: 40px;
                 170px;
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
                border-right: 1px solid pink;
            }
        </style>
    </head>
    
    <body>
        <table>
            <tr>
                <th>名称</th>
                <th>官网</th>
                <th>性质</th>
            </tr>
            <tr>
                <td colspan="2">C语言中文网</td>
                <td>http://c.xxx.net/</td>
                <!-- <td>编程</td> -->
            </tr>
            <tr>
                <td>百度</td>
                <td>http://c.ccc.net/</td>
                <td>搜索</td>
            </tr>
            <tr>
                <td>腾讯</td>
                <td>http://c.BBB.net/</td>
                <td rowspan="2">搜索</td>
            </tr>
            <tr>
                <td>字节跳动</td>
                <td>http://c.ff.net/</td>
                <!-- <td>搜索</td> -->
            </tr>
        </table>
    </html>
    

    单元格在合并的时候需要注意的点

    td,table标签上是不可以有 
    display: inline-block;或者display: block;
    或者说只要有 display:xxx;
    表格的合都会并会失败
    
    如果想要合并表格并且需要滚动怎么办呢?
    这个时候就需要拆分了。
    用一个div包裹表头(table>thead)和内容(table>tbody)
    将滚动放置在table上
    

    既可以合并表格又可以滚动

    <style>
        .tableheader {
            border: 1px solid pink;
            border-bottom: none;
        }
        table {
            /* 去除间隙 */
            border-collapse: collapse;
        }
        .table-table-cont {
            display: inline-block;
            max-height: 260px;
            overflow-y: overlay;
            border-left: 1px solid pink;
            border-bottom: 1px solid pink;
        }
        tbody tr {
            /* 表格每一行的顶部表框 */
            border-top: 1px solid pink;
        }
        table tr th,
        table tbody tr td {
            height: 40px;
            line-height: 40px;
             170px;
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
            border-right: 1px solid pink;
        }
        .table-table-cont .trcss:nth-child(odd) {
            background: palegoldenrod;
        }
        .table-table-cont .trcss:nth-child(even) {
            background: palegreen;
        }
    </style>
    
    <div>
    <table class="tableheader">
        <tr class="table-header-table">
            <th>星期一</th>
            <th>星期二</th>
            <th>星期三</th>
            <th>星期四</th>
            <th>星期五</th>
        </tr>
    </table>
    <table class="table-table-cont">
        <tbody class="tbodybox">
            <tr class="trcss">
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
            </tr>
            <tr class="trcss">
                <td colspan="4">学习语文</td>
                <td>学习语文</td>
            </tr>
    
            <tr class="trcss">
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
            </tr>
    
            <tr class="trcss">
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
            </tr>
    
            <tr class="trcss">
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
            </tr>
            <tr class="trcss">
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
            </tr>
    
            <tr class="trcss">
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
                <td>学习语文</td>
            </tr>
        </tbody>
    </div>
    

  • 相关阅读:
    刘若英和她的<<蝴蝶>>
    我的心情日记
    flash鼠标特效
    flash的播放器
    NoSQL数据存储引擎
    分享iphone开发的好网站,希望大家也能提供一些分享下
    创业经验总结
    产品经理之我见
    软件开发报价的计算方法
    Android实现号码归属地查询
  • 原文地址:https://www.cnblogs.com/IwishIcould/p/16440580.html
Copyright © 2020-2023  润新知