column-span 是 CSS 多列布局属性,非 HTML 属性,仅在父容器启用 columns/column-count/column-width 且目标为块级元素时生效,值仅支持 1 和 all,与表格 colspan 无关。

column-span 是 CSS 属性,不是 HTML 属性,不能写在 <td> 或 <th> 标签里。很多人搜“HTML column-span”,结果用错地方,导致样式完全不生效。
别把 column-span 和 colspan 搞混
colspan 是 HTML 属性,作用于表格单元格,控制该单元格横跨几列;column-span 是 CSS 属性,只对多列布局(columns)中的元素生效,比如用 column-count: 3 分成三栏时,让某个标题横跨全部栏。
-
colspan="2"写在<td colspan="2">里,浏览器解析 HTML 时就合并列 -
column-span: all写在 CSS 里,且仅当父容器启用了多列布局(如columns: 3或column-count: 3)才起作用 - 在普通表格里加
style="column-span: all"—— 完全无效,CSS 引擎直接忽略
column-span 生效必须满足两个条件
它不像 colspan 那样“写了就管用”,必须同时满足:
- 父容器设置了多列布局:至少含
columns、column-count或column-width其中之一 - 目标元素是块级元素(
display: block或类似),且不是表格相关元素(<table>、<tr>、<td>等)
示例:
立即学习“前端免费学习笔记(深入)”;
<div style="column-count: 3; border: 1px solid #ccc;"> <p>第一段文字</p> <h2 style="column-span: all; background: #eee;">这个标题横跨全部三栏</h2> <p>后续段落继续分栏</p> </div>
如果删掉 column-count: 3,column-span: all 就彻底失效。
column-span 的值只有 1 和 all 实用
initial 和 inherit 理论上存在,但几乎没人用;1 是默认值,等价于不写;真正有用的只有 all。
-
column-span: all:元素独占一行宽度,打断当前分栏流,常用于小标题、分隔线 - 没有
column-span: 2这种写法——它不接受数字,只认1或all - 某些旧版 Safari(
<= 15.4)需要-webkit-column-span: all前缀
最容易被忽略的是:它和表格毫无关系。想合并表格列,请老老实实写 colspan;想让标题跨多栏排版,才轮到 column-span 上场。两者定位完全不同,混用只会浪费调试时间。



















