多列布局中text-overflow: ellipsis默认不生效,因其仅适用于单行块级元素,而多列会自动分栏破坏单行前提;应将每项单独包裹并设置white-space: nowrap、overflow: hidden和text-overflow: ellipsis。
多列布局(column-count 或 column-width)中,text-overflow: ellipsis

text-overflow: ellipsis 要求元素同时满足:
– display 为 block 或 inline-block(不能是 column 容器本身)
– white-space: nowrap(强制单行)
– overflow: hidden
– 有明确宽度(或父容器有约束)
但多列容器(如 column-count: 3)内部文本是自然流式分栏的,无法被当作“一行”处理,所以 ellipsis 被忽略。
若目标是让**每列标题/短文本**在固定宽度内截断,不要直接对多列容器设 ellipsis,而是把每一项单独包裹,并控制其自身截断:
columns: 3 布局列表容器(仅负责分栏)li 或 div)设为 display: block,并添加:white-space: nowrap;overflow: hidden;text-overflow: ellipsis;
max-width: 100%; 或具体像素值),避免撑开列宽✅ 示例结构:
这是一段很长的标题文字 另一条也超长的说明文本.col-container { columns: 3; } .item { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 8px; / 避免列间粘连 / }
如果兼容性允许(现代浏览器),用 display: grid 替代多列,逻辑更清晰:
grid-template-columns: repeat(3, 1fr)
white-space: nowrap + ellipsis
以下写法无效:
.columns {
columns: 3;
white-space: nowrap; /* ❌ 多列下此声明无意义 */
text-overflow: ellipsis; /* ❌ 不生效 */
overflow: hidden;
}因为 columns 是布局模式,不是文本容器;真正承载文本的是子元素,截断必须落在子元素上。