• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 媒体查询
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @lanshouren-->
5<!--Designer: @lanshouren-->
6<!--Tester: @liuli0427-->
7<!--Adviser: @HelloCrease-->
8
9>  **说明:**
10>
11>  - 从API version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
12>
13>  - media属性值默认为设备的真实尺寸大小、物理像素和真实的屏幕分辨率。
14
15
16媒体查询(Media Query)应用十分广泛,开发者经常需要根据设备的大致类型或者特定的特征和设备参数(例如屏幕分辨率)来修改应用的样式。使用媒体查询针对设备和应用的属性信息,可以设计出相匹配的布局样式。
17
18
19## CSS语法规则
20
21使用@media来引入查询语句,具体规则如下:
22
23```
24@media [media-type] [and|or] [(media-feature)] {
25  CSS-Code;
26}
27```
28
29@media screen and (round-screen: true) { … } : 当设备屏幕是圆形时条件成立
30
31@media (max-height: 454) { … } :范围查询,CSS level 3 写法
32
33>  **说明:**
34>
35>  - 不支持&lt;=,&gt;=,&lt;,&gt;操作符;
36>  - api 9开始才支持多重 () 嵌套使用;
37>  - media语句整体长度不能超过 512 个字符;
38>  - 单个media条件长度不能超过32个字符;
39
40
41## 媒体类型
42
43| 类型     | 说明             |
44| ------ | -------------- |
45| screen | 按屏幕相关参数进行媒体查询。 |
46
47
48## 媒体逻辑操作
49
50媒体逻辑操作符:and、or<sup>9+</sup>用于构成媒体查询语句,详细解释说明如下表。
51
52**表1** 媒体逻辑操作符
53
54| 类型              | 说明                                       |
55| --------------- | ---------------------------------------- |
56| and             | 将多个媒体特征(Media&nbsp;Feature)以“与”的方式连接成一个媒体查询,只有当所有媒体特征都为true,查询条件成立。另外,它还可以将媒体类型和媒体功能结合起来。<br/>例如:screen&nbsp;and&nbsp;(device-type:&nbsp;liteWearable)&nbsp;and&nbsp;(max-height:&nbsp;454)&nbsp;表示当设备类型是智能穿戴同时应用的最大高度小于等于454个像素单位时成立。 |
57| or<sup>9+</sup> | 将多个媒体特征以“或”的方式连接成一个媒体查询,如果存在结果为true的媒体特征,则查询条件成立。<br/>例如:screen&nbsp;and&nbsp;(max-height:&nbsp;454) &nbsp;or&nbsp;&nbsp;(round-screen:true)表示当应用高度小于等于454个像素单位或者设备屏幕是圆形时,条件成立。 |
58
59
60
61
62## 媒体特征
63
64| 类型               | 说明                                       |
65| ---------------- | ---------------------------------------- |
66| height           | 应用页面显示区域的高度。                             |
67| min-height       | 应用页面显示区域的最小高度。                           |
68| max-height       | 应用页面显示区域的最大高度。                           |
69| width            | 应用页面显示区域的宽度。                             |
70| min-width        | 应用页面显示区域的最小宽度。                           |
71| max-width        | 应用页面显示区域的最大宽度。                           |
72| aspect-ratio     | 应用页面显示区域的宽度与高度的比值。<br/>例如:aspect-ratio: 1/2 |
73| min-aspect-ratio | 应用页面显示区域的宽度与高度的最小比值。                     |
74| max-aspect-ratio | 应用页面显示区域的宽度与高度的最大比值。                     |
75| round-screen     | 屏幕类型,圆形屏幕为 true,&nbsp;非圆形屏幕为&nbsp;false。 |
76
77
78## 通用媒体特征示例代码
79
80多个.container中定义的属性个数及类型必须保持一致,否则可能导致显示异常。
81
82```html
83<!-- xxx.hml -->
84<div>
85  <div class="container">
86    <text class="title">Hello World</text>
87  </div>
88</div>
89```
90
91```css
92/* xxx.css */
93.container {
94  width: 300px;
95  height: 600px;
96  background-color: #008000;
97}
98.title {
99    font-size: 30px;
100    text-align: center;
101}
102@media (device-type: smartVision) {
103  .container {
104    width: 500px;
105    height: 500px;
106    background-color: #fa8072;
107  }
108}
109@media (device-type: liteWearable) {
110  .container {
111    width: 300px;
112    height: 300px;
113    background-color: #008b8b;
114  }
115}
116```
117