max-width: 100% 是解决图片撑破容器的核心方案;需配合 height: auto 保持宽高比,避免使用 width: 100%,并注意父容器限制、上下文影响及 CSS 优先级等细节。
响应式页面里, 默认是「固有尺寸」渲染,一旦原始宽度超过父容器(比如在手机上显示一张 1200px 宽的图),就会横向溢出、破坏 flex 或 grid 布局,甚至拖出滚动条。这不是图片本身的问题,而是缺少尺寸约束。
max-wi
dth: 100% 是最简解法给所有响应式图片加这一条规则即可解决 90% 的溢出问题。它让图片宽度最多等于其包含块宽度,同时保持原始宽高比:
img {
max-width: 100%;
height: auto;
}
注意必须配 height: auto,否则可能被拉伸或压扁。不要写 width: 100% —— 那会强制拉满,破坏清晰度和比例。
仅靠 max-width: 100% 不够时,常见补充策略:
立即学习“前端免费学习笔记(深入)”;
object-fit: cover + 固定容器尺寸,避免留白或变形picture 元素中配合 srcset 和 sizes,让浏览器选更小分辨率的图源,从源头减负background-image 并设置 background-size: contain 或 cover,更可控有些情况 max-width: 100% 失效,往往因为:
width 或 max-width,比如 position: absolute 的祖先元素未限制尺寸table 或 inline 上下文中,受默认 white-space 或表格布局影响!important 冲突)image-rendering: pixelated 等实验性属性,干扰了尺寸计算真正要稳,得检查图片的完整继承链和盒模型表现,不能只盯一个 img 标签。