全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-16 6 分钟 ✍️ juanwangdev

结合媒体查询动态切换布局

媒体查询(Media Query)是响应式设计的核心,配合 Flex/Grid 实现不同屏幕下的布局切换。

媒体查询基础

语法

CSS
@media (条件) {
  /* 符合条件时应用的样式 */
}

常用断点

断点适用设备
max-width: 576px手机
max-width: 768px平板
max-width: 992px小屏桌面
max-width: 1200px大屏桌面

响应式 Flex 布局

列表与网格切换

CSS
.container {
  display: flex;
  flex-direction: column;  /* 移动端:垂直列表 */
  gap: 16px;
}

@media (min-width: 768px) {
  .container {
    flex-direction: row;     /* 平板及以上:水平排列 */
    flex-wrap: wrap;
  }

  .item {
    flex: 1 1 calc(50% - 8px);  /* 两列 */
  }
}

@media (min-width: 1024px) {
  .item {
    flex: 1 1 calc(25% - 12px);  /* 四列 */
  }
}

导航响应式

CSS
.nav {
  display: flex;
  flex-direction: column;  /* 移动端:垂直导航 */
}

.nav-item {
  padding: 12px;
}

@media (min-width: 768px) {
  .nav {
    flex-direction: row;    /* 平板及以上:水平导航 */
    gap: 24px;
  }
}

响应式 Grid 布局

动态列数

CSS
.container {
  display: grid;
  grid-template-columns: 1fr;  /* 移动端:单列 */
  gap: 16px;
}

@media (min-width: 576px) {
  .container {
    grid-template-columns: repeat(2, 1fr);  /* 两列 */
  }
}

@media (min-width: 992px) {
  .container {
    grid-template-columns: repeat(3, 1fr);  /* 三列 */
  }
}

使用 auto-fit 自动响应

CSS
.container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
}
/* 无需媒体查询,自动适应 */

布局模式切换

移动端垂直 / 桌面端水平

CSS
.layout {
  display: flex;
  flex-direction: column;
}

@media (min-width: 768px) {
  .layout {
    flex-direction: row;
  }
}

侧边栏显示 / 隐藏

CSS
.sidebar {
  display: none;
}

@media (min-width: 1024px) {
  .sidebar {
    display: block;
    width: 250px;
  }

  .main {
    flex: 1;
  }
}

实际案例

响应式卡片布局

CSS
.card-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  padding: 16px;
}

@media (min-width: 640px) {
  .card-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .card-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    padding: 24px;
  }
}

@media (min-width: 1280px) {
  .card-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

要点总结

  • 移动优先:从小屏写起,用 min-width 逐步增强
  • 桌面优先:从大屏写起,用 max-width 逐步降级
  • Grid 的 auto-fit + minmax 可减少媒体查询使用
  • 常用断点:576px、768px、992px、1200px

📝 发现内容有误?点击此处直接编辑

← 上一篇 Grid布局之minmax()/repeat()
下一篇 → Sass 与 Less 语法差异
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库