@media - CSS(层叠样式表) 编辑
@media
CSS @规则 可用于基于一个或多个 媒体查询 的结果来应用样式表的一部分。 使用它,您可以指定一个媒体查询和一个CSS块,当且仅当该媒体查询与正在使用其内容的设备匹配时,该CSS块才能应用于该文档。 注: 在JavaScript中,可以使用CSSMediaRule
CSS对象模型接口访问使用@media创建的规则。语法
@media
规则可置于您代码的顶层或位于其它任何@条件规则组内。
/* At the top level of your code */
@media screen and (min-width: 900px) {
article {
padding: 1rem 3rem;
}
}
/* Nested within another conditional at-rule */
@supports (display: flex) {
@media screen and (min-width: 900px) {
article {
display: flex;
}
}
}
有关媒体查询语法的讨论,请参阅使用媒体查询。
正式语法
@media <media-query-list> { <group-rule-body> }where
<media-query-list> = <media-query>#
where
<media-query> = <media-condition> | [ not | only ]? <media-type> [ and <media-condition-without-or> ]?
where
<media-condition> = <media-not> | <media-and> | <media-or> | <media-in-parens>
<media-type> = <ident>
<media-condition-without-or> = <media-not> | <media-and> | <media-in-parens>where
<media-not> = not <media-in-parens>
<media-and> = <media-in-parens> [ and <media-in-parens> ]+
<media-or> = <media-in-parens> [ or <media-in-parens> ]+
<media-in-parens> = ( <media-condition> ) | <media-feature> | <general-enclosed>where
<media-feature> = ( [ <mf-plain> | <mf-boolean> | <mf-range> ] )
<general-enclosed> = [ <function-token> <any-value> ) ] | ( <ident> <any-value> )where
<mf-plain> = <mf-name> : <mf-value>
<mf-boolean> = <mf-name>
<mf-range> = <mf-name> [ '<' | '>' ]? '='? <mf-value> | <mf-value> [ '<' | '>' ]? '='? <mf-name> | <mf-value> '<' '='? <mf-name> '<' '='? <mf-value> | <mf-value> '>' '='? <mf-name> '>' '='? <mf-value>where
<mf-name> = <ident>
<mf-value> = <number> | <dimension> | <ident> | <ratio>
媒体特性
媒体特性(Media features)描述了 user agent、输出设备,或是浏览环境的具体特征。媒体特性表达式是完全可选的,它负责测试这些特性或特征是否存在、值为多少。每条媒体特性表达式都必须用括号括起来。
名称 | 简介 | 备注 |
---|---|---|
any-hover | 是否有任何可用的输入机制允许用户(将鼠标等)悬停在元素上? | 在 Media Queries Level 4 中被添加。 |
any-pointer | 可用的输入机制中是否有任何指针设备,如果有,它的精度如何? | 在 Media Queries Level 4 中被添加。 |
aspect-ratio | 视窗(viewport)的宽高比 | |
color | 输出设备每个像素的比特值,常见的有 8、16、32 位。如果设备不支持输出彩色,则该值为 0 | |
color-gamut | 用户代理和输出设备大致程度上支持的色域 | 在 Media Queries Level 4 中被添加。 |
color-index | 输出设备的颜色查询表(color lookup table)中的条目数量,如果设备不使用颜色查询表,则该值为 0 | |
device-aspect-ratio | 输出设备的宽高比 | 已在 Media Queries Level 4 中被弃用。 |
device-height | 输出设备渲染表面(如屏幕)的高度 | 已在 Media Queries Level 4 中被弃用。 |
device-width | 输出设备渲染表面(如屏幕)的宽度 | 已在 Media Queries Level 4 中被弃用。 |
display-mode | 应用程序的显示模式,如web app的manifest中的 | 在 Web App Manifest spec被定义. |
forced-colors | 检测是user agent否限制调色板 | 在 Media Queries Level 5 中被添加。 |
grid | 输出设备使用网格屏幕还是点阵屏幕? | |
height | 视窗(viewport)的高度 | |
hover | 主要输入模式是否允许用户在元素上悬停 | 在 Media Queries Level 4 中被添加。 |
inverted-colors | user agent或者底层操作系统是否反转了颜色 | 在 Media Queries Level 5 中被添加。 |
light-level | 环境光亮度 | 在 Media Queries Level 5 中被添加。 |
monochrome | 输出设备单色帧缓冲区中每个像素的位深度。如果设备并非黑白屏幕,则该值为 0 | |
orientation | 视窗(viewport)的旋转方向 | |
overflow-block | 输出设备如何处理沿块轴溢出视窗(viewport)的内容 | 在 Media Queries Level 4 中被添加。 |
overflow-inline | 沿内联轴溢出视窗(viewport)的内容是否可以滚动? | 在 Media Queries Level 4 中被添加。 |
pointer | 主要输入机制是一个指针设备吗?如果是,它的精度如何? | 在 Media Queries Level 4 中被添加。 |
prefers-color-scheme | 探测用户倾向于选择亮色还是暗色的配色方案 | 在 Media Queries Level 5 中被添加。 |
prefers-contrast | 探测用户是否有向系统要求提高或降低相近颜色之间的对比度 | 在 Media Queries Level 5 中被添加。 |
prefers-reduced-motion | 用户是否希望页面上出现更少的动态效果 | 在 Media Queries Level 5 中被添加。 |
prefers-reduced-transparency | 用户是否倾向于选择更低的透明度 | 在 Media Queries Level 5 中被添加。 |
resolution | 输出设备的像素密度(分辨率) | |
scan | 输出设备的扫描过程(适用于电视等) | |
scripting | 探测脚本(例如 JavaScript)是否可用 | 在 Media Queries Level 5 中被添加。 |
update | 输出设备更新内容的渲染结果的频率 | 在 Media Queries Level 4 中被添加。 |
width | 视窗(viewport)的宽度,包括纵向滚动条的宽度 |
示例
@media print {
body { font-size: 10pt; }
}
@media screen {
body { font-size: 13px; }
}
@media screen, print {
body { line-height: 1.2; }
}
@media only screen
and (min-width: 320px)
and (max-width: 480px)
and (resolution: 150dpi) {
body { line-height: 1.4; }
}
媒体查询第4级引入了一种新的范围语法,在测试接受范围的任何特性时允许更简洁的媒体查询,如下面的示例所示:
@media (height > 600px) {
body { line-height: 1.4; }
}
@media (400px <= width <= 700px) {
body { line-height: 1.4; }
}
更多示例,请查看使用媒体查询。
可访问性
为了最好地调整网站文本大小,当您需要<length>
进行媒体查询时,请使用em
。
em
和px
都是有效单位,但如果用户更改浏览器文本大小,em
的效果会更好。
考虑使用4级媒体查询来改善用户体验。 例如,使用prefers-reduced-motion
以检测用户是否已请求系统最小化其使用的动画或动作量。
安全
由于媒体查询可以洞察用户正在使用的设备的功能(以及扩展的功能和设计),因此有可能滥用它们来构造“指纹”来识别设备,或者至少 将其分类为某些细节,这可能是用户不希望看到的。
由于存在这种潜力,浏览器可能会选择以某种方式捏造返回的值,以防止它们被用来精确地标识计算机。 浏览器可能还会在此区域提供其他措施。 例如,如果启用了Firefox的“抵抗指纹”设置,则许多媒体查询会报告默认值,而不是代表实际设备状态的值。
规范
Specification | Comment | Feedback |
---|---|---|
Media Queries Level 5 @media | Reinstates light-level , inverted-colors and Custom Media Queries, which were removed from Level 4.Adds prefers-reduced-motion , prefers-reduced-transparency , prefers-contrast , and prefers-color-scheme media features. | CSS Working Group drafts GitHub issues |
CSS Conditional Rules Module Level 3 @media | Defines the basic syntax of the @media rule. | CSS Working Group drafts GitHub issues |
Media Queries Level 4 @media | Adds | CSS Working Group drafts GitHub issues |
Media Queries @media | ||
CSS Level 2 (Revision 1) @media | Initial definition. |
浏览器兼容性
BCD tables only load in the browser
在本页的这些有关浏览器的兼容性数据都是由结构数据产生的. 如果你想要提供更多数据, 请访问: https://github.com/mdn/browser-compat-data .向我们发送你的添加请求.更多资料
- Using media queries
- 在 JavaScript里,
@media
can be可以通过css对象模型接口被调用 .CSSMediaRule
. - Extended Mozilla media features
- Extended WebKit media features
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论