非常教程

CSS参考手册

媒体查询 | Media Queries

媒体查询:使用媒体查询 | Media Queries: Using media queries

当您想要根据设备的一般类型(如打印与屏幕),特定特征(如浏览器视口的宽度)或环境(如环境光线条件)应用CSS样式时,媒体查询很有用。由于当今互联网连接设备种类繁多,媒体查询是构建网站和应用程序的重要工具,这些网站和应用程序足够强大,可以处理用户拥有的任何硬件。

目标媒体类型

媒体类型描述给定设备的一般类别。尽管网站通常设计时考虑了屏幕,但您可能希望创建针对特定设备(如打印机或基于音频的屏幕阅读器)的样式。例如,这个CSS目标输出器:

@media print { ... }

您还可以针对多个设备。例如,这个@media规则使用两个媒体查询来针对屏幕和打印设备:

@media screen, print { ... }

请参阅媒体类型以获取所有媒体类型的列表。因为它们只是用非常广泛的术语来描述设备,所以只有少数可用; 针对更具体的属性,而不是使用媒体功能

目标媒体特征

媒体功能描述给定用户代理,输出设备或环境的特定特征。例如,您可以将特定的样式应用于宽屏显示器,使用鼠标的计算机或在光线不足的情况下使用的设备。此示例在用户的主要输入机制(如鼠标)可以悬停在元素上时应用样式:

@media (hover: hover) { ... }

许多媒体特征是范围特征,这意味着它们可以用“min-”或“max-”作为前缀来表示“最小条件”或“最大条件”约束。例如,只有当浏览器的视口等于或小于12,450像素时,此CSS才会应用样式:

@media (max-width: 12450px) { ... }

如果您创建媒体功能查询而不指定值,则只要该功能的值不为零,就会使用嵌套样式。例如,这个CSS将适用于具有彩色屏幕的任何设备:

@media (color) { ... }

如果功能不适用于正在运行浏览器的设备,则涉及该媒体功能的表达式始终为假。例如,嵌套在以下查询中的样式将永远不会被使用,因为没有任何只使用语音的设备具有屏幕高宽比:

@media speech and (aspect-ratio: 11/5) { ... }

有关更多媒体功能示例,请参见参考页对于每个特定的特性。

创建复杂的媒体查询

有时您可能想创建一个取决于多个条件的媒体查询。这时应该让逻辑运算符进来:notand,和only。而且,您可以将多个媒体查询组合成逗号分隔列表。这使您可以在不同情况下应用相同的样式。

在前面的示例中,我们已经看到了and用于对媒体进行分组的运算符类型与媒体特征...

and运算符还可以将多个媒体特性组合到单个媒体查询中。not运算符否定了媒体查询,基本上颠倒了它的正常含义。

only运算符阻止旧浏览器应用样式。

注意:在大多数情况下,all当没有指定其他类型时,默认使用媒体类型。但是,如果使用notor only运算符,则必须明确指定媒体类型。

and

and关键字结合了媒体类型的媒体特征其它媒体功能。此示例结合了两种媒体功能,将样式限制为宽度至少为30 ems的横向设备:

@media (min-width: 30em) and (orientation: landscape) { ... }

要将样式限制为具有屏幕的设备,可以将媒体功能链接到screen媒体类型:

@media screen and (min-width: 30em) and (orientation: landscape) { ...  }

逗号分隔列表

当用户设备与各种媒体类型,功能或状态匹配时,可以使用逗号分隔列表来应用样式。例如,如果用户设备的最小高度为680像素,或者是纵向模式下的屏幕设备,则以下规则将应用其样式:

@media (min-height: 680px), screen and (orientation: portrait) { ... }

以上面的例子,如果用户有一个页面高度为800像素的显示器,媒体语句将返回true,因为第一个查询将被应用。同样,如果用户使用肖像模式的智能手机,视口高度为480像素,则第二个查询将应用,媒体语句仍然会返回true。

not

