最轻量兼容的左图右文用float实现,需清除浮动防塌陷;现代推荐flex或grid,避免浮动缺陷。

float 实现图文左图右文的常见写法
直接用 float: left 和 float: right 是最轻量、兼容性最好的方式,尤其适合内容结构简单、不需要响应式复杂断点的场景。
关键不是“怎么浮”,而是“浮完怎么收尾”——浮动元素会脱离文档流,导致父容器高度塌陷。必须清除浮动,否则后续内容会上移错位。
- 图片容器加
float: left,文字容器加float: right,两者宽度之和 ≤ 100% - 父容器末尾加一个带
clear: both的空,或用伪元素:.container::after { content: ""; display: table; clear: both; }- 避免对文字容器设固定高度,否则可能截断长文本;优先用
min-height或让其自然撑开交替排列时 float 的坑:顺序与清除时机
交替布局(如第1组左图右文、第2组右图左文、第3组又切回左图右文)看似只是改个方向,但实际容易出错——
float是按 DOM 顺序逐个浮动的,如果不清除上一组的浮动,下一组会紧贴前一组末尾继续浮动,而不是换行。- 每组图文必须包裹在独立容器中(如
),且每个容器都要触发 BFC 或手动清除浮动 - 不要只靠
float: right让第二组“自动右对齐”:若前一组没清浮,它会跑到第一组右侧空白处,而非整行右侧 - 更稳妥的做法是每组都设
width: 100%+ 内部子元素浮动,并在每组结尾加clear: both
现代替代方案:为什么现在更推荐 flex 或 grid
float本质是为文字环绕图片设计的,强行用于整体布局会越来越难控。尤其当需要响应式切换(比如小屏变上下排列)、等高对齐、垂直居中时,float几乎无解。立即学习“前端免费学习笔记(深入)”;
- Flex 布局只需父容器设
display: flex,再用flex-direction: row-reverse切换左右顺序,无需清除、无塌陷问题 - Grid 更适合严格控制轨道:用
grid-template-areas定义"img text"和"text img"两种模板,配合@media切换 - 注意 Safari 旧版本对
gap和某些 grid 属性支持不全,生产环境需检查目标浏览器范围
图片尺寸失控?别只靠 width: 100%
浮动图文里最常被忽略的是图片本身行为:未设
max-width: 100%和height: auto时,大图会撑破容器、破坏布局,小图则留白难看。- 所有图文中的
必须统一加:img { max-width: 100%; height: auto; display: block; } - 如果图片需等比例缩放但容器高度固定(如卡片),改用
object-fit: cover+height: 100%,但注意 IE 不支持 - 避免给图片父容器设
overflow: hidden后又忘记限制图片宽高——此时图片可能被裁剪却不提示
- 避免对文字容器设固定高度,否则可能截断长文本;优先用










