gap不能直接用于div或p实现多列间隙,必须用column-gap配合column-count或column-width;这是长文分栏唯一合法且广泛支持的方案。

直接说结论:gap 在 HTML 多列文章布局中**不能直接用在 <div> 或 <code><p></p> 上生效**,必须配合 CSS 多列布局(columns)、Flex 或 Grid 才能起作用;而真正适合“长文分栏”的,只有 column-gap 配合 column-count 或 column-width ——这是唯一合法且被广泛支持的路径。
column-gap 是多列文章布局的唯一有效间隙属性
HTML 中实现报纸式、说明书式的多列文本排版,靠的是 CSS 多列布局(multi-column layout),不是 Flex 也不是 Grid。这个场景下,gap 属性完全无效,浏览器会忽略它;只有 column-gap 被定义为该布局的原生属性。
-
column-gap: 24px控制相邻两列之间的空白,单位必须明确(px、em、rem都行,%不支持) - 必须和
column-count(如column-count: 3)或column-width(如column-width: 180px)一起使用,否则列不会生成,column-gap也就无从谈起 - 注意:IE 完全不支持,Edge 10+、Chrome 50+、Firefox 13+、Safari 5.1+ 才可用;移动端 iOS Safari 5.1+ 也支持
- 常见误写:
gap: 24px加在普通<div class="article"> 上 → 没反应;正确写法是:<code>.article { columns: 3; column-gap: 24px; }为什么不能用 display: grid + gap 来做文章分栏
Grid 的
gap确实强大,但它把内容按网格项(grid item)切分——每个<p></p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/xiazai/skill12116" title="DeepBI DHTML 页面生成器"><img src="https://img.php.cn/upload/skill/001/246/273/6adaf20d3191a227.jpg" alt="DeepBI DHTML 页面生成器" ></a> <div class="aritcle_card_info flexColumn"> <a href="/xiazai/skill12116" title="DeepBI DHTML 页面生成器">DeepBI DHTML 页面生成器</a> <p>生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur</p> </div> <a href="/xiazai/skill12116" title="DeepBI DHTML 页面生成器" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>、<h2></h2>都变成独立单元格,**破坏文本流连续性**。多列文章要求文字自然跨列流动(比如第1列末尾的词自动跳到第2列开头),而 Grid 会强制截断、重排,导致语义断裂、阅读体验错乱。- Grid 适合卡片列表、表单字段、图标网格等“离散块”,不适合连续段落文本
- 即便用
grid-template-columns: repeat(3, 1fr)+gap,你也得手动把长文拆成多个<div>,失去可选、可复制、可朗读的文本完整性 <li>屏幕阅读器无法将 Grid 中分散的 <code><div> 当作一段连贯内容处理,可访问性降级 <h3>column-gap 和 border-spacing 容易混淆的点</h3> <p>看到“列间隙”就想到表格的 <code>border-spacing?这是典型误迁。两者完全无关:立即学习“前端免费学习笔记(深入)”;
-
border-spacing只对<table> 生效,且前提是 <code>border-collapse: separate;它控制的是单元格边框之间的距离,不是文本分栏 -
column-gap仅作用于启用了多列布局的块容器(display: block默认即可),与表格元素、边框设置毫无关系 - 把
column-gap写在<table> 上 → 浏览器静默忽略;把 <code>border-spacing写在<div class="article"> 上 → 同样无效 <li>调试时打开 DevTools 的 “Computed” 面板,确认生效的是 <code>column-gap,而不是误以为是 margin 或 padding 堆出来的空隙
最容易被忽略的一点:多列文章布局没有“响应式自动列数切换”的内置机制。你得靠媒体查询手动改
column-count,比如小屏设为column-count: 1,中屏2,大屏3;column-gap本身不会自适应,它的值始终是固定物理间距。 -


















