CSS中@media的介绍和使用示例
一、@media规则简介
@media
是CSS中用于实现响应式设计的核心规则,它允许根据不同的设备类型(如屏幕、打印机)或设备特性(如屏幕宽度、高度、方向等)应用不同的样式。通过@media
,开发者可以为多设备环境定制样式,提升用户体验。
二、基本语法
@media [媒体类型] and (媒体特性) {
/* 样式规则 */
}
媒体类型:常见的类型包括:
screen
:适用于屏幕设备(默认类型)。print
:适用于打印文档。all
:适用于所有设备(默认值)。
媒体特性:描述设备的属性,如:
min-width
/max-width
:屏幕宽度范围。min-height
/max-height
:屏幕高度范围。orientation
:设备方向(portrait
竖屏 /landscape
横屏)。aspect-ratio
:设备宽高比(如16/9
)。
三、使用示例
根据屏幕宽度调整样式
/* 当屏幕宽度 ≤600px 时,段落文字为红色 */ @media (max-width: 600px) { p { color: red; } } /* 当屏幕宽度 ≥900px 时,段落字体大小为20px */ @media (min-width: 900px) { p { font-size: 20px; } }
适应设备方向
/* 横屏时图片宽度铺满 */ @media (orientation: landscape) { img { width: 100%; } } /* 竖屏时图片高度铺满 */ @media (orientation: portrait) { img { height: 100%; } }
组合多个条件
/* 屏幕宽度 ≥768px 且为横屏时,背景色为浅珊瑚色 */ @media screen and (min-width: 768px) and (orientation: landscape) { body { background-color: lightcoral; } } /* 排除小屏幕设备 */ @media not screen and (max-width: 480px) { body { background-color: lightgray; } }
打印样式优化
/* 打印时隐藏导航栏,设置黑色文字 */ @media print { .navbar, .footer { display: none; } a { color: black; text-decoration: none; } }
预处理器变量(如LESS/SCSS)
// 定义变量 $screen-sm: 768px; // 使用变量 @media (max-width: $screen-sm) { .container { padding: 20px; } }
四、高级应用
响应式布局分段:
- 小屏幕(
max-width: 480px
):简化布局,隐藏侧边栏。 - 中等屏幕(
481px–768px
):调整字体和容器宽度。 - 大屏幕(
≥769px
):固定宽度或多列布局。
- 小屏幕(
移动优先设计:从最小屏幕开始定义样式,逐步通过
@media
扩展至大屏幕,降低维护复杂度。
五、注意事项
单位与值:媒体特性需明确单位(如
px
、em
),避免歧义。性能优化:避免过多嵌套和复杂条件,确保样式高效加载。
测试兼容性:使用浏览器开发者工具模拟不同设备,验证响应式效果。
六、总结
@media
是实现响应式设计的基石,通过灵活组合媒体类型和特性,可为不同设备提供适配的样式。常见场景包括屏幕宽度适配、打印优化、设备方向调整等。结合预处理器变量和移动优先原则,能进一步提升开发效率与代码可维护性。