⚡ 编程实验室🏗️ 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 媒体查询深入

学习@media使用 · 难度:进阶 · +15XP

CSS 媒体查询深入

媒体查询(Media Queries)是响应式设计的基石,允许根据设备特性(屏幕宽度、分辨率、方向、颜色模式等)应用不同的 CSS 样式。掌握媒体查询是成为前端开发者的核心能力。

基本语法

@media 媒体类型 and (媒体特性) {
  /* CSS 规则 */
}

常用媒体类型

类型说明
all所有设备(默认)
screen屏幕设备(电脑、手机、平板)
print打印预览和打印时
speech屏幕阅读器

常用媒体特性

特性说明示例
width / min-width / max-width视口宽度(max-width: 768px)
height / min-height / max-height视口高度(min-height: 600px)
orientation屏幕方向(orientation: landscape)
aspect-ratio宽高比(min-aspect-ratio: 16/9)
resolution像素密度(min-resolution: 2dppx)
prefers-color-scheme颜色方案偏好(prefers-color-scheme: dark)
prefers-reduced-motion减少动画偏好(prefers-reduced-motion: reduce)
prefers-contrast对比度偏好(prefers-contrast: high)
hover是否支持悬停(hover: hover)
pointer指点设备精度(pointer: coarse)

经典断点(Mobile First)

/* 基础样式 — 移动端优先 */
body { font-size: 16px; }

/* 平板 */ @media (min-width: 768px) { body { font-size: 18px; } }

/* 桌面 */ @media (min-width: 1024px) { body { font-size: 20px; } }

/* 大屏 */ @media (min-width: 1440px) { body { font-size: 22px; } }

复杂组合查询

/* AND — 同时满足 */
@media screen and (min-width: 768px) and (max-width: 1023px) {
  /* 仅平板设备 */
}

/* OR — 逗号分隔 */ @media (max-width: 600px), (orientation: portrait) { /* 窄屏或竖屏 */ }

/* NOT — 排除 */ @media not screen and (max-width: 600px) { /* 除窄屏外的所有屏幕设备 */ }

暗色模式适配

:root {
  --bg: #ffffff;
  --text: #333333;
}

@media (prefers-color-scheme: dark) { :root { --bg: #1a1a2e; --text: #e0e0e0; } }

body { background: var(--bg); color: var(--text); }

减少动画

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

打印样式

@media print {
  nav, .sidebar, .ads, .no-print {
    display: none;
  }

body { font-size: 12pt; line-height: 1.5; }

a::after { content: " (" attr(href) ") "; font-size: 0.8em; } }

触摸设备适配

/* 触摸设备 — 增大点击区域 */
@media (hover: none) and (pointer: coarse) {
  button, a.btn {
    min-height: 44px;
    min-width: 44px;
    padding: 12px 20px;
  }
}

Container Queries vs Media Queries

媒体查询基于视口,而容器查询基于父容器。对于组件级响应式,容器查询更灵活:

/* 媒体查询 — 视口级 */
@media (min-width: 768px) { .card { ... } }

/* 容器查询 — 组件级 */ @container (min-width: 400px) { .card { ... } }

媒体查询是每个前端开发者必须熟练掌握的核心技术。随着 Container Queries 的普及,媒体查询和容器查询配合使用将成为响应式设计的最佳实践。

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

🏆 学习排行

加载中...

📊 统计

📖 122 篇
0 完成
🔥 0