html 中没有 multicol 标签,它从未被纳入任何 html 规范;真正实现多列布局需使用 css 的 column-count 或 column-width 属性。

HTML 里没有 multicol 标签。这是个常见误解——它从未被纳入任何 HTML 规范,也不存在于浏览器的 DOM 中。你搜到的“multicol 标签”,基本是把 CSS 的 column-count、columns 等属性名误当成了 HTML 标签,或是混淆了 LaTeX 的 \multicolumn 命令。
为什么有人以为有 multicol 标签?
早期(2000 年代初)部分浏览器实验性支持过类似 <multicol></multicol> 的非标准标签(如 Netscape 4 的私有扩展),但从未进入 W3C 标准,现代浏览器完全不识别。现在所有主流文档、MDN、Can I Use 都只提 CSS 属性,不列该标签。
- 你在 HTML 文件里写
<multicol>xxx</multicol>,浏览器会当作未知元素,仅保留其子内容,不触发任何多列行为 - 控制台可能报
Unknown element "multicol",但不会崩溃——只是静默忽略 - 某些老旧 CMS 或编辑器模板里残留的
<multicol></multicol>,实际靠后续 JS 或 CSS 补救,不是原生能力
CSS columns 才是正解,但得配对使用
真正起作用的是 CSS 属性,且必须满足两个条件之一才能激活多列容器:
- 给元素设
column-count: 3(明确列数),或 - 设
column-width: 14em(最小列宽),不能只写columns简写却不带值
单独写 columns: 3 是合法简写,等价于 column-count: 3;但 columns: 14em 等价于 column-width: 14em。混用时如 columns: 3 14em,则优先按 column-count 生效,column-width 降为最小宽度约束。
容易踩的坑:内容断裂与兼容性断层
多列布局对内容结构敏感,尤其在旧版 Safari 和 Firefox 上表现不一:
-
<fieldset></fieldset>、<table>、<code><textarea></textarea>等替换元素内部无法分列,内容会整体塞进第一列 - Chrome/Firefox 对
column-fill: balance支持良好,但 Safari 直到 v16.4 才修复高度不均问题,此前默认auto导致最后一列明显短 - 用
break-inside: avoid防止段落跨列断裂,但 IE 完全不支持,需加page-break-inside: avoid回退 - 列间隙
column-gap在 Flex/Grid 中复用,但在 multicol 里仍需注意:Firefox 早于 v63 不支持column-gap,得用-moz-column-gap
真正要实现多列,别找标签,盯紧 column-count 和 column-width 这两个开关。其他都是修饰项,开不了头就全白搭。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











