原生表格-滚动-合并功能

简介: 原生表格-滚动-合并功能

表格

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

表格标签的简单介绍

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;
            width: 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;
            width: 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;
        width: 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>

遇见问题,这是你成长的机会,如果你能够解决,这就是收获。

相关文章
Element UI - el-table 渲染慢,卡的原因
Element UI - el-table 渲染慢,卡的原因
3522 0
|
存储 Java API
【Java高手必备】揭秘!如何优雅地对List进行排序?掌握这几种技巧,让你的代码瞬间高大上!
【8月更文挑战第23天】本文深入探讨了Java中对List集合进行排序的各种方法,包括使用Collections.sort()、自定义Comparator以及Java 8的Stream API。通过示例代码展示了不同情况下如何选择合适的方法:从简单的整数排序到自定义类对象的排序,再到利用Comparator指定特殊排序规则,最后介绍了Stream API在排序操作中的简洁应用。理解这些技术的区别与应用场景有助于提高编程效率。
563 4
|
应用服务中间件 nginx
Nginx 出现403 Forbidden 的几种解决方案【已解决】
Nginx 出现403 Forbidden 的几种解决方案【已解决】
10416 3
|
12月前
|
监控 关系型数据库 MySQL
数据治理平台Datavines
【10月更文挑战第20天】随着数据量的增长和数字化转型的推进,数据治理成为关键议题。Datavines是一个开源的数据治理平台,提供数据目录、概览及质量检查等功能,帮助用户全面了解和管理数据,确保数据的准确性和有效性。通过简单的部署和配置,即可快速启动使用,支持数据源配置、质量监控及作业管理等核心功能。
2140 10
|
存储 人工智能 网络安全
科技云报到:云服务的中场战事,从AI应用开始
从去年的大模型之战,到今年的AI应用之争,云服务正在迈入全新的发展阶段。AI这个杠杆将各家厂商的竞争策略更向前推进了一步。
238 0
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
451 7
|
NoSQL 测试技术 Linux
Redis安装
Redis安装
287 1
|
前端开发 小程序 数据安全/隐私保护
|
存储 机器学习/深度学习 编解码
使用训练分类网络预处理多分辨率图像
说明如何准备用于读取和预处理可能不适合内存的多分辨率全玻片图像 (WSI) 的数据存储。肿瘤分类的深度学习方法依赖于数字病理学,其中整个组织切片被成像和数字化。生成的 WSI 具有高分辨率,大约为 200,000 x 100,000 像素。WSI 通常以多分辨率格式存储,以促进图像的高效显示、导航和处理。 读取和处理WSI数据。这些对象有助于使用多个分辨率级别,并且不需要将图像加载到核心内存中。此示例演示如何使用较低分辨率的图像数据从较精细的级别有效地准备数据。可以使用处理后的数据来训练分类深度学习网络。
614 0
|
缓存 NoSQL 关系型数据库
微服务治理 高可用 HA (High Availability) 的一些理解
微服务治理 高可用 HA (High Availability) 的一些理解
986 0