响应式设计是现在网页开发的基础要求,核心就是让同一个页面能适配不同尺寸的屏幕,其中最常见的需求就是桌面端显示三列内容,移动端自动切换为一列。下面我们就一步步实现这个效果。

实现核心思路
整个转换过程主要依赖两个技术点:
- 使用CSS flexbox或者grid布局搭建基础的三列结构,让内容默认在宽屏下按三列排列
- 通过媒体查询检测屏幕宽度,当屏幕宽度小于移动端阈值时,修改布局属性让列数变为1
基础布局搭建
我们先写一个包含三个内容块的容器,用flexbox实现默认的三列布局,代码如下:
/* 容器基础样式 */
.container {
display: flex;
flex-wrap: wrap;
gap: 20px;
padding: 20px;
max-width: 1200px;
margin: 0 auto;
}
/* 单个内容列样式 */
.column {
/* 桌面端三列,每列占可用空间的1/3,减去间隙的影响 */
flex: 1 1 calc(33.333% - 14px);
background-color: #f5f5f5;
padding: 20px;
border-radius: 8px;
min-height: 200px;
}对应的HTML结构如下:
<div class="container">
<div class="column">
<h3>第一列内容</h3>
<p>这里是第一列的具体展示内容,可以放文字、图片等信息</p>
</div>
<div class="column">
<h3>第二列内容</h3>
<p>这里是第二列的具体展示内容,可以放文字、图片等信息</p>
</div>
<div class="column">
<h3>第三列内容</h3>
<p>这里是第三列的具体展示内容,可以放文字、图片等信息</p>
</div>
</div>添加媒体查询适配移动端
一般移动端屏幕宽度以768px为分界点,当屏幕宽度小于这个值时,我们让列变为一列,修改.column的样式即可:
/* 移动端适配规则,屏幕宽度小于768px时生效 */
@media screen and (max-width: 768px) {
.column {
/* 占满整个容器宽度,实现一列布局 */
flex: 1 1 100%;
}
}效果验证
完成上述代码后,你可以拖动浏览器窗口宽度测试:
- 当窗口宽度大于768px时,三个内容块会并排显示成三列
- 当窗口宽度小于768px时,三个内容块会自动堆叠成一列,每个块占满整行宽度
如果需要调整移动端的触发阈值,只需要修改媒体查询里的max-width数值即可,比如改成600px,那么在600px以下的屏幕才会切换为一列。
其他布局方案
除了flexbox,也可以用CSS grid实现同样的效果,核心逻辑和flexbox一致,只是布局属性不同:
/* grid布局的容器样式 */
.container-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
padding: 20px;
max-width: 1200px;
margin: 0 auto;
}
/* 移动端grid适配 */
@media screen and (max-width: 768px) {
.container-grid {
grid-template-columns: 1fr;
}
}开发者可以根据自己的项目习惯选择flexbox或者grid方案,两种都能稳定实现桌面三列到移动一列的转换效果。
响应式设计三列布局媒体查询CSS_flexbox移动端适配修改时间:2026-05-29 17:20:55