使用 colgroup 和 col 实现响应式表格
Table 在项目使用中十分频繁,特别是在后台管理系统中,table 无疑是数据展示的第一公民,在早些年的网页中,table 也是网页布局的第一选择,然后使用好 table 并不容易,其它有很多子元素和属性需要了解,在实际使用中,table 的自适应也十分重要,如果使用不当,就会导致数据展示混乱,影响用户阅读体验,table 可以说是一把利刃,只要使用恰当,可以简化 DOM 结构,减少很多样式编写,提升布局效率。
基础知识
表格的结构
table(summary) |
说明
summary用于对描述表格caption用于显示表格标题colgroup&col用于控制列的样式thead和tfoot在一张表中都只能有一个,而tbody可以有多个tfoot必须出现在tbody前面,这样浏览器在接收主体数据之前,就能渲染表尾,有利于加快表格的显示速度。这一点对大型表格尤其重要thead、tbody和tfoot里面都必须使用tr标签
单元格合并
单元格竖向合并 rowspan
单元格横向合并 colspan
常用于特殊的表格数据展示,如订单列表、表单详情展示等
列的样式
colgroup & col
定义
<colgroup> 定义表格列的组。通过此标签,您可以对列进行组合,以便格式化。该元素只有在 <table> 中才是合法的。
- 为表格列添加列的样式,并不能创建列
- 对表格中的列进行组合,以便对其进行格式化
- 唯一属性
span: 规定列组应该横跨的列数 - 只能在
<table>元素之内,在任何一个<caption>元素之后,在任何一个<thead>、<tbody>、<tfoot>、<tr>元素之前使用
colgroup 与 col的区别及关系
<colgroup>用于设置表格中 多列 的样式,闭合标签<col>用于设置表格中 单列 的样式,单标签<colgroup>元素只能包含<col>元素<colgroup>元素无法创建表格列,只用于控制列的样式
实现列的斑马纹
<table> |
.col1:nth-child(2n) {
|

给多列分组
<table class="table"> |

列的样式控制
给 col 添加样式 width、background、border
设置 color、font-size、text-align、min-width、max-width等无效

使用百分比控制列的宽度
<table> |

使用固定宽度及自适应宽度
<table> |

使用 col 及 colgroup 定义列的宽度自适应是最灵活的方式,但是对于浏览器来说,自适应的列会导致渲染的复杂度上升,降低渲染效率,所以css提供了一种渲染效率更高的样式属性 table-layout:fixed
table-layout
为表设置表格布局算法
table {
|
| 属性 | 描述 |
|---|---|
| auto | 默认 列宽度由单元格内容设定 |
| fixed | 列宽由表格宽度和列宽度设定 |
| inherit | 规定应该从父元素继承 table-layout 属性的值 |
auto
大多数浏览器采用自动表格布局算法对表格布局。
表格及单元格的宽度取决于其包含的内容。
此算法有时会较慢,这是由于它需要在确定最终的布局之前访问表格中所有的内容。
微软公司声称使用这个命令,表格的显示速度可以加快100倍。
为了加快表格显示,最好事先就在CSS(或者table标签的width和height属性)中指定表格的宽度和高度。)
fixed
表格和列的宽度通过表格的宽度来设置,某一列的宽度仅由该列首行的单元格决定。在当前列中,该单元格所在行之后的行并不会影响整个列宽。
使用 fixed 布局方式时,整个表格可以在其首行被下载后就被解析和渲染。这样对于 automatic 自动布局方式来说可以加速渲染,但是其后的单元格内容并不会自适应当前列宽
任何一个包含溢出内容的单元格可以使用 overflow 属性控制是否允许内容溢出 或者 使用 word-break:break-all 使内容换行

fixed + break-all
fixed布局带来的问题是单元格内容较长,英文或数字中间没有空格,是一连串的数字编码或字符时,不会换行,会溢出,所以加上 word-break: break-all 强制其换行显示
<table style="table-layout:fixed; word-break: break-all;"></table> |

fixed + 不换行…显示
fixed + break-all 解决了字符换行的问题,但是如果内容过长,容易撑高行的高度,导致表格某几行或所有行的高度过高,致表格变形,影响阅读体验,所以可以让过长的内容以 ... 显示
<table style="table-layout:fixed;"></table> |
为内容过长的 td 添加样式 .ell
.ell {
|

fixed + 多行 … 显示 【推荐】
如果单行…显示,可以保证所有行的高度一致,但当内容较多时,只能显示少量信息,也不利于阅读体验, 这样就需要单元格内容显示多行,超过规定行数再以 ... 显示
<table style="table-layout:fixed;"></table> |
为单元格内容添加 mult-ell-3 的样式,当内容多行三行时显示 ..., 并设置title属性,鼠标悬停时显示全部内容,这样即兼顾了表格整体美观度也满足了用户的阅读体检
.mult-ell-3 {
|

转自:http://coderlt.coding.me/2017/11/20/table-colgroup/
使用 colgroup 和 col 实现响应式表格的更多相关文章
- RWD Table Patterns – 响应式表格解决方案
在显示复杂的表格数据的时候,相信 Web 开发人员都碰到过显示不下的情况.RWD Table Patterns 是一个很好的响应式表格解决方案.它采用移动优先以及渐进增强的设计理念,在不支持响应式的浏 ...
- [转]响应式表格jQuery插件 – Responsive tables
本文转自:http://www.shejidaren.com/responsive-tables-for-bootstrap-3.html 这个Responsive tables jQuery插件依赖 ...
- FooTable高级的响应式表格jQuery插件
FooTable是一个高级jQuery插件,允许开发者在触屏智能手机及平板电脑等小型设备上制作数据非常惊人的HTML表格.它可以将HTML表转换成可扩展的响应式表格,且通过单击某一行即可将该行数据隐藏 ...
- Bootstrap3 表格-响应式表格
将任何 .table 元素包裹在 .table-responsive 元素内,即可创建响应式表格,其会在小屏幕设备上(小于768px)水平滚动.当屏幕大于 768px 宽度时,水平滚动条消失. Fir ...
- Bootstrap 响应式表格
响应式表格 通过把任意的 .table 包在 .table-responsive class 内,您可以让表格水平滚动以适应小型设备(小于 768px).当在大于 768px 宽的大型设备上查看时,您 ...
- amaze ui响应式表格
amaze ui响应式表格 这里的div外嵌设置格式倒是不错的选择
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:响应式表格
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- bootstrap实例 之 响应式表格-----2017-05-15
Bootstrap 的响应式 CSS 能够自适应于台式机.平板电脑和手机,现在就bootstrap的响应式举一个例子: 如上图所示,要实现该表格在手机等移动端上只显示代号.名称.和价格,其他以查看详情 ...
- Bootstrap3基础 table-responsive 响应式表格
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
随机推荐
- Net Framework,Net Core 和 Net Standard 区别
前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究.下面我将说一下我自己对着三个的认识如果有不 ...
- 运用ffmpeg实现压缩视频
/// <param name="filePath">ffmpeg.exe的文件路径</param> /// <param name="Pa ...
- MinIO 分布式集群搭建
MinIO 分布式集群搭建 分布式 Minio 可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障. Minio 分布式模式可 ...
- NOIP模拟 31
补坑 skyh又AK 赛时榜搜索我的姓: 下一条 ... 自闭了. (只是表达对B哥强烈的崇敬) (如果B哥介意我把名字贴出来请联系我删掉) T1一打眼,好像就一个gcd 康了眼大样例,觉得没啥问题 ...
- 实现支持多用户在线的FTP程序(C/S)
1. 需求 1. 用户加密认证 2. 允许多用户登录 3. 每个用户都有自己的家目录,且只能访问自己的家目录 4. 对用户进行磁盘分配,每一个用户的可用空间可以自己设置 5. 允许用户在ftp ser ...
- 直接引用MrAdvice.dll文件不能实现AOP拦截,教你1分钟解决这个问题
直接引用MrAdvice.dll文件不能实现AOP拦截,教你1分钟解决这个问题.近日工作中,要实现一个功能,那就是业务层方法里面实现自动缓存.编写业务的C#开发人员只关注如何将业务代码编写正确就可以了 ...
- Laravel框架安装RabbitMQ消息中间件步骤
Laravel5.6 整合 RabbitMQ 消息队列 简介: Laravel 队列为不同的后台队列服务提供了统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关 ...
- 回声消除中的LMS和NLMS算法与MATLAB实现
自适应滤波是数字信号处理的核心技术之一,在科学和工业上有着广泛的应用领域.自适应滤波技术应用广泛,包括回波抵消.自适应均衡.自适应噪声抵消和自适应波束形成.回声对消是当今通信系统中普遍存在的现象.声回 ...
- Leetcode算法【114. 二叉树展开为链表】
上周通过一位小伙伴,加入了一个氛围很好的小群,人不多,但是大家保持着对知识的渴望,让我很感动. 我自己也有一个群,人数也不多,但是能真正互动起来一起学习,一起进步的,还是太少.所以,现在也在学习如何让 ...
- expect 自动填充密码
它的脚本以#!/usr/bin/expect开头,执行时用expoct,而不是bash.我的一个给samba自动创建用户并且自动填写默认密码的脚本如下: vim smb_passwd.exp #!/u ...