<colgroup> 必须作为 <table> 的直接子元素,位于 <caption>(若有)之后、<thead>/<tbody>/<tfoot>/<tr> 之前;位置错误将导致样式静默失效。
<colgroup> 标签不是“可有可无的装饰”,它在表格列样式控制中是唯一能真正批量干预列级渲染行为的原生机制——但必须严格满足位置和嵌套规则,否则浏览器会静默忽略。
它只能作为 <table> 的直接子元素,且顺序固定:<caption>(如果有)之后、<thead>/<tbody>/<tfoot>/<tr> 之前。放错位置(比如塞进 <tbody> 里,或写在 <tr> 后面)会导致样式完全不生效,且 DevTools 中通常不会报错,只当无效标签跳过。
<table><caption>...</caption><colgroup>...</colgroup><thead>...</thead><tbody>...</tbody></table>
<colgroup> 写在 <tr> 里面,或紧跟在 </thead> 后面<colgroup> 不会生成任何 DOM 节点用于内容填充,它只影响后续行中对应列的渲染计算span 是目前 HTML5 中唯一被广泛支持的 <colgroup> 属性,但它容易引发列数错位——尤其当表格结构动态变化或存在 colspan/rowspan 时。
span="2" 表示这个 <colgroup> 覆盖接下来的 2 列(从左到右连续),不是“第 1–2 列”这种绝对索引<colgroup> 会按出现顺序依次分配列:第一个 span="2" 占前两列,第二个 span="1" 占第三列,以此类推span 和实际列数不一致(比如 3 列表格写了两个 span="2"),多余列会被忽略样式,缺失列则无样式可继承width: 120px)可以安全加在 <colgroup> 或其内部 <col> 上,但不要混用旧式 width 属性(HTML5 已废弃)当你需要对同一组内的不同列分别设置样式(比如第一列宽 100px、第二列背景红、第三列文字右对齐),仅靠 <colgroup> 无法做到——它的所有子元素共享同一套样式。这时必须用 <col> 拆分控制粒度。
立即学习“前端免费学习笔记(深入)”;
<colgroup><col style="width:100px"><col style="background:red"></colgroup>:明确为第 1、2 列分别设样式<col> 时,整个 <colgroup> 的样式会“广播”给它覆盖的所有列<col> 是空元素,不能包含内容,也不能嵌套其他标签<col> 的支持比 <colgroup> 更稳定,包括 IE9+ 和所有现代引擎这些属性在 HTML5 中已被移除,主流浏览器(Chrome/Firefox/Safari/Edge)全部忽略。如果你在代码里写了 align="right" 或 width="200",它们不会报错,但也不会产生任何效果。
text-align)、垂直对齐(vertical-align)、宽度(width)等,写在 <col> 或 <colgroup> 的 style 属性里,或通过 class 外链char、charoff:几乎无浏览器支持,连 Firefox 都已弃用<col> 上的 CSS 宽度会覆盖 <colgroup> 上的同名设置,但无法覆盖单元格内联 width(后者优先级更高)最常被忽略的一点:colgroup 的样式影响的是“列的渲染盒”,不是单元格内容本身——所以 background-color 能生效,但 padding、border 这类需要单元格参与的样式依然得写在 <td>/<th> 上。