一、使用场景
在 CSS 中,媒体查询用于根据不同的屏幕尺寸设置不同的样式。可以使用媒体查询来设置移动端的样式,例如调整字体大小、元素的宽度和高度、图片的缩放比例等。
二、基本使用方式
@media media-type and (media-feature-rule) {
/* CSS rules go here */
}
其中,media-type 是指定媒体类型的关键字,例如 "screen" 表示屏幕,"print" 表示打印,"speech" 表示语音朗读等。media-feature-rule 是指定媒体特征的条件,例如 "width <= 500px" 表示屏幕宽度小于 500px。
三、范例
@media screen and (max-width: 500px) { ... }:表示当屏幕宽度小于 500px 时,应用 CSS 规则。
@media screen and (min-width: 500px) { ... }:表示当屏幕宽度大于或等于 500px 时,应用 CSS 规则。
@media screen and (orientation: landscape) { ... }:表示当屏幕方向为横向时,应用 CSS 规则。
@media screen and (orientation: portrait) { ... }:表示当屏幕方向为纵向时,应用 CSS 规则。
<link rel="stylesheet" media="screen and (min-width: 900px)" href="widescreen.css"> ;
宽度大于 900px 的屏幕使用该样式
四、使用提升
1、朝向
一个受到良好支持的媒体特征是orientation,我们可以用它测得竖放(portrait mode)和横放(landscape mode)模式。
如:
@media (orientation: landscape) {
body {
color: rebeccapurple;
}
}
// 代码指的是要在设备处于横向的时候改变 body 文本颜色
2、"与"、"或"和"非"
与 : 混合媒体特征,你可以以与在上面使用and很相同的方式,用and来混合媒体类型和特征。
@media screen and (min-width: 400px) and (orientation: landscape) {
body {
color: blue;
}
}
// 我们可能会想要测得min-width和orientation,而 body 的文字只会在视口至少为 400 像素宽,且设备横放时变为蓝色。
或:如果你有一组查询,且要其中的任何一个都可以匹配的话,那么你可以使用逗号分开这些查询。
@media screen and (min-width: 400px), screen and (orientation: landscape) {
body {
color: blue;
}
}
// 文本会在视口至少为 400 像素宽的时候或者设备处于横放状态的时候变为蓝色。如果其中的任何一项成立,那么查询就匹配上了。
非:你可以用not操作符让整个媒体查询失效,这就直接反转了整个媒体查询的含义。
@media not all and (orientation: landscape) {
body {
color: blue;
}
}
// 文本只会在朝向为竖着的时候变成蓝色。
3、only
only: only 运算符仅在整个查询匹配时才用于应用样式,并且对于防止较早的浏览器应用所选样式很有用。 当不使用 only 时,旧版本的浏览器会将 screen and (max-width: 500px) 简单地解释为 screen,忽略查询的其余部分,并将其样式应用于所有屏幕。 如果使用 only 运算符,则还必须指定媒体类型。
五、媒体类型
值 | 描述 |
---|---|
all | 用于所有设备 |
aural | 已废弃。用于语音和声音合成器 |
braille | 已废弃。 应用于盲文触摸式反馈设备 |
embossed | 已废弃。 用于打印的盲人印刷设备 |
handheld | 已废弃。 用于掌上设备或更小的装置,如PDA和小型电话 |
用于打印机和打印预览 | |
projection | 已废弃。 用于投影设备 |
screen | 用于电脑屏幕,平板电脑,智能手机等。 |
speech | 应用于屏幕阅读器等发声设备 |
tty | 已废弃。 用于固定的字符网格,如电报、终端设备和对字符有限制的便携设备 |
tv | 已废弃。 用于电视和网络电视 |
六、媒体功能
值 | 描述 |
---|---|
aspect-ratio | 定义输出设备中的页面可见区域宽度与高度的比率 |
color | 定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0 |
color-index | 定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0 |
device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的比率。 |
device-height | 定义输出设备的屏幕可见高度。 |
device-width | 定义输出设备的屏幕可见宽度。 |
grid | 用来查询输出设备是否使用栅格或点阵。 |
height | 定义输出设备中的页面可见区域高度。 |
max-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最大比率。 |
max-color | 定义输出设备每一组彩色原件的最大个数。 |
max-color-index | 定义在输出设备的彩色查询表中的最大条目数。 |
max-device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最大比率。 |
max-device-height | 定义输出设备的屏幕可见的最大高度。 |
max-device-width | 定义输出设备的屏幕最大可见宽度。 |
max-height | 定义输出设备中的页面最大可见区域高度。 |
max-monochrome | 定义在一个单色框架缓冲区中每像素包含的最大单色原件个数。 |
max-resolution | 定义设备的最大分辨率。 |
max-width | 定义输出设备中的页面最大可见区域宽度。 |
min-aspect-ratio | 定义输出设备中的页面可见区域宽度与高度的最小比率。 |
min-color | 定义输出设备每一组彩色原件的最小个数。 |
min-color-index | 定义在输出设备的彩色查询表中的最小条目数。 |
min-device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最小比率。 |
min-device-width | 定义输出设备的屏幕最小可见宽度。 |
min-device-height | 定义输出设备的屏幕的最小可见高度。 |
min-height | 定义输出设备中的页面最小可见区域高度。 |
min-monochrome | 定义在一个单色框架缓冲区中每像素包含的最小单色原件个数 |
min-resolution | 定义设备的最小分辨率。 |
min-width | 定义输出设备中的页面最小可见区域宽度。 |
monochrome | 定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0 |
orientation | 定义输出设备中的页面可见区域高度是否大于或等于宽度。 |
resolution | 定义设备的分辨率。如:96dpi, 300dpi, 118dpcm |
scan | 定义电视类设备的扫描工序。 |
width | 定义输出设备中的页面可见区域宽度。 |