本文最后更新于:8 个月前
本文介绍CSS媒体查询的语法,使用示例和应用场景
CSS(七)媒体查询 一、语法 1、语法格式 媒体查询语法
1 2 3 @media media-type and (media-feature-rule) { }
2、媒体类型
值
说明
all
适用于所有设备
print
适用于在打印预览模式下在屏幕上查看的分页材料和文档
screen
主要用于屏幕
speech
主要用于语音合成器
3、媒体特性
名称
简介
height
视窗(viewport)的高度,特指特定的数值,实际较少使用
width
视窗(viewport)的宽度,包括纵向滚动条的宽度
max-width
/min-width
最大/最小宽度,用来表示范围,常用
max-height
/min-height
最大/最小高度
prefers-color-scheme
探测用户倾向于选择亮色还是暗色的配色方案
orientation
视窗(viewport)的旋转方向,有两种取值: portrait,viewport 处于纵向 landscape,viewport 处于横向
resolution
(en-US)[1]
输出设备的像素密度(分辨率),单位dpi
或dppx
[1] 在 js 中通过 window.devicePixelRatio
查看 设备像素比 devicePixelRatio
4、逻辑运算符
运算符
含义
and
逻辑与
,
相当于 or 的作用,逻辑或
not
逻辑非,用于整个查询表达式,而不是单个表达式[1]
only
主要用于早期浏览器[2]
[1] not
用于反转整个表达式,而不是单个表达式,示例如下:
1 2 3 4 5 6 7 8 9 @media not (orientation : portrait) and (min-height : 680px ) { ... }@media not ((orientation : portrait)and (min-height : 680px )) { ... }@media not screen and (color ), print and (color ) { ... }@media not (screen and (color )), print and (color ) { ... }
[2] 当不使用only
时,旧版本的浏览器会将screen and (max-width: 500px)
简单地解释为screen
,忽略查询的其余部分,并将其样式应用于所有屏幕。如果使用only
运算符,则还必须指定 「媒体类型」
5、示例 1 2 3 4 5 6 7 @media screen, print { ... }@media (max-width : 1250px ) { ... }@media (min-width : 30em ) and (orientation : landscape) { ... }@media only (min-width : 30em ) and (orientation : landscape) { ... } @media screen and (min-width : 30em ) and (orientation : landscape) { ... } @media screen and (min-width : 30em ) and (orientation : landscape) { ... }@media (min-height : 680px ), screen and (orientation : portrait) { ... }
更详细的细节请浏览:使用媒体查询 - CSS(层叠样式表) | MDN (mozilla.org)
二、应用场景 为不同的设备(PC、手机、平板等)设置断点,应用不同的样式设计
典型的端点取值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 @media only screen and (max-width : 600px ) {...} @media only screen and (min-width : 600px ) {...} @media only screen and (min-width : 768px ) {...} @media only screen and (min-width : 992px ) {...} @media only screen and (min-width : 1200px ) {...}
一般在区分PC和移动端的时候,会给定一个范围,如下
1 2 @media only screen and (min-width : 600px ) and (max-width : 767px ) {...} @media only screen and (min-width : 768px ) {...}
如果第一条查询表达式不加max-width特性的话,当设备宽度超过768时,会同时满足两个表示式,也即同时应用两种样式,显然这并不是我们所期望出现的!
一般在使用「媒体查询」时,需要使用meta标签,禁用页面缩放
1 2 <meta name ="viewport" content ="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" >
三、3种使用方式 3.1、CSS文件中使用 1 2 3 4 5 6 7 8 9 10 11 12 13 @media (max-width : 320px ) { body { background : pink; } }@media (min-width : 321px ) and (max-width : 375px ) { body { background : red; } }
3.2、结合@import使用 1 2 3 <head > @import 'index01.css' screen and (max-width:1024px) and (min-width:720px)</head >
3.3、结合link标签使用 1 2 <link rel ="stylesheet" type ="text/css" href ="index01.css" media ="screen and (max-width:1024px) and (min-width:720px)" /> <link rel ="stylesheet" type ="text/css" href ="index02.css" media ="screen and (max-width:720px)" />