关于colgroup和col标签的介绍,使用其达到固定表头的效果

今天摸鱼的时候看阮神的博客,里面介绍了position的用法,最后一部分介绍了一个新的定位属性sticky,其中有一个固定表头的案例,我发现案例里面的固定表头只能用于那种占据整个页面的那种大表,但是我们常用的表格通常是只在一部分区域使用,于是查了一下固定表头的实现,在其中一种实现方法中发现了colgroupcol标签,回想起element-ui的表格组件也用了这两个标签,属实好奇,百度后决定记录一下。

1、colgroup和col

通常我们对table标签里面的某一列设置宽度时,都是使用伪类选择器nth-child对对应列的td的宽度进行设置。这样写起来未免麻烦,而且在代码量比较大的情况下,要找到这个样式进行修改也不是那么容易,而且语义不够明确。这时我们就可以用一个替代品来解决这个问题,没错,就是她俩:colgroupcol

这两个标签使用起来非常简单,就是用来控制table的列的样式,colcolumn(列)的开头三个字母,group有集体的意思,于是我们可以很自然的猜想col需要放在colgroup的里面。我们首先看个案例:

<table>
	<colgroup style="width: 100px;background-color: red;"></colgroup>
	<colgroup style="width: 200px;background-color: green;"></colgroup>
	<tr>
		<td>王小波</td>
		<td>李银河</td>
	</tr>
	<tr>
		<td>钱钟书</td>
		<td>杨绛</td>
	</tr>
	<tr>
		<td>梁思成</td>
		<td>林徽因</td>
	</tr>
</table>

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

可见第一列的宽度都被设置成了100px,背景色为红色,第二列的宽度为200px,背景色为绿色。上面的代码还可以这么写:

<table>
	<colgroup>
		<col style="width: 100px;background-color: red;" >
		<col style="width: 200px;background-color: green;" >
	</colgroup>
	<tr>
		<td>王小波</td>
		<td>李银河</td>
	</tr>
	<tr>
		<td>钱钟书</td>
		<td>杨绛</td>
	</tr>
	<tr>
		<td>梁思成</td>
		<td>林徽因</td>
	</tr>
</table>

可以得到相同的效果。colgroupcol均有5个属性,但是只有span属性被html5支持,其余都被废弃了。span的作用是跨列,即将样式赋予从当前列到跨越的所有列。如下:

<table>
	<colgroup>
		<col style="width: 100px;background-color: red;" span="2" >
	</colgroup>
	<tr>
		<td>王小波</td>
		<td>李银河</td>
	</tr>
	<tr>
		<td>钱钟书</td>
		<td>杨绛</td>
	</tr>
	<tr>
		<td>梁思成</td>
		<td>林徽因</td>
	</tr>
</table>

效果如下:
在这里插入图片描述
colgroup的用法相同,效果也一样。

注:colgroup标签必须在table中使用且必须位于 caption 元素之后,theadtbodytfoottr 元素之前。col标签通常用于colgroup中使用,且在 HTML 中,<col> 标签没有结束标签。在XHTML中,<col> 标签必须被正确的关闭。

2、colgroup和col标签的区别

目前尚未找到两者的区别,但是个人认为,如果要给表格设置公共样式,例如固定列宽,可以使用colgroup,如果表格每一列的样式不一致,则可以使用col,因为col的样式会覆盖colgroup的样式。个人更推荐使用col,因为利于后期维护。且语义更明确。

3、使用colgroup和col标签做固定表头

下面是转载的文飞代码

html部分

<div style="width: 800px;">
        <div class="table-head">
            <table>
                <colgroup>
                    <col style="width: 80px;" />
                    <col />
                </colgroup>
                <thead>
                    <tr>
                        <th>序号</th>
                        <th>内容</th>
                    </tr>
                </thead>
            </table>
        </div>
        <div class="table-body">
            <table>
                <colgroup>
                    <col style="width: 80px;" />
                    <col />
                </colgroup>
                <tbody>
                    <tr>
                        <td>1</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>2</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>3</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>4</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>5</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>6</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>7</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>8</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>9</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>10</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>11</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>12</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>13</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>14</td>
                        <td>我只是用来测试的</td>
                    </tr>
                    <tr>
                        <td>15</td>
                        <td>我只是用来测试的</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>

css部分

.table-head {
        padding-right: 17px;
        background-color: #999;
        color: #000;
    }

    .table-body {
        width: 100%;
        height: 300px;
        overflow-y: scroll;
    }

    .table-head table,
    .table-body table {
        width: 100%;
    }

    .table-body table tr:nth-child(2n+1) {
        background-color: #f2f2f2;
    }

固定表头

