媒体查询必须写在样式表顶层,不能嵌套在CSS选择器内部;推荐使用min-width实现移动优先;常见失效原因包括优先级覆盖、加载顺序错误和浏览器缓存;断点应统一用px单位。
CSS 媒体查询必须写在样式表中,且要放在对应选择器的外层包裹里,不能嵌套在普通规则内部(比如不能写在 .header { ... } 里面再加 @media)。否则浏览器直接忽略。
@media (max-width: 768px) {
.container {
width: 100%;
padding: 0 12px;
}
}.container {
width: 1200px;
@media (max-width: 768px) {
width: 100%; /* 大部分浏览器不识别这种嵌套 */
}
}@media 块min-width 还是 max-width 更可靠优先用 min-width 实现“移动优先”,避免
断点覆盖混乱。很多布局错乱是因为多个 max-width 规则叠加后,小屏幕样式被大屏规则意外覆盖。
min-width 是渐进增强:基础样式适配手机,然后逐步加宽适配平板、桌面max-width 是降级处理:默认按桌面写,再收缩适配小屏,容易漏掉中间尺寸或覆盖出错@media (min-width: 768px)(平板)、@media (min-width: 1024px)(桌面)常见原因不是语法错,而是优先级或加载顺序问题。
.sidebar.active 比 @media ... .sidebar 权重高Ctrl+Shift+R 或禁用缓存调试)不要只改容器 display,还要同步处理子项行为,否则容易出现溢出或塌陷。
display: grid 切到 display: flex 时,记得重置 grid-template-columns 和 gap,否则可能残留无效声明flex-wrap:@media (max-width: 600px) {
.nav {
display: flex;
flex-direction: column;
flex-wrap: nowrap; /* 避免小屏下意外换行撑高容器 */
}
}grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)) 比固定 repeat(3, 1fr) 更适应不同宽度实际项目中最容易被忽略的是:媒体查询里的单位要用 px(而非 em 或 rem)做断点值,因为浏览器依据的是视口宽度,不是字体大小。用 em 断点会导致用户缩放页面时触发错误的布局切换。