⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

CSS 响应式设计 — 适配手机

CSS 响应式设计 · 难度:进阶 · +15XP

CSS 响应式设计

响应式Web设计(Responsive Web Design)使网页能在不同设备(桌面、平板、手机)上自动适配布局和样式,提供最佳浏览体验。CSS通过视口(viewport)媒体查询(media queries)弹性布局三大核心实现响应式。

设置视口 Viewport

在HTML的<head>中添加viewport meta标签:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

这样可以告诉移动浏览器按设备实际宽度渲染页面,而不是缩小显示桌面版。

媒体查询 @media

媒体查询是最强大的响应式工具,可以根据设备特性(宽度、高度、方向等)应用不同的CSS规则。

/* 手机端(宽度小于 768px) */
@media screen and (max-width: 768px) {
  .container {
    flex-direction: column;
    padding: 10px;
  }
  h1 { font-size: 1.5rem; }
}

/* 平板端(768px - 1024px) */ @media screen and (min-width: 768px) and (max-width: 1024px) { .container { max-width: 90%; } }

/* 桌面端(宽度大于 1024px) */ @media screen and (min-width: 1024px) { .container { max-width: 1200px; margin: 0 auto; } }

常见断点(Breakpoints)

设备类型屏幕宽度断点
手机(竖屏)320px - 480pxmax-width: 480px
手机(横屏)480px - 768pxmax-width: 768px
平板768px - 1024pxmax-width: 1024px
小桌面1024px - 1280pxmax-width: 1280px
大桌面1280px+min-width: 1280px

响应式图片

img {
  max-width: 100%;
  height: auto;  /* 保持宽高比 */
}

/* 使用srcset提供不同分辨率图片 */ <img src="photo-small.jpg" srcset="photo-small.jpg 480w, photo-med.jpg 800w, photo-large.jpg 1200w" sizes="(max-width: 480px) 100vw, 50vw" alt="响应式图片">

移动优先 vs 桌面优先

策略方法优点
移动优先先写移动端样式,再用 min-width 叠加性能更好,代码更简洁
桌面优先先写桌面端样式,再用 max-width 覆盖设计先行,适合重桌面站点
/* 移动优先示例 */
.grid { display: block; }  /* 默认移动端 */
@media (min-width: 768px) {
  .grid { display: grid; grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .grid { grid-template-columns: repeat(4, 1fr); }
}

???? 练习

  1. 创建一个在手机上单列、平板上两列、桌面上四列的网格布局
  2. 使用 max-width: 100% 让所有图片自动响应缩放
  3. 为导航栏添加媒体查询,手机端显示汉堡菜单,桌面端显示完整横排
  4. 使用 srcset 为一张图片提供三种分辨率版本
  5. 尝试移动优先的方式重写一个现有页面

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 122 篇
0 完成
🔥 0