在响应式布局中,媒体查询负责判断设备特征,而CSS选择器决定这些特征下哪些元素被样式命中。把两者结合起来,可以用更少的代码实现多端适配。理解它们的配合方式,是写出可维护响应式样式的基础。

媒体查询与选择器的基本关系
媒体查询通过@media规则包裹一段CSS,只有当条件满足时,里面的选择器才会生效。选择器本身语法不变,只是作用范围受查询条件限制。
/* 屏幕宽度小于600px时,.sidebar隐藏 */
@media (max-width: 600px) {
.sidebar {
display: none;
}
}
常用选择器在媒体查询中的技巧
1. 类选择器与后代选择器组合
在平板尺寸下,可以利用后代选择器只调整导航内部链接的排布,不影响其他区域。
@media (min-width: 601px) and (max-width: 1024px) {
.nav > li {
display: inline-block;
margin-right: 12px;
}
}
2. 属性选择器适配不同输入控件
属性选择器能针对特定类型的表单元素在手机端放大点击区域。
@media (max-width: 480px) {
input[type="text"] {
height: 44px;
font-size: 16px;
}
}
3. 伪类选择器控制交互状态
在触屏设备上可去掉hover效果,改用active强调反馈。
@media (hover: none) {
.btn:hover {
background: #ccc;
}
.btn:active {
background: #999;
}
}
响应式布局中的选择策略对比
| 场景 | 推荐选择器 | 说明 |
|---|---|---|
| 隐藏次要模块 | 类选择器 | 直接对容器类设display:none |
| 调整列表间距 | 后代选择器 | 避免影响页面其他列表 |
| 区分输入类型 | 属性选择器 | 精准命中指定input类型 |
注意事项
- 媒体查询中的选择器权重与外界相同,避免出现难以覆盖的样式冲突。
- 尽量用min-width做渐进增强,减少重复重写。
- 不要用id选择器写大段响应式规则,不利于复用。
把CSS选择器的表达能力放进媒体查询里,可以让响应式布局既清晰又易扩展。多从实际断点需要控制的元素出发,选对选择器类型,就能减少样式冗余。