not关键字颠倒了整个媒体查询的含义。它只会否定所应用的特定媒体查询。(因此,它不适用于以逗号分隔的媒体查询列表中的每个媒体查询。)not关键字不能用于否定单个功能查询,只能用于整个媒体查询。该not是最后一个在下面的查询计算:

@media not all and (monochrome) { ... }

...以便对上述查询进行如下计算:

@media not (all and (monochrome)) { ... }

...而不是这样

@media (not all) and (monochrome) { ... }

另一个例子是,以下媒体查询:

@media not screen and (color), print and (color) { ... }

...是这样评估的:

@media (not (screen and (color))), print and (color) { ... }

only

only关键字阻止不支持与媒体功能媒体查询从应用给定的样式旧的浏览器。它对现代浏览器没有影响。

<link rel="stylesheet" media="only screen and (color)" href="modern-styles.css" />
CSS

层叠样式表( Cascading Style Sheets )是一种用来表现 HTML 或 XML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

CSS目录

1.动画和转换 | Animations & Transitions
2.背景和边框 | Backgrounds & Borders
3.基本框模型 | Basic Box Model
4.基本用户界面 | Basic User Interface
5.框对齐 | Box Alignment
6. 级联和继承 | Cascading & Inheritance
7.颜色 | Color
8. 合成与混合 | Compositing & Blending
9.条件和规则 | Conditional Rules
10.计数器样式 | Counter Styles
11.设备适配 | Device Adaptation
12.扩展 | Extensions
13.滤镜效果 | Filter Effects
14.灵活的框布局 | Flexible Box Layout
15.字体 | Fonts
16.片段模块 | Fragmentation
17.全屏 API | Fullscreen API
18. 生成内容 | Generated Content
19.网格布局 | Grid Layout
20.图像值 | Image Values
21.初始线格局 | Inline Layout
22.列表和计数器 | Lists & Counters
23.逻辑属性 | Logical Properties
24.面具 | Masking
25.媒体查询 | Media Queries
26.杂项 | Miscellaneous
27.Miscellaneous Level 1
28.Miscellaneous Level 2
29.运动路径 | Motion Path
30. 多列布局 | Multi-column Layout
31.命名空间 | Namespaces
32.项目模型 | Object Model View
33.网页媒体 | Paged Media
34.定位布局 | Positioned Layout
35.伪元素 | Pseudo-
36.节奏大小 | Rhythmic Sizing
37. Ruby布局 | Ruby Layout
38.可缩放矢量图形 | Scalable Vector Graphics
39.滚动快照 | Scroll Snap
40.选择 | Selectors
41.形状 | Shapes
42.文本 | Text
43.文字装饰 | Text Decoration
44.变换 | Transforms
45.值和单位 | Values & Units
46.变量 | Variables
47.写入模型 | Writing Modes
48.CSS 教程
49.CSS 创建
50.CSS Id 和 Class选择器
51.CSS 简介
52.CSS 盒子模型
53.CSS Table(表格)
54.CSS 列表样式(ul)
55.CSS 链接(link)
56.CSS Fonts(字体)
57.CSS Text(文本)
58.CSS Backgrounds(背景)
59.CSS Display(显示) 与 Visibility(可见性)
60.CSS 尺寸 (Dimension)
61.CSS 分组和嵌套
62.CSS 轮廓(outline)属性
63.CSS Border(边框)
64.CSS 图像透明/不透明
65.CSS 导航栏
66.CSS 伪元素
67.CSS 伪类
68.CSS Float(浮动)
69.CSS Position(定位)
70.CSS 总结
71.CSS 属性选择器
72.CSS 媒体类型
73.CSS 图像拼合技术
74.CSS 实例
75.CSS 组合选择符
76.响应式 Web 设计 – 框架
77.响应式 Web 设计 – 视频(Video)
78.CSS 提示工具(Tooltip)
79.CSS 布局 Overflow
80.CSS 计数器
81.CSS 表单