
本文介绍如何通过媒体查询将基于 display: table 的左右并排布局,在移动设备上优雅地切换为上下垂直堆叠,无需修改 HTML 结构,仅用纯 CSS 实现响应式适配。
本文介绍如何通过媒体查询将基于 `display: table` 的左右并排布局,在移动设备上优雅地切换为上下垂直堆叠,无需修改 html 结构,仅用纯 css 实现响应式适配。
在响应式网页开发中,常需兼顾桌面端的横向信息展示与移动端的纵向阅读习惯。原始方案使用 display: table 模拟表格布局,并借助 position: absolute 让右侧图片自适应左侧文本高度——虽在宽屏下表现良好,但在窄屏(如手机)上会因绝对定位脱离文档流、宽度固定而造成内容重叠或截断。
解决的关键在于:放弃在小屏幕下维持表格行为,转而回归标准块级流布局。具体做法是利用 CSS 媒体查询,在视口宽度 ≤ 768px 时,重置容器及子元素的显示模式与定位方式:
/* 基础桌面端样式 */
.container-article {
display: table;
width: 100%;
position: relative;
}
.left {
width: 50%;
display: table-cell;
vertical-align: top;
}
.right {
position: absolute;
top: 0;
left: 50%;
width: 50%;
height: 100%;
overflow-y: auto;
}
/* 移动端响应式覆盖 */
@media (max-width: 768px) {
.container-article {
display: block; /* 关闭 table 行为,恢复普通块容器 */
}
.left,
.right {
display: block; /* 强制块级显示 */
width: 100%; /* 占满父容器宽度 */
position: static; /* 清除绝对定位,回归文档流 */
left: auto;
top: auto;
height: auto; /* 允许内容自然撑高 */
margin-bottom: 1rem; /* 可选:添加间距提升可读性 */
}
}
⚠️ 注意事项:
position: absolute在移动端必须被显式重置为static或relative,否则.right仍会脱离流、无法随.left自然换行;- 原
.right的height: 100%在display: block下失效(因父容器高度不再由 table-cell 决定),故需设为auto,依赖内容实际高度;- 若需保持图片宽高比,建议为
<img>添加width: 100%; height: auto;,避免拉伸变形;768px是常见平板断点,可根据项目需求调整为576px(手机主流宽度)或使用max-width: 480px等更精细阈值。
该方案零 JavaScript、语义清晰、兼容性好(支持 IE9+),是现代响应式布局中“移动优先”思想的轻量实践。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