这里主要是通过colgroupcol控制列宽,使得表头列宽和内容部分列宽一致。
以上。

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TinyButStrong(TBS)是一个可以让PHP脚本和HTML文件干净分离的PHP模板引擎。TBS设计成可以使用任何可视化HTML编辑器来编写TBS的HTML模板页。TinyButStrong 3.10.1 更新日志:2015-11-08新功能:新功能新的运算符“*”的块定义的语法。例如:“块= 3 * TR”。新功能新的运营商“!”为块定义的语法。为了排除约束块标记使用它在第一个或最后一个标记。示例:“块= DIV”。新功能新的标记“。”为块定义。用它来代表绑定的TBS领域本身。例如:“块=。”新功能新的论据$ LocLst和$波什事件OnCacheField。它使一个插件移动,添加或删除TBS领域。新功能支持sqlite3的本机。增强功能:增强参数“平行= TBS:表”现在支持<TBODY>,<TFOOT>,<COLGROUP>和<COL>。在<COL>标签必须关闭,即使HTML实际上允许未关闭的标签。通过参数“ATT”当一组其他字段,字段的增强更好地管理移动。参数“ATT”可以使TBS领域向前迈进另一个相同块。增强支持GetOption('parallel_conf“)。增强支持GetOption('block_alias“)。修正错误:修正错误参数“ATT”未找到自动关闭的标签,如果没有空间“/>”之前。例如:<输入/>修正了“通知:未定义的属性:clsTbsLocator :: $ AttName”如果参数“atttrue”用于一个属性,是不是已经存在于目标元素可以出现。修正错误参数“OPE = upperw”仅适用于小写字符。修正了错误消息“请注意:未定义的属性:clsTbsLocator :: $ AttName在tbs_class.php在线1492”。
目录: 目录 第1篇 html基础入门篇 第1章 建立首要的、基础的正确认知 1.1 internet和万维网 1.1.1 什么是www(万维网) 1.1.2 w3c是什么 1.2 网页、浏览器、网站和网络服务器 1.2.1 网页和浏览器 1.2.2 不可不知的浏览器发展史 1.2.3 浏览网页 1.2.4 网站和网络服务器 1.3 了解html语言 1.3.1 关于html和html编辑器 1.3.2 创建第一个网页 1.3.3 查看网页的源文件 1.4 html 4.0的特点 1.4.1 国际化 1.4.2 可访问性 1.4.3 表格 1.4.4 混合文档 1.4.5 样式表 . 1.4.6 脚本 1.4.7 打印 1.5 巩固与自测 第2章 html文档的基本结构 2.1 使用dreamweaver创建第一个网页 2.1.1 dreamweaver安装和配置向导 2.1.2 使用dreamweaver创建网页的基本步骤 2.1.3 使用dreamweaver的基本知识 2.2 html文档的基本结构 2.2.1 了解sgml和html的关系 2.2.2 html简要的历史和为何要使用html 2.2.3 html 4.01的版本和文档类型声明 2.2.4 [html][/html]标签对和属性 2.2.5 [head][/head]标签对 2.2.6 [body][/body]标签对 2.3 巩固与自测 第3章 html文档的编写规范 3.1 使用标签、元素和属性 3.1.1 标签 3.1.2 元素 3.1.3 属性的定义 3.1.4 属性值的定义 3.1.5 元素和属性的大小写规范 3.2 字符引用 3.2.1 字符数字引用 3.2.2 字符实体引用 3.3 使用注释 3.4 关于空白和空白字符 3.4.1 关于断行符 3.4.2 空白字符 3.5 基本html数据型式 3.5.1 cdata数据类型 3.5.2 id和name使用的数据类型 3.5.3 idref和idrefs使用的数据类型 3.5.4 number数据类型 3.5.5 文本字符串 3.5.6 使用uri 3.5.7 使用颜色 3.5.8 使用长度 3.5.9 内容类型(mime类型) 3.5.10 语言代码 3.5.11 字符编码 3.5.12 单字符 3.5.13 日期和时间 3.5.14 链接类型 3.5.15 介质描述符 3.5.16 脚本数据 3.5.17 样式表数据 3.5.18 框架目标名 3.6 巩固与自测 第2篇 html详细学习篇 第4章 html文档的头部定义 4.1 定义标题(title元素) 4.2 怎样定义元数据 4.2.1 定义元数据关键字 4.2.2 元数据的语言信息 4.2.3 元数据的其他定义方法 4.3 用于搜索引擎的元数据 4.3.1 定义编辑工具 4.3.2 定义版权信息 4.3.3 定义关键字 4.3.4 定义概要描述 4.3.5 定义设计者 4.3.6 定义创作日期 4.3.7 定义搜索引擎搜索方式 4.4 用于http消息报头的元数据(属性http-equiv) 4.4.1 设置网页内容类型和字符集 4.4.2 设置网页所使用的语言 4.4.3 设置网页定时跳转 4.4.4 设置网页禁用缓存 4.4.5 设置网页到期 4.4.6 设置网页cookie存活时间 4.4.7 设置网页框架目标 4.4.8 设置网页转场效果 4.4.9 设置网页分级 4.5 元数据纲要和元数据架构 4.5.1 使用元数据纲要(profile属性) 4.5.2 使用元数据架构(scheme属性) 4.6 巩固与自测 第5章 文字与段落 5.1 结构化的文本 5.1.1 用于强调的短语元素(em元素、strong元素、cite元素) 5.1.2 用于缩写的短语元素(abbr元素、acronym元素) 5.1.3 其他的短语元素(dfn、code、samp、kbd、var) 5.1.4 引用(blockquote元素、q元素) 5.1.5 下标和上标(sub元素、sup元素) 5.2 行和段落 5.2.1 段落(p元素) 5.2.2 控制换行(br元素) 5.2.3 连字符 5.2.4 预格式化文本(pre元素) 5.2.5 段落的视觉呈现 5.3 标题字体(h#元素) 5.4 标记文档改变:ins和del元素 5.5 基本文字格式(tt、i、b、big、small、strike、s、u) 5.6 字体修改(font、basefont元素) 5.6.1 改变字体大小(size属性) 5.6.2 改变文本颜色(color属性) 5.6.3 改变字体(face属性) 5.7 加入水平分割线(hr元素) 5.7.1 分隔线宽度和高度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值