white-space:nowrap 对浮动元素无效,因其脱离文档流、不参与行内格式化上下文(IFC);需直接作用于浮动元素自身,并配合 overflow:hidden 与 min-width 防撑破或隐式换行。
因为 float 会让元素脱离文档流,而 white-space 是作用于**行内格式化上下文(IFC)** 的属性,只对处于正常流中的、生成行框的元素起作用。一旦元素被 float,它就不再参与父容器的 IFC,white-space:nowrap 在父级上设置,根本不会影响到浮动子元素内部的换行行为。
别用 float + white-space:nowrap 这种组合——它既冗余又不可靠。现代方案更直接:
white-space:nowrap,子元素设 display: inline-block(注意:HTML 中元素间空格会变成空格符,需删空格或设 font-size: 0)display: flex,子元素默认不换行;加 flex-wrap: nowrap(默认就是)display: table-cell,父容器 display: table,天然单行浮动元素默认就是“向左/右贴边、不换行”的表现,但它的“不换行”是布局层面的脱离流,不是文本层面的禁断行。如果你发现浮动后文字还是断开了,问题通常出在:
word-break: keep-all 或 overflow-wrap: normal
white-space 控制——给浮动元素自己加 white-space: nowrap 才有效如果已有大量 float 代码不能重构,又想让某段浮动内的文字硬扛着不折行,记住两点:
立即学习“前端免费学习笔记(深入)”;
white-space: nowrap 直接加在**浮动元素自身**上,不是父容器overflow: hidden 防止内容撑破容器(尤其当父容器未设宽高时)max-width、box-sizing 或 line-height 的极端值干扰容易被忽略的是:float 元素若没有明确 width,在窄视口下可能被压缩到极小宽度,此时哪怕设了 nowrap,浏览器也可能因渲染精度问题插入隐式换行——务必设最小宽度或使用 min-width。