“f6d56d843bc75006be98b480d12eceb5f034572d”上不存在“source/libs/tdb/src/btree/tdbBtreeOpen.c”
提交 a4453908 编写于 作者: L lvqing

Merge branch 'master' of https://gitcode.net/dcloud/unidocs-zh into dev_LQ

...@@ -60,6 +60,32 @@ ...@@ -60,6 +60,32 @@
```html ```html
<img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni-app-multiport.jpg" class="zooming" data="abc" width="100" height="100" /> <img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni-app-multiport.jpg" class="zooming" data="abc" width="100" height="100" />
``` ```
12. md 表格支持行、列合并,支持无表头表格
- 行列合并
```md
|Stage | Direct Products | ATP Yields|
|----: | --------------: | ---------:|
|Glycolysis | 2 ATP ||
|^^ | 2 NADH | 3--5 ATP |
|Pyruvaye oxidation | 2 NADH | 5 ATP |
|Citric acid cycle | 2 ATP ||
|^^ | 6 NADH | 15 ATP |
|^^ | 2 FADH2 | 3 ATP |
|**30--32** ATP |||
```
- 无表头表格
```md
|--|--|--|--|--|--|--|--|
|♜| |♝|♛|♚|♝|♞|♜|
| |♟|♟|♟| |♟|♟|♟|
|♟| |♞| | | | | |
| |♗| | |♟| | | |
| | | | |♙| | | |
| | | | | |♘| | |
|♙|♙|♙|♙| |♙|♙|♙|
|♖|♘|♗|♕|♔| | |♖|
```
## 文档 Algolia 使用限额 ## 文档 Algolia 使用限额
Included Quota: Included Quota:
- Records: 1,000,000 - Records: 1,000,000
......
...@@ -96,6 +96,17 @@ const config = { ...@@ -96,6 +96,17 @@ const config = {
.end() .end()
.plugin('inject-json-to-md') .plugin('inject-json-to-md')
.use(require('./markdown/inject-json-to-md')) .use(require('./markdown/inject-json-to-md'))
.end()
.plugin('multimd-table')
.use(require('markdown-it-multimd-table'), [
{
multiline: false,
rowspan: true,
headerless: true,
multibody: false,
aotolabel: false,
},
])
} }
}, },
chainWebpack (config, isServer) { chainWebpack (config, isServer) {
......
let cssJson = {}; let cssJson = {};
let utsJson = {}; let utsJson = {};
let utsApiJson = {}; let utsApiJson = {};
let utsComJson = {};
let utsUnicloudApiJson = {};
try { try {
cssJson = require('../utils/cssJson.json'); cssJson = require('../utils/cssJson.json');
} catch (error) {} } catch (error) {}
...@@ -10,6 +12,13 @@ try { ...@@ -10,6 +12,13 @@ try {
try { try {
utsApiJson = require('../utils/utsApiJson.json'); utsApiJson = require('../utils/utsApiJson.json');
} catch (error) {} } catch (error) {}
try {
utsComJson = require('../utils/utsComJson.json');
} catch (error) {}
try {
utsUnicloudApiJson = require('../utils/utsUnicloudApiJson.json');
} catch (error) {}
function getRegExp(key) { function getRegExp(key) {
return new RegExp(`<!--\\s*${key}.([\\w\\W]+[^\\s])\\s*-->`) return new RegExp(`<!--\\s*${key}.([\\w\\W]+[^\\s])\\s*-->`)
...@@ -40,6 +49,22 @@ const getJSON = text => { ...@@ -40,6 +49,22 @@ const getJSON = text => {
}; };
} }
match = text.match(getRegExp('UTSCOMJSON'));
if (match) {
return {
match,
json: utsComJson,
};
}
match = text.match(getRegExp('UTSUNICLOUDAPIJSON'));
if (match) {
return {
match,
json: utsUnicloudApiJson,
};
}
return { return {
match: null, match: null,
json: {}, json: {},
......
{"align-content":{"name":"## align-content\n","description":"\nCSS 的 align-content 属性设置了浏览器如何沿着弹性盒子布局的纵轴和网格布局的主轴在内容项之间和周围分配空间。\n","syntax":"\n### 语法\n```\nalign-content: center | flex-start | flex-end | space-between | space-around | stretch;\n```\n","values":"\n### 属性值\n\n`center`\n所有行朝向容器的中心填充。每行互相紧挨,相对于容器居中对齐。容器的垂直轴起点边和第一行的距离相等于容器的垂直轴终点边和最后一行的距离。\n\n\n`flex-end`\n所有行从垂直轴末尾开始填充。最后一行的垂直轴终点和容器的垂直轴终点对齐。同时所有后续行与前一个对齐。\n\n\n`flex-start`\n所有行从垂直轴起点开始填充。第一行的垂直轴起点边和容器的垂直轴起点边对齐。接下来的每一行紧跟前一行。\n\n\n`space-around`\n所有行在容器中平均分布,相邻两行间距相等。容器的垂直轴起点边和终点边分别与第一行和最后一行的距离是相邻两行间距的一半。\n\n\n`space-between`\n所有行在容器中平均分布。相邻两行间距相等。容器的垂直轴起点边和终点边分别与第一行和最后一行的边对齐。\n\n\n`stretch`\n拉伸所有行来填满剩余空间。剩余空间平均地分配给每一行。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| align-content | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-content)\n"},"align-items":{"name":"## align-items\n","description":"\nCSS align-items 属性将所有直接子节点上的 align-self 值设置为一个组。align-self 属性设置项目在其包含块中在交叉轴方向上的对齐方式。\n","syntax":"\n### 语法\n```\nalign-items: center | flex-start | flex-end | stretch | baseline;\n```\n","values":"\n### 属性值\n\n`baseline`\n所有元素向基线对齐。侧轴起点到元素基线距离最大的元素将会于侧轴起点对齐以确定基线。\n\n\n`center`\n元素在侧轴居中。如果元素在侧轴上的高度高于其容器,那么在两个方向上溢出距离相同。\n\n\n`flex-end`\n元素向侧轴终点对齐。\n\n\n`flex-start`\n元素向侧轴起点对齐。\n\n\n`stretch`\n弹性项包含外边距的交叉轴尺寸被拉升至行高\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| align-items | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| baseline | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-items)\n"},"background":{"name":"## background\n","description":"\nbackground 是一种 CSS 简写属性,用于一次性集中定义各种背景属性,包括 color, image, origin 与 size, repeat 方式等等。\n","syntax":"\n### 语法\n```\nbackground: <color> | <gradient>;\n```\n","values":"\n### 属性值\n\n`fixed`\n背景相对于视口是固定的。 在没有视口的分页媒体中,“固定”背景相对于页面框是固定的,因此会在每个页面上复制。\n\n\n`local`\n背景相对于元素的内容是固定的:如果元素具有滚动机制,则背景随元素的内容滚动。\n\n\n`none`\n值“none”算作图像层,但不绘制任何内容。\n\n\n`scroll`\n背景相对于元素本身是固定的,并且不会随其内容滚动。(它有效地附加到元素的边框。)\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background)\n"},"background-clip":{"name":"## background-clip\n","description":"\nbackground-clip 设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面。\n","syntax":"\n### 语法\n```\nbackground-clip: border-box | padding-box | content-box;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background-clip | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-clip)\n"},"background-color":{"name":"## background-color\n","description":"\nCSS属性中的 background-color 会设置元素的背景色,属性的值为颜色值或关键字\"transparent\"二者选其一。\n","syntax":"\n### 语法\n```\nbackground-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background-color | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-color)\n"},"background-image":{"name":"## background-image\n","description":"\nCSS background-image 属性用于为一个元素设置一个或者多个背景图像。\n","syntax":"\n### 语法\n```\nbackground-image: <gradient>;\n```\n","values":"\n### 属性值\n\n`none`\n是一个表示无背景图的关键字。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background-image | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-image)\n"},"border":{"name":"## border\n","description":"\nCSS 的 border 属性是一个用于设置各种单独的边界属性的简写属性。border 可以用于设置一个或多个以下属性的值:border-width、border-style、border-color。\n","syntax":"\n### 语法\n```\nborder: <'border-width'> || <'border-style'> || <'border-color'>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border)\n"},"border-bottom-color":{"name":"## border-bottom-color\n","description":"\nborder-bottom-color 属性设置一个元素底部边框的颜色。应当指出,在多数情况下,CSS 简写属性 border-color 或 border-bottom 更方便实用。\n","syntax":"\n### 语法\n```\nborder-bottom-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-color | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-color)\n"},"border-bottom-left-radius":{"name":"## border-bottom-left-radius\n","description":"\nborder-bottom-left-radius 这个 css 属性设置元素左下角的圆角。圆角可以是圆或椭圆(注:应为圆或椭圆的一部分),或者当其中一个值为 0 时,圆角将不被设置,这时这个角将展示为直角。\n","syntax":"\n### 语法\n```\nborder-bottom-left-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-left-radius | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius)\n"},"border-bottom-right-radius":{"name":"## border-bottom-right-radius\n","description":"\nborder-bottom-right-radius CSS 属性设置元素右下角的圆角。\n","syntax":"\n### 语法\n```\nborder-bottom-right-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-right-radius | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius)\n"},"border-bottom-style":{"name":"## border-bottom-style\n","description":"\nborder-bottom-style CSS 属性设置元素底部边框的线条样式。\n","syntax":"\n### 语法\n```\nborder-bottom-style: <enum>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-style | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-style)\n"},"border-bottom-width":{"name":"## border-bottom-width\n","description":"\nCSS 属性 border-bottom-width 设置一个元素的底部边框宽度。\n","syntax":"\n### 语法\n```\nborder-bottom-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-width)\n"},"border-color":{"name":"## border-color\n","description":"\nCSS 属性 border-color 是一个用于设置元素四个边框颜色的快捷属性: border-top-color、border-right-color、border-bottom-color、border-left-color。\n","syntax":"\n### 语法\n```\nborder-color: <color>{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-color | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-color)\n"},"border-left-color":{"name":"## border-left-color\n","description":"\nborder-left-color 属性设置元素的左边框颜色。值得注意的是,在大数情况下使用 border-color 或 border-left 更加方便和普遍。\n","syntax":"\n### 语法\n```\nborder-left-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-left-color | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-color)\n"},"border-left-style":{"name":"## border-left-style\n","description":"\nborder-left-style CSS 属性设置元素左边框的线条样式。\n","syntax":"\n### 语法\n```\nborder-left-style: <enum>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-left-style | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-style)\n"},"border-left-width":{"name":"## border-left-width\n","description":"\nCSS 的 border-left-width 属性用来设置盒子的左边框的宽度。\n","syntax":"\n### 语法\n```\nborder-left-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-left-width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-width)\n"},"border-radius":{"name":"## border-radius\n","description":"\nCSS 属性 border-radius 允许你设置元素的外边框圆角。当使用一个半径时确定一个圆形,当使用两个半径时确定一个椭圆。这个(椭)圆与边框的交集形成圆角效果。\n","syntax":"\n### 语法\n```\nborder-radius: <length>{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-radius | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-radius)\n"},"border-right-color":{"name":"## border-right-color\n","description":"\nborder-right-color CSS 属性用来设置元素右边的 border. 这个属性的值也可以通过简写的 CSS 属性 border-color 或border-right来设置。\n","syntax":"\n### 语法\n```\nborder-right-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-right-color | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-color)\n"},"border-right-style":{"name":"## border-right-style\n","description":"\nborder-right-style 是 border 中的一个 CSS 子属性,描述的是右边框的样式 border.\n","syntax":"\n### 语法\n```\nborder-right-style: <enum>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-right-style | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-style)\n"},"border-right-width":{"name":"## border-right-width\n","description":"\nCSS 的**border-right-width** 用来设置盒子右边框的宽度。\n","syntax":"\n### 语法\n```\nborder-right-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-right-width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-width)\n"},"border-style":{"name":"## border-style\n","description":"\nborder-style 是一个 CSS 简写属性,用来设定元素所有边框的样式。\n","syntax":"\n### 语法\n```\nborder-style: <enum>{1,4};\n```\n","values":"\n### 属性值\n\n`solid`\n\n\n\n`dashed`\n\n\n\n`dotted`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-style | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-style)\n"},"border-top-color":{"name":"## border-top-color\n","description":"\nborder-top-color 属性用以设置某元素顶部 border的颜色。通常,用border-color 或 border-top 设置该颜色更为便捷可取。\n","syntax":"\n### 语法\n```\nborder-top-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-color | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-color)\n"},"border-top-left-radius":{"name":"## border-top-left-radius\n","description":"\nborder-top-left-radius 用来设置元素左上角的圆角效果。这段圆弧(角)可以是圆或椭圆的一部分。如果其中有一个值为 0,那么将无圆角效果(见 border-top-left-radius 取值方式)。\n","syntax":"\n### 语法\n```\nborder-top-left-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-left-radius | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius)\n"},"border-top-right-radius":{"name":"## border-top-right-radius\n","description":"\nborder-top-right-radius 属性设置元素的右上角弧形,这个圆弧可能是一个椭圆,或者其中一个值是 0 的话,就是没有圆弧,换句话就是说拐角是方形的。\n","syntax":"\n### 语法\n```\nborder-top-right-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-right-radius | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius)\n"},"border-top-style":{"name":"## border-top-style\n","description":"\nborder-top-style CSS 设置元素上边框的 border.\n","syntax":"\n### 语法\n```\nborder-top-style: <enum>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-style | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-style)\n"},"border-top-width":{"name":"## border-top-width\n","description":"\ncss 属性 border-top-width 是用于设置盒模型的上边框的宽度\n","syntax":"\n### 语法\n```\nborder-top-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-width)\n"},"border-width":{"name":"## border-width\n","description":"\nborder-width 属性可以设置盒子模型的边框宽度。\n","syntax":"\n### 语法\n```\nborder-width: <length>{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-width)\n"},"bottom":{"name":"## bottom\n","description":"\nbottom样式属性定义了定位元素下外边距边界与其包含块下边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\nbottom: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n对于非替换元素,该值的效果取决于哪些相关属性也具有值“auto”\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| bottom | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/bottom)\n"},"box-shadow":{"name":"## box-shadow\n","description":"\nCSS box-shadow 属性用于在元素的框架上添加阴影效果。你可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。该属性可设置的值包括阴影的 X 轴偏移量、Y 轴偏移量、模糊半径、扩散半径和颜色。\n","syntax":"\n### 语法\n```\nbox-shadow: <shadow>;\n```\n","values":"\n### 属性值\n\n`inset`\n如果没有指定inset,默认阴影在边框外,即阴影向外扩散。\n 使用 inset 关键字会使得阴影落在盒子内部,这样看起来就像是内容被压低了。此时阴影会在边框之内 (即使是透明边框)、背景之上、内容之下。\n\n\n`none`\n没有阴影\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| box-shadow | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-shadow)\n"},"box-sizing":{"name":"## box-sizing\n","description":"\nCSS 中的 box-sizing 属性定义了 user agent 应该如何计算一个元素的总宽度和总高度。\n","syntax":"\n### 语法\n```\nbox-sizing: content-box | border-box;\n```\n","values":"\n### 属性值\n\n`border-box`\n该元素上指定的宽度和高度(以及各自的最小/最大属性)决定了该元素的边框。\n\n\n`content-box`\nCSS2.1 指定的宽度和高度行为。指定的宽度和高度(以及各自的最小/最大属性)分别应用于元素内容框的宽度和高度。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| box-sizing | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-sizing)\n"},"color":{"name":"## color\n","description":"\ncolor CSS 属性设置颜色值的前景色以及文本装饰,并设置<currentcolor> (en-US)值。currentcolor可以对其他颜色属性用作不直接的值,比如border-color。\n","syntax":"\n### 语法\n```\ncolor: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| color | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/color)\n"},"display":{"name":"## display\n","description":"\nCSS display 属性设置元素是否被视为块或者内联元素以及用于子元素的布局,例如流式布局、网格布局或弹性布局。\n","syntax":"\n### 语法\n```\ndisplay: flex | none;\n```\n","values":"\n### 属性值\n\n`block`\n元素生成一个块级盒子\n\n\n`contents`\n元素本身不会生成任何盒子,但它的子元素和伪元素仍然正常生成盒子。\n\n\n`flex`\n该元素生成一个主要的 Flex 容器框并建立一个 Flex 格式化上下文。\n\n\n`flexbox`\n该元素使用流布局(块内联布局)来布局其内容。标准化为“柔性”。\n\n\n`flow-root`\n该元素生成一个块容器框,并使用流布局来布局其内容。\n\n\n`grid`\n该元素生成主网格容器框,并建立网格格式化上下文。\n\n\n`inline`\n该元素生成一个内联级别的框。\n\n\n`inline-block`\n内联块级元素,其本身作为单个内联框流动,类似于替换元素。内联块的内部被格式化为块框,并且框本身被格式化为内联框。\n\n\n`inline-flex`\n内联级弹性容器。\n\n\n`inline-flexbox`\n内联级弹性容器。标准化为“内联柔性”\n\n\n`inline-table`\n包含表格框的内联级表格包装框。\n\n\n`list-item`\n一个或多个块框和一个标记框。\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n`none`\n该元素及其后代不显示。\n\n\n`ruby`\n该元素生成一个主要的 ruby​​ 容器框,并建立一个 ruby​​ 格式化上下文。\n\n\n`ruby-base`\n\n\n\n`ruby-base-container`\n\n\n\n`ruby-text`\n\n\n\n`ruby-text-container`\n\n\n\n`run-in`\n该元素生成一个插入框。插入元素的行为类似于内联或块,具体取决于周围的元素。\n\n\n`table`\n该元素生成包含附加生成的表框的主表包装框,并建立表格式化上下文。\n\n\n`table-caption`\n\n\n\n`table-cell`\n\n\n\n`table-column`\n\n\n\n`table-column-group`\n\n\n\n`table-footer-group`\n\n\n\n`table-header-group`\n\n\n\n`table-row`\n\n\n\n`table-row-group`\n\n\n\n\n\n\n\n\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| display | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/display)\n"},"flex":{"name":"## flex\n","description":"\nflex CSS 简写属性设置了弹性项目如何增大或缩小以适应其弹性容器中可用的空间。\n","syntax":"\n### 语法\n```\nflex: initial | auto | none | [ <'flex-grow'> <'flex-shrink'>? <'flex-basis'> ];\n```\n","values":"\n### 属性值\n\n`auto`\n元素会根据自身的宽度与高度来确定尺寸,但是会伸长并吸收 flex 容器中额外的自由空间,也会缩短自身来适应 flex 容器。这相当于将属性设置为 \"flex: 1 1 auto\".\n\n\n`content`\n表示根据弹性项目的内容自动调整大小。\n\n\n`none`\n元素会根据自身宽高来设置尺寸。它是完全非弹性的:既不会缩短,也不会伸长来适应 flex 容器。相当于将属性设置为\"flex: 0 0 auto\"\n\n\n`initial`\n元素会根据自身宽高设置尺寸。它会缩短自身以适应 flex 容器,但不会伸长并吸收 flex 容器中的额外自由空间来适应 flex 容器。相当于将属性设置为\"flex: 0 1 auto\"\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex)\n"},"flex-basis":{"name":"## flex-basis\n","description":"\nCSS 属性 flex-basis 指定了 flex 元素在主轴方向上的初始大小。如果不使用 box-sizing 改变盒模型的话,那么这个属性就决定了 flex 元素的内容盒(content-box)的尺寸。\n","syntax":"\n### 语法\n```\nflex-basis: <number> | <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n检索主尺寸属性的值作为使用的“flex-basis”。\n\n\n`content`\n基于 flex 的元素的内容自动调整大小。\n \n**备注:**由于最初规范中没有包括这个值,在一些早期的浏览器实现的 flex 布局中,content 值无效,可以利用设置 (width 或 height) 为 auto 达到同样的效果。\n \n \n备注: 简史\n\n 最初,\"flex-basis:auto\" 的含义是 \"参照我的width和height属性\".\n 在此之后,\"flex-basis:auto\" 的含义变成了自动尺寸,而 \"main-size\" 变成了 \"参照我的width和height属性\"。实际执行于 bug 1032922.\n 然后呢,这个更改又在 bug 1093316 中被撤销了,所以 \"auto\" 变回了原来的含义; 而一个新的关键字 'content' 变成了自动尺寸。 (Firefox bug 1105111 包括了增加这个关键字).\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-basis | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-basis)\n"},"flex-direction":{"name":"## flex-direction\n","description":"\nCSS flex-direction 属性指定了内部元素是如何在 flex 容器中布局的,定义了主轴的方向 (正方向或反方向)。\n","syntax":"\n### 语法\n```\nflex-direction: row | row-reverse | column | column-reverse;\n```\n","values":"\n### 属性值\n\n`column`\nflex 容器的主轴和块轴相同。主轴起点与主轴终点和书写模式的前后点相同\n\n\n`column-reverse`\n表现和column相同,但是置换了主轴起点和主轴终点\n\n\n`row`\nflex 容器的主轴被定义为与文本方向相同。主轴起点和主轴终点与内容方向相同。\n\n\n`row-reverse`\n表现和 row 相同,但是置换了主轴起点和主轴终点\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-direction | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-direction)\n"},"flex-flow":{"name":"## flex-flow\n","description":"\nCSS flex-flow 属性是 flex-direction 和 flex-wrap 的简写。\n","syntax":"\n### 语法\n```\nflex-flow: <'flex-direction'> || <'flex-wrap'>;\n```\n","values":"\n### 属性值\n\n`column`\nFlex容器的主轴与当前写入模式的块轴具有相同的方向。\n\n\n`column-reverse`\n与“column”相同,只是交换了主起点和主终点方向。\n\n\n`nowrap`\nFlex 容器是单行的。\n\n\n`row`\nFlex容器的主轴与当前书写模式的内联轴具有相同的方向。\n\n\n`row-reverse`\n与“row”相同,只是交换了主起点和主终点方向。\n\n\n`wrap`\nFlexbox 是多行的。\n\n\n`wrap-reverse`\n与“wrap”相同,只是交叉起点和交叉终点方向交换了。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-flow | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-flow)\n"},"flex-grow":{"name":"## flex-grow\n","description":"\nCSS 属性 flex-grow CSS 设置 flex 项 主尺寸 的 flex 增长系数。\n","syntax":"\n### 语法\n```\nflex-grow: <number>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-grow | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-grow)\n"},"flex-shrink":{"name":"## flex-shrink\n","description":"\nCSS flex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。\n","syntax":"\n### 语法\n```\nflex-shrink: <number>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-shrink | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-shrink)\n"},"flex-wrap":{"name":"## flex-wrap\n","description":"\nCSS 的 flex-wrap 属性指定 flex 元素单行显示还是多行显示。如果允许换行,这个属性允许你控制行的堆叠方向。\n","syntax":"\n### 语法\n```\nflex-wrap: nowrap | wrap | wrap-reverse;\n```\n","values":"\n### 属性值\n\n`nowrap`\nflex 的元素被摆放到到一行,这可能导致 flex 容器溢出。cross-start 会根据 flex-direction 的值等价于 start 或 before。为该属性的默认值。\n\n\n`wrap`\nflex 元素 被打断到多个行中。cross-start 会根据 flex-direction 的值等价于 start 或before。cross-end 为确定的 cross-start 的另一端。\n\n\n`wrap-reverse`\n和 wrap 的行为一样,但是 cross-start 和 cross-end 互换。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-wrap | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-wrap)\n"},"font-family":{"name":"## font-family\n","description":"\nCSS 属性 font-family 允许您通过给定一个有先后顺序的,由字体名或者字体族名组成的列表来为选定的元素设置字体。\n","syntax":"\n### 语法\n```\nfont-family: <family-name>;\n```\n","values":"\n### 属性值\n\n`system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif`\n\n\n\n`Arial, Helvetica, sans-serif`\n\n\n\n`Cambria, Cochin, Georgia, Times, 'Times New Roman', serif`\n\n\n\n`'Courier New', Courier, monospace`\n\n\n\n`cursive`\n草书字体。这种字体有的有连笔,有的还有特殊的斜体效果。因为一般这种字体都有一点连笔效果,所以会给人一种手写的感觉。\n 例如:Brush Script MT、Brush Script Std、Lucida Calligraphy、Lucida Handwriting、Apple Chancery、cursive。\n\n\n`fantasy`\nFantasy 字体主要是那些具有特殊艺术效果的字体。\n 例如:Papyrus、Herculanum、Party LET、Curlz MT、Harrington、fantasy。\n\n\n`'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif`\n\n\n\n`Georgia, 'Times New Roman', Times, serif`\n\n\n\n`'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif`\n\n\n\n`Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif`\n\n\n\n`'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif`\n\n\n\n`monospace`\n等宽字体,即字体中每个字宽度相同。\n 例如:Fira Mono、DejaVu Sans Mono、Menlo、Consolas、Liberation Mono、Monaco、Lucida Console、monospace。\n\n\n`sans-serif`\n无衬线字体,即笔画结尾是平滑的字体。\n 例如:Open Sans、Fira Sans、Lucida Sans、Lucida Sans Unicode、Trebuchet MS、Liberation Sans、Nimbus Sans L、sans-serif。\n\n\n`'Segoe UI', Tahoma, Geneva, Verdana, sans-serif`\n\n\n\n`serif`\n带衬线字体,笔画结尾有特殊的装饰线或衬线。\n 例如:Lucida Bright、Lucida Fax、Palatino、Palatino Linotype、Palladio、URW Palladio、serif。\n\n\n`'Times New Roman', Times, serif`\n\n\n\n`'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif`\n\n\n\n`Verdana, Geneva, Tahoma, sans-serif`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-family | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-family)\n"},"font-size":{"name":"## font-size\n","description":"\nfont-size CSS 属性设置字体大小。更改字体大小还会更新字体大小相关的 <length> 单位,例如 em、ex 等。\n","syntax":"\n### 语法\n```\nfont-size: <length>;\n```\n","values":"\n### 属性值\n\n`large`\n\n\n\n`larger`\n\n\n\n`medium`\n\n\n\n`small`\n\n\n\n`smaller`\n\n\n\n`x-large`\n\n\n\n`x-small`\n\n\n\n`xx-large`\n\n\n\n`xx-small`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-size | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-size)\n"},"font-style":{"name":"## font-style\n","description":"\nfont-style CSS 属性允许你选择 font-family 字体下的 italic 或 oblique 样式。\n","syntax":"\n### 语法\n```\nfont-style: italic | normal;\n```\n","values":"\n### 属性值\n\n`italic`\n选择一种标记为“斜体”的字体,如果不是,则选择标记为“斜体”的字体\n\n\n`normal`\n选择被分类为“正常”的面孔。\n\n\n`oblique`\n选择一种标记为“斜体”的字体,如果不是,则选择标记为“斜体”的字体。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-style | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-style)\n"},"font-weight":{"name":"## font-weight\n","description":"\nfont-weight CSS 属性指定了字体的粗细程度。一些字体只提供 normal 和 bold 两种值。\n","syntax":"\n### 语法\n```\nfont-weight: normal | bold | 400 | 700;\n```\n","values":"\n### 属性值\n\n`100`\n薄的\n\n\n`200`\n超轻(超轻)\n\n\n`300`\n\n\n\n`400`\n普通的\n\n\n`500`\n中等的\n\n\n`600`\n半粗体(半粗体)\n\n\n`700`\n大胆的\n\n\n`800`\n超粗体(超粗体)\n\n\n`900`\n黑色(重)\n\n\n`bold`\n与700相同\n\n\n`bolder`\n指定比继承值更粗的面的粗细。\n\n\n`lighter`\n指定比继承值更轻的面的权重。\n\n\n`normal`\n与400相同\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-weight | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-weight)\n"},"height":{"name":"## height\n","description":"\nheight CSS 属性指定了一个元素的高度。默认情况下,这个属性决定的是内容区( content area)的高度,但是,如果将 box-sizing 设置为 border-box , 这个属性决定的将是边框区域(border area)的高度。\n","syntax":"\n### 语法\n```\nheight: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n高度取决于其他属性的值。\n\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| height | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/height)\n"},"justify-content":{"name":"## justify-content\n","description":"\nCSS justify-content 属性定义浏览器如何沿着弹性容器的主轴和网格容器的行向轴分配内容元素之间和周围的空间。\n","syntax":"\n### 语法\n```\njustify-content: center | flex-start | flex-end | space-between | space-around;\n```\n","values":"\n### 属性值\n\n`center`\n弹性商品朝生产线的中心方向包装。\n\n\n`start`\n物品在主轴上朝向对齐容器的起始边缘彼此齐平地包装。\n\n\n`end`\n物品沿主轴线朝向对准容器的端部边缘彼此齐平地包装。\n\n\n`left`\n物品沿主轴线朝向对齐容器的左边缘彼此齐平地包装。\n\n\n`right`\n物品沿主轴线朝向对齐容器的右边缘彼此齐平地包装。\n\n\n`safe`\n如果项目的大小溢出对齐容器,则该项目会像启动对齐模式一样进行对齐。\n\n\n`unsafe`\n无论项目和对齐容器的相对大小如何,都会遵循给定的对齐值。\n\n\n`stretch`\n如果对齐主题的组合大小小于对齐容器的大小,则任何自动调整大小的对齐主题的大小均等(不按比例)增加,同时仍然遵守 max-height/max-width (或等效功能)施加的约束,以便组合大小恰好填充对齐容器。\n\n\n`space-evenly`\n物品沿主轴线均匀分布在对齐容器内。\n\n\n`flex-end`\nFlex 商品在生产线末端进行包装。\n\n\n`flex-start`\nFlex 商品包装在生产线的开头。\n\n\n`space-around`\nFlex 项目均匀分布在行中,两端各有一半的空间。\n\n\n`space-between`\nFlex 项目均匀分布在行中。\n\n\n`baseline`\n指定参与第一基线对齐。\n\n\n`first baseline`\n指定参与第一基线对齐。\n\n\n`last baseline`\n指定参与最后基线对齐。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| justify-content | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/justify-content)\n"},"left":{"name":"## left\n","description":"\nCSS **left**属性定义了定位元素的左外边距边界与其包含块左边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\nleft: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n对于 non-replaced 元素,该值的效果取决于哪些相关属性也具有“自动”的值\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| left | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/left)\n"},"line-height":{"name":"## line-height\n","description":"\nline-height CSS 属性用于设置多行元素的空间量,如多行文本的间距。对于块级元素,它指定元素行盒(line boxes)的最小高度。对于非替代的 inline 元素,它用于计算行盒(line box)的高度。\n","syntax":"\n### 语法\n```\nline-height: <length>;\n```\n","values":"\n### 属性值\n\n`normal`\n取决于用户代理。桌面浏览器(包括 Firefox)使用默认值,约为 1.2*,这取决于元素的 font-family。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| line-height | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/line-height)\n"},"margin":{"name":"## margin\n","description":"\nmargin 属性为给定元素设置所有四个(上下左右)方向的外边距属性。也就是 margin-top,margin-right,margin-bottom,和 margin-left 四个外边距属性设置的简写。\n","syntax":"\n### 语法\n```\nmargin: [ <length> | <percentage> ]{1,4};\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin)\n"},"margin-bottom":{"name":"## margin-bottom\n","description":"\n用于设置边距区域厚度值的简写属性。如果 left 省略,则与 right 相同。如果省略bottom,则与top相同;如果省略right,则与top相同。边距属性允许使用负值,但可能存在特定于实现的限制。\n","syntax":"\n### 语法\n```\nmargin-bottom: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-bottom | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-bottom)\n"},"margin-left":{"name":"## margin-left\n","description":"\nmargin-left 属性 设置与元素相关联的盒子模型的左外边距。这个值可以为负值。\n","syntax":"\n### 语法\n```\nmargin-left: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-left | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-left)\n"},"margin-right":{"name":"## margin-right\n","description":"\nmargin-right 属性 设置与元素相关联的盒子模型的右外边距。这个值可以为负值。\n","syntax":"\n### 语法\n```\nmargin-right: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-right | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-right)\n"},"margin-top":{"name":"## margin-top\n","description":"\nmargin-top CSS 属性用于设置元素的顶部外边距外边距区域。正值使它离相邻元素更远,而负值使它更靠近相邻元素。\n","syntax":"\n### 语法\n```\nmargin-top: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-top | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-top)\n"},"max-height":{"name":"## max-height\n","description":"\nCSS属性 max-height 设置元素的最大高度。它防止height属性的使用值(used value)大于 max-height 的指定值。\n","syntax":"\n### 语法\n```\nmax-height: <length>;\n```\n","values":"\n### 属性值\n\n`none`\n盒子的高度没有限制。\n\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| max-height | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-height)\n"},"max-width":{"name":"## max-width\n","description":"\nmax-width 属性用来给元素设置最大宽度值。定义了 max-width 的元素会在达到 max-width 值之后避免进一步按照 width 属性设置变大。\n","syntax":"\n### 语法\n```\nmax-width: <length>;\n```\n","values":"\n### 属性值\n\n`none`\n盒子的宽度没有限制。\n\n\n`fit-content`\nUse the fit-content inline size or fit-content block size, as appropriate to the writing mode.\n\n\n`max-content`\nUse the max-content inline size or max-content block size, as appropriate to the writing mode.\n\n\n`min-content`\nUse the min-content inline size or min-content block size, as appropriate to the writing mode.\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| max-width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-width)\n"},"min-height":{"name":"## min-height\n","description":"\nCSS 属性 min-height 能够设置元素的最小高度。这样能够防止 height 属性的应用值小于 min-height 的值。\n","syntax":"\n### 语法\n```\nmin-height: <length>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| min-height | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-height)\n"},"min-width":{"name":"## min-width\n","description":"\nmin-width 属性为给定元素设置最小宽度。它可以阻止 width 属性的应用值小于 min-width 的值。\n","syntax":"\n### 语法\n```\nmin-width: <length>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n\n\n`fit-content`\n使用 fit-content 的内联尺寸或 fit-content 的块大小,适合writing-mode。\n\n\n`max-content`\nUse the max-content inline size or max-content block size, as appropriate to the writing mode.\n\n\n`min-content`\nUse the min-content inline size or min-content block size, as appropriate to the writing mode.\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| min-width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-width)\n"},"opacity":{"name":"## opacity\n","description":"\nopacity 属性指定了一个元素的不透明度。换言之,opacity 属性指定了一个元素后面的背景的被覆盖程度。\n","syntax":"\n### 语法\n```\nopacity: <alpha-value>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| opacity | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/opacity)\n"},"overflow":{"name":"## overflow\n","description":"\noverflow 是 CSS 的简写属性,其设置了元素溢出时所需的行为——即当元素的内容太大而无法适应它的块级格式化上下文时。\n","syntax":"\n### 语法\n```\noverflow: visible | hidden;\n```\n","values":"\n### 属性值\n\n`auto`\n“auto”值的行为取决于 UA,但应该为溢出的框提供滚动机制。\n\n\n`hidden`\n内容被剪切,并且不应提供滚动机制来查看剪切区域之外的内容。\n\n\n\n\n`scroll`\n内容被剪辑,如果用户代理使用屏幕上可见的滚动机制(例如滚动条或平移​​器),则无论其任何内容是否被剪辑,都应该为框显示该机制。\n\n\n`visible`\n内容不会被剪裁,即,它可能会呈现在内容框之外。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| overflow | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow)\n"},"padding":{"name":"## padding\n","description":"\npadding CSS 简写属性控制元素所有四条边的内边距区域。\n","syntax":"\n### 语法\n```\npadding: [ <length> | <percentage> ]{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding)\n"},"padding-bottom":{"name":"## padding-bottom\n","description":"\nCSS 属性 padding-bottom 是指一个元素在内边距区域(padding area)中下方的高度。内边距(padding)是指一个元素的内容和边框之间的区域。和外边距(margin)不同,内边距(padding)是不允许有负值的。内边距(padding)可以用四个值声明一个元素的四个方向的内边距(paddings),这是一种 CSS 缩写属性。\n","syntax":"\n### 语法\n```\npadding-bottom: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-bottom | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-bottom)\n"},"padding-left":{"name":"## padding-left\n","description":"\nCSS 属性 padding-left 是指一个元素在内边距区域(padding area)中左边的宽度。内边距(padding)是指一个元素的内容和边框之间的区域。\n","syntax":"\n### 语法\n```\npadding-left: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-left | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-left)\n"},"padding-right":{"name":"## padding-right\n","description":"\nCSS 属性 padding-right 是指一个元素在内边距区域(padding area)中右边的宽度。内边距(padding)是指一个元素的内容和边框之间的区域。和外边距(margin)不同,内边距(padding)是不允许有负值的。内边距(padding)可以用四个值声明一个元素的四个方向的内边距(paddings),这是一种 CSS 缩写属性。\n","syntax":"\n### 语法\n```\npadding-right: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-right | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-right)\n"},"padding-top":{"name":"## padding-top\n","description":"\nCSS 属性 padding-top 是指一个元素在内边距区域(padding area)中上方的高度。内边距(padding)是指一个元素的内容和边框之间的区域。和外边距(margin)不同,内边距(padding)是不允许有负值的。内边距(padding)可以用四个值声明一个元素的四个方向的内边距(paddings),这是一种 CSS 缩写属性。\n","syntax":"\n### 语法\n```\npadding-top: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-top | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-top)\n"},"position":{"name":"## position\n","description":"\nCSS position 属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。\n","syntax":"\n### 语法\n```\nposition: relative | absolute | fixed | static | sticky;\n```\n","values":"\n### 属性值\n\n`absolute`\n元素会被移出正常文档流,并不为元素预留空间,通过指定元素相对于最近的非 static 定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margins),且不会与其他边距合并。\n\n\n`fixed`\n元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform、perspective、filter 或 backdrop-filter 属性非 none 时,容器由视口改为该祖先。\n\n\n\n\n`relative`\n该关键字下,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)。position:relative 对 table-*-group, table-row, table-column, table-cell, table-caption 元素无效。\n\n\n`static`\n该关键字指定元素使用正常的布局行为,即元素在文档常规流中当前的布局位置。此时 top, right, bottom, left 和 z-index 属性无效。\n\n\n`sticky`\n元素根据正常文档流进行定位,然后相对它的最近滚动祖先(nearest scrolling ancestor)和 containing block(最近块级祖先 nearest block-level ancestor),包括 table-related 元素,基于 top、right、bottom 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。\n 该值总是创建一个新的层叠上下文(stacking context)。注意,一个 sticky 元素会“固定”在离它最近的一个拥有“滚动机制”的祖先上(当该祖先的 overflow 是 hidden、scroll、auto 或 overlay 时),即便这个祖先不是最近的真实可滚动祖先。这有效地抑制了任何“sticky”行为(详情见 Github issue on W3C CSSWG)。\n\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| position | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| static | 4.4 | √ | x | 9.0 | √ | x |\n| sticky | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/position)\n"},"right":{"name":"## right\n","description":"\nright CSS 属性定义了定位元素的右外边距边界与其包含块右边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\nright: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n这个关键字表示:\n \n 对于绝对定位元素,元素将忽略此属性而以 left 属性为准,如果此时设置 width: auto,将基于内容需要的宽度设置宽度;如果 left 也为 auto 的话,元素的水平位置就是它假如作为静态(即 static)元素时该在的位置。\n 对于相对定位元素,元素相对正常位置的偏移量将基于 left 属性;如果 left 也为 auto 的话,元素将不会有偏移。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| right | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/right)\n"},"text-align":{"name":"## text-align\n","description":"\ntext-align CSS 属性定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐。\n","syntax":"\n### 语法\n```\ntext-align: left | center | right;\n```\n","values":"\n### 属性值\n\n`center`\n内联内容在行框内居中。\n\n\n`end`\n内联内容与行框的末端边缘对齐。\n\n\n`justify`\n文本根据“text-justify”属性指定的方法进行对齐。\n\n\n`left`\n内联内容与行框的左边缘对齐。在垂直文本中,“左”与行框的边缘对齐,该边缘将是从左到右文本的起始边缘。\n\n\n`right`\n内联内容与行框的右边缘对齐。在垂直文本中,“右”与行框的边缘对齐,该边缘将是从左到右文本的结束边缘。\n\n\n`start`\n内联内容与行框的起始边缘对齐。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-align | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-align)\n"},"text-decoration":{"name":"## text-decoration\n","description":"\ntext-decoration 简写 CSS 属性设置文本上的装饰性线条的外观。它是 text-decoration-line、text-decoration-color、text-decoration-style 和较新的 text-decoration-thickness 属性的缩写。\n","syntax":"\n### 语法\n```\ntext-decoration: <'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>;\n```\n","values":"\n### 属性值\n\n`dashed`\n产生虚线样式。\n\n\n`dotted`\n产生一条虚线。\n\n\n`double`\n产生双线。\n\n\n`line-through`\n每行文本中间都有一条线。\n\n\n`none`\n不产生任何线条。\n\n\n`overline`\n每行文本上方都有一行。\n\n\n`solid`\n产生实线。\n\n\n`underline`\n每行文本都带有下划线。\n\n\n`wavy`\n产生一条波浪线。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration | 4.4 | √ | x | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration)\n"},"text-decoration-color":{"name":"## text-decoration-color\n","description":"\nCSS 属性 text-decoration-color 用于设置文本修饰线的颜色,文本修饰线是通过 text-decoration-line 属性指定的。\n","syntax":"\n### 语法\n```\ntext-decoration-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-color | 4.4 | √ | x | 9.0 | √ | - |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-color | √( 57 ) | √( 79 ) | √( 36 ) | √( 44 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-color)\n"},"text-decoration-line":{"name":"## text-decoration-line\n","description":"\nCSS 属性 text-decoration-line 用于设置元素中的文本的修饰类型。当要设置多个线修饰属性时,用 text-decoration 简写属性会比分别写多个属性更方便。\n","syntax":"\n### 语法\n```\ntext-decoration-line: underline | line-through | overline;\n```\n","values":"\n### 属性值\n\n`line-through`\n每行文本中间都有一条线。\n\n\n`none`\n既不产生也不抑制文本装饰。\n\n\n`overline`\n每行文本上方都有一行。\n\n\n`underline`\n每行文本都带有下划线。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-line | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| overline | 4.4 | √ | x | 9.0 | √ | x |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-line | √( 57 ) | √( 79 ) | √( 36 ) | √( 44 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-line)\n"},"text-decoration-style":{"name":"## text-decoration-style\n","description":"\nCSS 属性 text-decoration-style 用于设置由 text-decoration-line 设定的线的样式。线的样式会应用到所有被 text-decoration-line 设定的线,不能为其中的每条线设置不同的样式。当要设置多个线修饰属性时,用 text-decoration 简写属性会比分别写多个属性更方便。\n","syntax":"\n### 语法\n```\ntext-decoration-style: solid | dashed | dotted | wavy;\n```\n","values":"\n### 属性值\n\n`dashed`\n产生虚线样式。\n\n\n`dotted`\n产生一条虚线。\n\n\n`double`\n产生双线。\n\n\n`none`\n不产生任何线条。\n\n\n`solid`\n产生实线。\n\n\n`wavy`\n产生一条波浪线。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-style | 4.4 | √ | x | 9.0 | √ | - |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-style | √( 57 ) | √( 79 ) | √( 36 ) | √( 44 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-style)\n"},"text-overflow":{"name":"## text-overflow\n","description":"\ntext-overflow CSS 属性用于确定如何提示用户存在隐藏的溢出内容。其形式可以是裁剪、显示一个省略号(“…”)或显示一个自定义字符串。\n","syntax":"\n### 语法\n```\ntext-overflow: clip | ellipsis;\n```\n","values":"\n### 属性值\n\n`clip`\n剪辑溢出的内联内容。角色可能仅部分呈现。\n\n\n`ellipsis`\n渲染省略号字符 (U+2026) 以表示剪辑的内联内容。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-overflow | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-overflow)\n"},"top":{"name":"## top\n","description":"\ntop样式属性定义了定位元素的上外边距边界与其包含块上边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\ntop: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n这个关键字表示:\n \n 对于绝对定位元素,元素将忽略此属性已bottom属性为准,如果此时设置height: auto,将基于内容需要的高度设置高度;如果bottom也为auto的话,元素的垂直位置就是它假如作为静态 (即 static) 元素时该在的位置。\n 对于相对定位元素,元素相对正常位置的偏移量将基于bottom属性;如果bottom也为auto的话,元素将不会有偏移。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| top | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/top)\n"},"transform":{"name":"## transform\n","description":"\nCSS transform 属性允许你旋转,缩放,倾斜或平移给定元素。这是通过修改 CSS 视觉格式化模型的坐标空间来实现的。\n","syntax":"\n### 语法\n```\ntransform: <transform-list>;\n```\n","values":"\n### 属性值\n\n`matrix()`\n以六个值的变换矩阵的形式指定 2D 变换。Matrix(a,b,c,d,e,f) 相当于应用变换矩阵 \\[abcdef\\]\n\n\n`matrix3d()`\n将 3D 变换指定为由 16 个值(按列优先顺序)组成的 4x4 齐次矩阵。\n\n\n`none`\n\n\n\n`perspective()`\n指定透视投影矩阵。\n\n\n`rotate()`\n按参数中指定的角度指定关于元素原点的 2D 旋转,如 Transform-origin 属性所定义。\n\n\n`rotate3d()`\n指定围绕前 3 个参数描述的 \\[x,y,z\\] 方向向量按最后一个参数中指定的角度进行顺时针 3D 旋转。\n\n\n`rotateX('angle')`\n指定绕 X 轴顺时针旋转给定角度。\n\n\n`rotateY('angle')`\n指定绕 Y 轴顺时针旋转给定角度。\n\n\n`rotateZ('angle')`\n指定绕 Z 轴顺时针旋转给定角度。\n\n\n`scale()`\n通过 2 个参数描述的 \\[sx,sy\\] 缩放向量指定 2D 缩放操作。如果未提供第二个参数,则其值等于第一个参数。\n\n\n`scale3d()`\n通过 3 个参数描述的 \\[sx,sy,sz\\] 缩放向量指定 3D 缩放操作。\n\n\n`scaleX()`\n使用 \\[sx,1\\] 缩放向量指定缩放操作,其中 sx 作为参数给出。\n\n\n`scaleY()`\n使用 \\[sy,1\\] 缩放向量指定缩放操作,其中 sy 作为参数给出。\n\n\n`scaleZ()`\n使用 \\[1,1,sz\\] 缩放向量指定缩放操作,其中 sz 作为参数给出。\n\n\n`skew()`\n指定沿 X 轴和 Y 轴的倾斜变换。第一个角度参数指定 X 轴上的倾斜。第二个角度参数指定 Y 轴上的倾斜。如果未给出第二个参数,则 Y 角度使用值 0(即:Y 轴上没有倾斜)。\n\n\n`skewX()`\n指定沿 X 轴按给定角度进行倾斜变换。\n\n\n`skewY()`\n指定沿 Y 轴按给定角度进行倾斜变换。\n\n\n`translate()`\n通过向量 \\[tx, ty\\] 指定 2D 平移,其中 tx 是第一个平移值参数,ty 是可选的第二个平移值参数。\n\n\n`translate3d()`\n通过向量 \\[tx,ty,tz\\] 指定 3D 平移,其中 tx、ty 和 tz 分别是第一、第二和第三平移值参数。\n\n\n`translateX()`\n指定 X 方向上给定量的平移。\n\n\n`translateY()`\n指定 Y 方向上给定量的平移。\n\n\n`translateZ()`\n指定 Z 方向上给定量的平移。请注意,translateZ 翻译值中不允许使用百分比值,如果存在,则计算为 0。\n\n\n`rotate(\\<angle\\>)`\n\n\n\n`rotateX(\\<angle\\>)`\n\n\n\n`rotateY(\\<angle\\>)`\n\n\n\n`rotateZ(\\<angle\\>)`\n\n\n\n`scale(\\<number\\> \\<number\\>)`\n\n\n\n`scaleX(\\<number\\>)`\n\n\n\n`scaleY(\\<number\\>)`\n\n\n\n`translate(\\<length/percentage\\> \\<length/percentage\\>)`\n\n\n\n`translateX(\\<length/percentage\\>)`\n\n\n\n`translateY(\\<length/percentage\\>)`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transform | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform)\n"},"transition":{"name":"## transition\n","description":"\ntransition CSS 属性是 transition-property、transition-duration、transition-timing-function 和 transition-delay 的一个简写属性 (en-US)。\n","syntax":"\n### 语法\n```\ntransition: <single-transition>#;\n```\n","values":"\n### 属性值\n\n`all`\n每一个能够经历改变的属性都会应用。\n\n\n`none`\n不会发生转变。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition)\n"},"transition-delay":{"name":"## transition-delay\n","description":"\nCSS 的transition-delay属性规定了在过渡效果开始作用之前需要等待的时间。值以秒(s)或毫秒(ms)为单位,表明动画过渡效果将在何时开始。取值为正时会延迟一段时间来响应过渡效果;取值为负时会导致过渡立即开始。你可以指定多个延迟时间,每个延迟将会分别作用于你所指定的相符合的 css 属性(transition-property)\n","syntax":"\n### 语法\n```\ntransition-delay: <time>#;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-delay | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-delay)\n"},"transition-duration":{"name":"## transition-duration\n","description":"\ntransition-duration 属性以秒或毫秒为单位指定过渡动画所需的时间。默认值为 0s,表示不出现过渡动画。可以指定多个时长,每个时长会被应用到由 transition-property 指定的对应属性上。如果指定的时长个数小于属性个数,那么时长列表会重复。如果时长列表更长,那么该列表会被裁减。两种情况下,属性列表都保持不变。\n","syntax":"\n### 语法\n```\ntransition-duration: <time>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-duration | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-duration)\n"},"transition-property":{"name":"## transition-property\n","description":"\ntransition-property 指定应用过渡属性的名称。\n","syntax":"\n### 语法\n```\ntransition-property: <single-transition-property>#;\n```\n","values":"\n### 属性值\n\n`all`\n所有可被动画的属性都表现出过渡动画。\n\n\n`none`\n没有过渡动画。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-property | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-property)\n"},"transition-timing-function":{"name":"## transition-timing-function\n","description":"\nCSS 属性受到 transition effect的影响,会产生不断变化的中间值,而 CSS transition-timing-function 属性用来描述这个中间值是怎样计算的。实质上,通过这个函数会建立一条加速度曲线,因此在整个 transition 变化过程中,变化速度可以不断改变。这条加速度曲线被<timing-function> (en-US)所定义,之后作用到每个 CSS 属性的过渡。你可以规定多个 timing function,通过使用 transition-property属性,可以根据主列表 (transition property 的列表) 给每个 CSS 属性应用相应的 timing function.如果 timing function 的个数比主列表中数量少,缺少的值被设置为初始值(ease) 。如果 timing function 比主列表要多,timing function 函数列表会被截断至合适的大小。这两种情况下声明的 CSS 属性都是有效的。\n","syntax":"\n### 语法\n```\ntransition-timing-function: <easing-function>#;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-timing-function | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-timing-function)\n"},"visibility":{"name":"## visibility\n","description":"\nvisibility CSS 属性显示或隐藏元素而不更改文档的布局。该属性还可以隐藏 <table> 中的行或列。\n","syntax":"\n### 语法\n```\nvisibility: visible | hidden;\n```\n","values":"\n### 属性值\n\n`collapse`\n特定桌子。 如果在行,行组,列或列组以外的其他元素上使用,则“collapse”的含义与“hidden”相同。\n\n\n`hidden`\nThe generated box is invisible (fully transparent, nothing is drawn), but still affects layout.\n\n\n`visible`\nThe generated box is visible.\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| visibility | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/visibility)\n"},"width":{"name":"## width\n","description":"\nwidth 属性用于设置元素的宽度。width 默认设置内容区域的宽度,但如果 box-sizing 属性被设置为 border-box,就转而设置边框区域的宽度。\n","syntax":"\n### 语法\n```\nwidth: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n宽度取决于其他属性的值。\n\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| width | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/width)\n"},"z-index":{"name":"## z-index\n","description":"\nz-index 属性设定了一个定位元素及其后代元素或 flex 项目的 z-order。当元素之间重叠的时候,z-index 较大的元素会覆盖较小的元素在上层进行显示。\n","syntax":"\n### 语法\n```\nz-index: <integer>;\n```\n","values":"\n### 属性值\n\n`auto`\n盒子不会创建一个新的本地堆叠上下文。在当前堆叠上下文中生成的盒子的堆叠层级和父级盒子相同。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| z-index | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/z-index)\n"},"text-decoration-thickness":{"name":"## text-decoration-thickness\n","description":"\nCSS 属性 text-decoration-thickness 用于设置元素中文本所使用的装饰线(如 line-through、underline 或 overline)的笔触厚度。\n","syntax":"\n### 语法\n```\ntext-decoration-thickness: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-thickness | 4.4 | √ | x | 9.0 | √ | - |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-thickness | √( 89 ) | √( 89 ) | √( 70 ) | √( 75 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness)\n"},"lines":{"name":"## lines\n","description":"","syntax":"\n### 语法\n```\nlines: <integer>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| lines | 4.4 | √ | 4.0.0 | 9.0 | √ | - |\n","reference":""}} {"align-content":{"name":"## align-content\n","description":"\nCSS 的 align-content 属性设置了浏览器如何沿着弹性盒子布局的纵轴和网格布局的主轴在内容项之间和周围分配空间。\n","syntax":"\n### 语法\n```\nalign-content: center | flex-start | flex-end | space-between | space-around | stretch;\n```\n","values":"\n### 属性值\n\n`center`\n所有行朝向容器的中心填充。每行互相紧挨,相对于容器居中对齐。容器的垂直轴起点边和第一行的距离相等于容器的垂直轴终点边和最后一行的距离。\n\n\n`flex-start`\n所有行从垂直轴起点开始填充。第一行的垂直轴起点边和容器的垂直轴起点边对齐。接下来的每一行紧跟前一行。\n\n\n`flex-end`\n所有行从垂直轴末尾开始填充。最后一行的垂直轴终点和容器的垂直轴终点对齐。同时所有后续行与前一个对齐。\n\n\n`space-between`\n所有行在容器中平均分布。相邻两行间距相等。容器的垂直轴起点边和终点边分别与第一行和最后一行的边对齐。\n\n\n`space-around`\n所有行在容器中平均分布,相邻两行间距相等。容器的垂直轴起点边和终点边分别与第一行和最后一行的距离是相邻两行间距的一半。\n\n\n`stretch`\n拉伸所有行来填满剩余空间。剩余空间平均地分配给每一行。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| align-content | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-content)\n"},"align-items":{"name":"## align-items\n","description":"\nCSS align-items 属性将所有直接子节点上的 align-self 值设置为一个组。align-self 属性设置项目在其包含块中在交叉轴方向上的对齐方式。\n","syntax":"\n### 语法\n```\nalign-items: center | flex-start | flex-end | stretch | baseline;\n```\n","values":"\n### 属性值\n\n`center`\n元素在侧轴居中。如果元素在侧轴上的高度高于其容器,那么在两个方向上溢出距离相同。\n\n\n`flex-start`\n元素向侧轴起点对齐。\n\n\n`flex-end`\n元素向侧轴终点对齐。\n\n\n`stretch`\n弹性项包含外边距的交叉轴尺寸被拉升至行高\n\n\n`baseline`\n所有元素向基线对齐。侧轴起点到元素基线距离最大的元素将会于侧轴起点对齐以确定基线。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| align-items | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| baseline | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-items)\n"},"align-self":{"name":"## align-self\n","description":"\nCSS 属性 align-self 会对齐当前 grid 或 flex 行中的元素,并覆盖已有的 align-items 的值。In Grid, it aligns the item inside the grid area. 在 Flexbox 中,会按照 cross axis(当前 flex 元素排列方向的垂直方向)进行排列。\n","syntax":"\n### 语法\n```\nalign-self: center | flex-start | flex-end | stretch | baseline;\n```\n","values":"\n### 属性值\n\n`center`\n弹性项目的边距框位于该行内横轴的中心。\n\n\n`flex-start`\nFlex 项目的交叉起始边距边缘与线的交叉起始边缘齐平放置。\n\n\n`flex-end`\n弹性项目的交叉端边距边缘与线的交叉端边缘齐平。\n\n\n`stretch`\n如果 Flex 项目的 cross size 属性计算为 auto,并且两个横轴边距都不是 auto,则 Flex 项目将被拉伸。\n\n\n`baseline`\n如果弹性项目的内联轴与交叉轴相同,则该值与“flex-start”相同。否则,它参与基线对齐。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| align-self | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| baseline | 4.4 | √ | x | 9.0 | √ | x |\n","reference":""},"background":{"name":"## background\n","description":"\nbackground 是一种 CSS 简写属性,用于一次性集中定义各种背景属性,包括 color, image, origin 与 size, repeat 方式等等。\n","syntax":"\n### 语法\n```\nbackground: <'background-color'> | <'background-image'>;\n```\n","values":"\n### 属性值\n\n`fixed`\n背景相对于视口是固定的。 在没有视口的分页媒体中,“固定”背景相对于页面框是固定的,因此会在每个页面上复制。\n\n\n`local`\n背景相对于元素的内容是固定的:如果元素具有滚动机制,则背景随元素的内容滚动。\n\n\n`none`\n值“none”算作图像层,但不绘制任何内容。\n\n\n`scroll`\n背景相对于元素本身是固定的,并且不会随其内容滚动。(它有效地附加到元素的边框。)\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background)\n"},"background-clip":{"name":"## background-clip\n","description":"\nbackground-clip 设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面。\n","syntax":"\n### 语法\n```\nbackground-clip: border-box | padding-box | content-box;\n```\n","values":"\n### 属性值\n\n`border-box`\n\n\n\n`padding-box`\n\n\n\n`content-box`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background-clip | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| padding-box | 4.4 | √ | x | 9.0 | √ | x |\n| content-box | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-clip)\n"},"background-color":{"name":"## background-color\n","description":"\nCSS属性中的 background-color 会设置元素的背景色,属性的值为颜色值或关键字\"transparent\"二者选其一。\n","syntax":"\n### 语法\n```\nbackground-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background-color | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-color)\n"},"background-image":{"name":"## background-image\n","description":"\nCSS background-image 属性用于为一个元素设置一个或者多个背景图像。\n","syntax":"\n### 语法\n```\nbackground-image: <gradient>;\n```\n","values":"\n### 属性值\n\n`linear-gradient`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| background-image | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-image)\n"},"border":{"name":"## border\n","description":"\nCSS 的 border 属性是一个用于设置各种单独的边界属性的简写属性。border 可以用于设置一个或多个以下属性的值:border-width、border-style、border-color。\n","syntax":"\n### 语法\n```\nborder: <'border-width'> || <'border-style'> || <'border-color'>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border)\n"},"border-bottom-color":{"name":"## border-bottom-color\n","description":"\nborder-bottom-color 属性设置一个元素底部边框的颜色。应当指出,在多数情况下,CSS 简写属性 border-color 或 border-bottom 更方便实用。\n","syntax":"\n### 语法\n```\nborder-bottom-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-color | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-color)\n"},"border-bottom-left-radius":{"name":"## border-bottom-left-radius\n","description":"\nborder-bottom-left-radius 这个 css 属性设置元素左下角的圆角。圆角可以是圆或椭圆(注:应为圆或椭圆的一部分),或者当其中一个值为 0 时,圆角将不被设置,这时这个角将展示为直角。\n","syntax":"\n### 语法\n```\nborder-bottom-left-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-left-radius | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius)\n"},"border-bottom-right-radius":{"name":"## border-bottom-right-radius\n","description":"\nborder-bottom-right-radius CSS 属性设置元素右下角的圆角。\n","syntax":"\n### 语法\n```\nborder-bottom-right-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-right-radius | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius)\n"},"border-bottom-style":{"name":"## border-bottom-style\n","description":"\nborder-bottom-style CSS 属性设置元素底部边框的线条样式。\n","syntax":"\n### 语法\n```\nborder-bottom-style: <enum>;\n```\n","values":"\n### 属性值\n\n`solid`\n\n\n\n`dashed`\n\n\n\n`dotted`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-style | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-style)\n"},"border-bottom-width":{"name":"## border-bottom-width\n","description":"\nCSS 属性 border-bottom-width 设置一个元素的底部边框宽度。\n","syntax":"\n### 语法\n```\nborder-bottom-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-bottom-width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-width)\n"},"border-color":{"name":"## border-color\n","description":"\nCSS 属性 border-color 是一个用于设置元素四个边框颜色的快捷属性: border-top-color、border-right-color、border-bottom-color、border-left-color。\n","syntax":"\n### 语法\n```\nborder-color: <color>{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-color | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-color)\n"},"border-left-color":{"name":"## border-left-color\n","description":"\nborder-left-color 属性设置元素的左边框颜色。值得注意的是,在大数情况下使用 border-color 或 border-left 更加方便和普遍。\n","syntax":"\n### 语法\n```\nborder-left-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-left-color | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-color)\n"},"border-left-style":{"name":"## border-left-style\n","description":"\nborder-left-style CSS 属性设置元素左边框的线条样式。\n","syntax":"\n### 语法\n```\nborder-left-style: <enum>;\n```\n","values":"\n### 属性值\n\n`solid`\n\n\n\n`dashed`\n\n\n\n`dotted`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-left-style | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-style)\n"},"border-left-width":{"name":"## border-left-width\n","description":"\nCSS 的 border-left-width 属性用来设置盒子的左边框的宽度。\n","syntax":"\n### 语法\n```\nborder-left-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-left-width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-width)\n"},"border-radius":{"name":"## border-radius\n","description":"\nCSS 属性 border-radius 允许你设置元素的外边框圆角。当使用一个半径时确定一个圆形,当使用两个半径时确定一个椭圆。这个(椭)圆与边框的交集形成圆角效果。\n","syntax":"\n### 语法\n```\nborder-radius: <length>{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-radius | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-radius)\n"},"border-right-color":{"name":"## border-right-color\n","description":"\nborder-right-color CSS 属性用来设置元素右边的 border. 这个属性的值也可以通过简写的 CSS 属性 border-color 或border-right来设置。\n","syntax":"\n### 语法\n```\nborder-right-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-right-color | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-color)\n"},"border-right-style":{"name":"## border-right-style\n","description":"\nborder-right-style 是 border 中的一个 CSS 子属性,描述的是右边框的样式 border.\n","syntax":"\n### 语法\n```\nborder-right-style: <enum>;\n```\n","values":"\n### 属性值\n\n`solid`\n\n\n\n`dashed`\n\n\n\n`dotted`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-right-style | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-style)\n"},"border-right-width":{"name":"## border-right-width\n","description":"\nCSS 的**border-right-width** 用来设置盒子右边框的宽度。\n","syntax":"\n### 语法\n```\nborder-right-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-right-width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-width)\n"},"border-style":{"name":"## border-style\n","description":"\nborder-style 是一个 CSS 简写属性,用来设定元素所有边框的样式。\n","syntax":"\n### 语法\n```\nborder-style: <enum>{1,4};\n```\n","values":"\n### 属性值\n\n`solid`\n\n\n\n`dashed`\n\n\n\n`dotted`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-style | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-style)\n"},"border-top-color":{"name":"## border-top-color\n","description":"\nborder-top-color 属性用以设置某元素顶部 border的颜色。通常,用border-color 或 border-top 设置该颜色更为便捷可取。\n","syntax":"\n### 语法\n```\nborder-top-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-color | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-color)\n"},"border-top-left-radius":{"name":"## border-top-left-radius\n","description":"\nborder-top-left-radius 用来设置元素左上角的圆角效果。这段圆弧(角)可以是圆或椭圆的一部分。如果其中有一个值为 0,那么将无圆角效果(见 border-top-left-radius 取值方式)。\n","syntax":"\n### 语法\n```\nborder-top-left-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-left-radius | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius)\n"},"border-top-right-radius":{"name":"## border-top-right-radius\n","description":"\nborder-top-right-radius 属性设置元素的右上角弧形,这个圆弧可能是一个椭圆,或者其中一个值是 0 的话,就是没有圆弧,换句话就是说拐角是方形的。\n","syntax":"\n### 语法\n```\nborder-top-right-radius: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-right-radius | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius)\n"},"border-top-style":{"name":"## border-top-style\n","description":"\nborder-top-style CSS 设置元素上边框的 border.\n","syntax":"\n### 语法\n```\nborder-top-style: <enum>;\n```\n","values":"\n### 属性值\n\n`solid`\n\n\n\n`dashed`\n\n\n\n`dotted`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-style | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-style)\n"},"border-top-width":{"name":"## border-top-width\n","description":"\ncss 属性 border-top-width 是用于设置盒模型的上边框的宽度\n","syntax":"\n### 语法\n```\nborder-top-width: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-top-width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-width)\n"},"border-width":{"name":"## border-width\n","description":"\nborder-width 属性可以设置盒子模型的边框宽度。\n","syntax":"\n### 语法\n```\nborder-width: <length>{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| border-width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-width)\n"},"bottom":{"name":"## bottom\n","description":"\nbottom样式属性定义了定位元素下外边距边界与其包含块下边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\nbottom: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n对于非替换元素,该值的效果取决于哪些相关属性也具有值“auto”\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| bottom | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/bottom)\n"},"box-shadow":{"name":"## box-shadow\n","description":"\nCSS box-shadow 属性用于在元素的框架上添加阴影效果。你可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。该属性可设置的值包括阴影的 X 轴偏移量、Y 轴偏移量、模糊半径、扩散半径和颜色。\n","syntax":"\n### 语法\n```\nbox-shadow: <shadow>;\n```\n","values":"\n### 属性值\n\n`inset`\n如果没有指定inset,默认阴影在边框外,即阴影向外扩散。\n 使用 inset 关键字会使得阴影落在盒子内部,这样看起来就像是内容被压低了。此时阴影会在边框之内 (即使是透明边框)、背景之上、内容之下。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| box-shadow | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-shadow)\n"},"box-sizing":{"name":"## box-sizing\n","description":"\nCSS 中的 box-sizing 属性定义了 user agent 应该如何计算一个元素的总宽度和总高度。\n","syntax":"\n### 语法\n```\nbox-sizing: content-box | border-box;\n```\n","values":"\n### 属性值\n\n`content-box`\nCSS2.1 指定的宽度和高度行为。指定的宽度和高度(以及各自的最小/最大属性)分别应用于元素内容框的宽度和高度。\n\n\n`border-box`\n该元素上指定的宽度和高度(以及各自的最小/最大属性)决定了该元素的边框。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| box-sizing | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-sizing)\n"},"color":{"name":"## color\n","description":"\ncolor CSS 属性设置颜色值的前景色以及文本装饰,并设置<currentcolor> (en-US)值。currentcolor可以对其他颜色属性用作不直接的值,比如border-color。\n","syntax":"\n### 语法\n```\ncolor: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| color | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/color)\n"},"display":{"name":"## display\n","description":"\nCSS display 属性设置元素是否被视为块或者内联元素以及用于子元素的布局,例如流式布局、网格布局或弹性布局。\n","syntax":"\n### 语法\n```\ndisplay: flex | none;\n```\n","values":"\n### 属性值\n\n`flex`\n该元素生成一个主要的 Flex 容器框并建立一个 Flex 格式化上下文。\n\n\n`none`\n该元素及其后代不显示。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| display | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/display)\n"},"flex":{"name":"## flex\n","description":"\nflex CSS 简写属性设置了弹性项目如何增大或缩小以适应其弹性容器中可用的空间。\n","syntax":"\n### 语法\n```\nflex: initial | auto | none | [ <'flex-grow'> <'flex-shrink'>? <'flex-basis'> ];\n```\n","values":"\n### 属性值\n\n`initial`\n元素会根据自身宽高设置尺寸。它会缩短自身以适应 flex 容器,但不会伸长并吸收 flex 容器中的额外自由空间来适应 flex 容器。相当于将属性设置为\"flex: 0 1 auto\"\n\n\n`auto`\n元素会根据自身的宽度与高度来确定尺寸,但是会伸长并吸收 flex 容器中额外的自由空间,也会缩短自身来适应 flex 容器。这相当于将属性设置为 \"flex: 1 1 auto\".\n\n\n`none`\n元素会根据自身宽高来设置尺寸。它是完全非弹性的:既不会缩短,也不会伸长来适应 flex 容器。相当于将属性设置为\"flex: 0 0 auto\"\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex)\n"},"flex-basis":{"name":"## flex-basis\n","description":"\nCSS 属性 flex-basis 指定了 flex 元素在主轴方向上的初始大小。如果不使用 box-sizing 改变盒模型的话,那么这个属性就决定了 flex 元素的内容盒(content-box)的尺寸。\n","syntax":"\n### 语法\n```\nflex-basis: <number> | <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n检索主尺寸属性的值作为使用的“flex-basis”。\n\n\n`content`\n基于 flex 的元素的内容自动调整大小。\n \n**备注:**由于最初规范中没有包括这个值,在一些早期的浏览器实现的 flex 布局中,content 值无效,可以利用设置 (width 或 height) 为 auto 达到同样的效果。\n \n \n备注: 简史\n\n 最初,\"flex-basis:auto\" 的含义是 \"参照我的width和height属性\".\n 在此之后,\"flex-basis:auto\" 的含义变成了自动尺寸,而 \"main-size\" 变成了 \"参照我的width和height属性\"。实际执行于 bug 1032922.\n 然后呢,这个更改又在 bug 1093316 中被撤销了,所以 \"auto\" 变回了原来的含义; 而一个新的关键字 'content' 变成了自动尺寸。 (Firefox bug 1105111 包括了增加这个关键字).\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-basis | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-basis)\n"},"flex-direction":{"name":"## flex-direction\n","description":"\nCSS flex-direction 属性指定了内部元素是如何在 flex 容器中布局的,定义了主轴的方向 (正方向或反方向)。\n","syntax":"\n### 语法\n```\nflex-direction: row | row-reverse | column | column-reverse;\n```\n","values":"\n### 属性值\n\n`row`\nflex 容器的主轴被定义为与文本方向相同。主轴起点和主轴终点与内容方向相同。\n\n\n`row-reverse`\n表现和 row 相同,但是置换了主轴起点和主轴终点\n\n\n`column`\nflex 容器的主轴和块轴相同。主轴起点与主轴终点和书写模式的前后点相同\n\n\n`column-reverse`\n表现和column相同,但是置换了主轴起点和主轴终点\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-direction | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-direction)\n"},"flex-flow":{"name":"## flex-flow\n","description":"\nCSS flex-flow 属性是 flex-direction 和 flex-wrap 的简写。\n","syntax":"\n### 语法\n```\nflex-flow: <'flex-direction'> || <'flex-wrap'>;\n```\n","values":"\n### 属性值\n\n`column`\nFlex容器的主轴与当前写入模式的块轴具有相同的方向。\n\n\n`column-reverse`\n与“column”相同,只是交换了主起点和主终点方向。\n\n\n`row`\nFlex容器的主轴与当前书写模式的内联轴具有相同的方向。\n\n\n`row-reverse`\n与“row”相同,只是交换了主起点和主终点方向。\n\n\n`nowrap`\nFlex 容器是单行的。\n\n\n`wrap`\nFlexbox 是多行的。\n\n\n`wrap-reverse`\n与“wrap”相同,只是交叉起点和交叉终点方向交换了。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-flow | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-flow)\n"},"flex-grow":{"name":"## flex-grow\n","description":"\nCSS 属性 flex-grow CSS 设置 flex 项 主尺寸 的 flex 增长系数。\n","syntax":"\n### 语法\n```\nflex-grow: <number>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-grow | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-grow)\n"},"flex-shrink":{"name":"## flex-shrink\n","description":"\nCSS flex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。\n","syntax":"\n### 语法\n```\nflex-shrink: <number>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-shrink | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-shrink)\n"},"flex-wrap":{"name":"## flex-wrap\n","description":"\nCSS 的 flex-wrap 属性指定 flex 元素单行显示还是多行显示。如果允许换行,这个属性允许你控制行的堆叠方向。\n","syntax":"\n### 语法\n```\nflex-wrap: nowrap | wrap | wrap-reverse;\n```\n","values":"\n### 属性值\n\n`nowrap`\nflex 的元素被摆放到到一行,这可能导致 flex 容器溢出。cross-start 会根据 flex-direction 的值等价于 start 或 before。为该属性的默认值。\n\n\n`wrap`\nflex 元素 被打断到多个行中。cross-start 会根据 flex-direction 的值等价于 start 或before。cross-end 为确定的 cross-start 的另一端。\n\n\n`wrap-reverse`\n和 wrap 的行为一样,但是 cross-start 和 cross-end 互换。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| flex-wrap | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-wrap)\n"},"font-family":{"name":"## font-family\n","description":"\nCSS 属性 font-family 允许您通过给定一个有先后顺序的,由字体名或者字体族名组成的列表来为选定的元素设置字体。\n","syntax":"\n### 语法\n```\nfont-family: <family-name>;\n```\n","values":"\n### 属性值\n\n`cursive`\n草书字体。这种字体有的有连笔,有的还有特殊的斜体效果。因为一般这种字体都有一点连笔效果,所以会给人一种手写的感觉。\n 例如:Brush Script MT、Brush Script Std、Lucida Calligraphy、Lucida Handwriting、Apple Chancery、cursive。\n\n\n`fantasy`\nFantasy 字体主要是那些具有特殊艺术效果的字体。\n 例如:Papyrus、Herculanum、Party LET、Curlz MT、Harrington、fantasy。\n\n\n`monospace`\n等宽字体,即字体中每个字宽度相同。\n 例如:Fira Mono、DejaVu Sans Mono、Menlo、Consolas、Liberation Mono、Monaco、Lucida Console、monospace。\n\n\n`sans-serif`\n无衬线字体,即笔画结尾是平滑的字体。\n 例如:Open Sans、Fira Sans、Lucida Sans、Lucida Sans Unicode、Trebuchet MS、Liberation Sans、Nimbus Sans L、sans-serif。\n\n\n`serif`\n带衬线字体,笔画结尾有特殊的装饰线或衬线。\n 例如:Lucida Bright、Lucida Fax、Palatino、Palatino Linotype、Palladio、URW Palladio、serif。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-family | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-family)\n"},"font-size":{"name":"## font-size\n","description":"\nfont-size CSS 属性设置字体大小。更改字体大小还会更新字体大小相关的 <length> 单位,例如 em、ex 等。\n","syntax":"\n### 语法\n```\nfont-size: <length>;\n```\n","values":"\n### 属性值\n\n`large`\n\n\n\n`larger`\n\n\n\n`medium`\n\n\n\n`small`\n\n\n\n`smaller`\n\n\n\n`x-large`\n\n\n\n`x-small`\n\n\n\n`xx-large`\n\n\n\n`xx-small`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-size | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-size)\n"},"font-style":{"name":"## font-style\n","description":"\nfont-style CSS 属性允许你选择 font-family 字体下的 italic 或 oblique 样式。\n","syntax":"\n### 语法\n```\nfont-style: italic | normal;\n```\n","values":"\n### 属性值\n\n`italic`\n选择一种标记为“斜体”的字体,如果不是,则选择标记为“斜体”的字体\n\n\n`normal`\n选择被分类为“正常”的面孔。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-style | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-style)\n"},"font-weight":{"name":"## font-weight\n","description":"\nfont-weight CSS 属性指定了字体的粗细程度。一些字体只提供 normal 和 bold 两种值。\n","syntax":"\n### 语法\n```\nfont-weight: normal | bold | 400 | 700;\n```\n","values":"\n### 属性值\n\n`normal`\n与400相同\n\n\n`bold`\n与700相同\n\n\n`400`\n普通的\n\n\n`700`\n大胆的\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| font-weight | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-weight)\n"},"height":{"name":"## height\n","description":"\nheight CSS 属性指定了一个元素的高度。默认情况下,这个属性决定的是内容区( content area)的高度,但是,如果将 box-sizing 设置为 border-box , 这个属性决定的将是边框区域(border area)的高度。\n","syntax":"\n### 语法\n```\nheight: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| height | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/height)\n"},"justify-content":{"name":"## justify-content\n","description":"\nCSS justify-content 属性定义浏览器如何沿着弹性容器的主轴和网格容器的行向轴分配内容元素之间和周围的空间。\n","syntax":"\n### 语法\n```\njustify-content: center | flex-start | flex-end | space-between | space-around;\n```\n","values":"\n### 属性值\n\n`center`\n弹性商品朝生产线的中心方向包装。\n\n\n`flex-start`\nFlex 商品包装在生产线的开头。\n\n\n`flex-end`\nFlex 商品在生产线末端进行包装。\n\n\n`space-between`\nFlex 项目均匀分布在行中。\n\n\n`space-around`\nFlex 项目均匀分布在行中,两端各有一半的空间。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| justify-content | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/justify-content)\n"},"left":{"name":"## left\n","description":"\nCSS **left**属性定义了定位元素的左外边距边界与其包含块左边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\nleft: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n对于 non-replaced 元素,该值的效果取决于哪些相关属性也具有“自动”的值\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| left | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/left)\n"},"letter-spacing":{"name":"## letter-spacing\n","description":"\nCSS 的 letter-spacing 属性用于设置文本字符的间距表现。在渲染文本时添加到字符之间的自然间距中。letter-spacing 的正值会导致字符分布得更远,而 letter-spacing 的负值会使字符更接近。\n","syntax":"\n### 语法\n```\nletter-spacing: <length>;\n```\n","values":"\n### 属性值\n\n`normal`\n间距是当前字体的正常间距。 它通常是零长度。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| letter-spacing | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/letter-spacing)\n"},"line-height":{"name":"## line-height\n","description":"\nline-height CSS 属性用于设置多行元素的空间量,如多行文本的间距。对于块级元素,它指定元素行盒(line boxes)的最小高度。对于非替代的 inline 元素,它用于计算行盒(line box)的高度。\n","syntax":"\n### 语法\n```\nline-height: <length>;\n```\n","values":"\n### 属性值\n\n`normal`\n取决于用户代理。桌面浏览器(包括 Firefox)使用默认值,约为 1.2*,这取决于元素的 font-family。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| line-height | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/line-height)\n"},"margin":{"name":"## margin\n","description":"\nmargin 属性为给定元素设置所有四个(上下左右)方向的外边距属性。也就是 margin-top,margin-right,margin-bottom,和 margin-left 四个外边距属性设置的简写。\n","syntax":"\n### 语法\n```\nmargin: [ <length> | <percentage> ]{1,4};\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin)\n"},"margin-bottom":{"name":"## margin-bottom\n","description":"\n用于设置边距区域厚度值的简写属性。如果 left 省略,则与 right 相同。如果省略bottom,则与top相同;如果省略right,则与top相同。边距属性允许使用负值,但可能存在特定于实现的限制。\n","syntax":"\n### 语法\n```\nmargin-bottom: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-bottom | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-bottom)\n"},"margin-left":{"name":"## margin-left\n","description":"\nmargin-left 属性 设置与元素相关联的盒子模型的左外边距。这个值可以为负值。\n","syntax":"\n### 语法\n```\nmargin-left: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-left | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-left)\n"},"margin-right":{"name":"## margin-right\n","description":"\nmargin-right 属性 设置与元素相关联的盒子模型的右外边距。这个值可以为负值。\n","syntax":"\n### 语法\n```\nmargin-right: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-right | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-right)\n"},"margin-top":{"name":"## margin-top\n","description":"\nmargin-top CSS 属性用于设置元素的顶部外边距外边距区域。正值使它离相邻元素更远,而负值使它更靠近相邻元素。\n","syntax":"\n### 语法\n```\nmargin-top: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`auto`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| margin-top | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-top)\n"},"max-height":{"name":"## max-height\n","description":"\nCSS属性 max-height 设置元素的最大高度。它防止height属性的使用值(used value)大于 max-height 的指定值。\n","syntax":"\n### 语法\n```\nmax-height: <length>;\n```\n","values":"\n### 属性值\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n\n\n`auto`\n\n\n\n`none`\n盒子的高度没有限制。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| max-height | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n| auto | 4.4 | √ | x | 9.0 | √ | x |\n| none | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-height)\n"},"max-width":{"name":"## max-width\n","description":"\nmax-width 属性用来给元素设置最大宽度值。定义了 max-width 的元素会在达到 max-width 值之后避免进一步按照 width 属性设置变大。\n","syntax":"\n### 语法\n```\nmax-width: <length>;\n```\n","values":"\n### 属性值\n\n`fit-content`\n\n\n\n`max-content`\n\n\n\n`min-content`\n\n\n\n`auto`\n\n\n\n`none`\n盒子的宽度没有限制。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| max-width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n| auto | 4.4 | √ | x | 9.0 | √ | x |\n| none | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-width)\n"},"min-height":{"name":"## min-height\n","description":"\nCSS 属性 min-height 能够设置元素的最小高度。这样能够防止 height 属性的应用值小于 min-height 的值。\n","syntax":"\n### 语法\n```\nmin-height: <length>;\n```\n","values":"\n### 属性值\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n\n\n`auto`\n\n\n\n`none`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| min-height | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n| auto | 4.4 | √ | x | 9.0 | √ | x |\n| none | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-height)\n"},"min-width":{"name":"## min-width\n","description":"\nmin-width 属性为给定元素设置最小宽度。它可以阻止 width 属性的应用值小于 min-width 的值。\n","syntax":"\n### 语法\n```\nmin-width: <length>;\n```\n","values":"\n### 属性值\n\n`fit-content`\n使用 fit-content 的内联尺寸或 fit-content 的块大小,适合writing-mode。\n\n\n`max-content`\n\n\n\n`min-content`\n\n\n\n`auto`\n\n\n\n`none`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| min-width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n| auto | 4.4 | √ | x | 9.0 | √ | x |\n| none | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-width)\n"},"opacity":{"name":"## opacity\n","description":"\nopacity 属性指定了一个元素的不透明度。换言之,opacity 属性指定了一个元素后面的背景的被覆盖程度。\n","syntax":"\n### 语法\n```\nopacity: <alpha-value>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| opacity | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/opacity)\n"},"overflow":{"name":"## overflow\n","description":"\noverflow 是 CSS 的简写属性,其设置了元素溢出时所需的行为——即当元素的内容太大而无法适应它的块级格式化上下文时。\n","syntax":"\n### 语法\n```\noverflow: visible | hidden;\n```\n","values":"\n### 属性值\n\n`visible`\n内容不会被剪裁,即,它可能会呈现在内容框之外。\n\n\n`hidden`\n内容被剪切,并且不应提供滚动机制来查看剪切区域之外的内容。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| overflow | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow)\n"},"padding":{"name":"## padding\n","description":"\npadding CSS 简写属性控制元素所有四条边的内边距区域。\n","syntax":"\n### 语法\n```\npadding: [ <length> | <percentage> ]{1,4};\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding)\n"},"padding-bottom":{"name":"## padding-bottom\n","description":"\nCSS 属性 padding-bottom 是指一个元素在内边距区域(padding area)中下方的高度。内边距(padding)是指一个元素的内容和边框之间的区域。和外边距(margin)不同,内边距(padding)是不允许有负值的。内边距(padding)可以用四个值声明一个元素的四个方向的内边距(paddings),这是一种 CSS 缩写属性。\n","syntax":"\n### 语法\n```\npadding-bottom: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-bottom | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-bottom)\n"},"padding-left":{"name":"## padding-left\n","description":"\nCSS 属性 padding-left 是指一个元素在内边距区域(padding area)中左边的宽度。内边距(padding)是指一个元素的内容和边框之间的区域。\n","syntax":"\n### 语法\n```\npadding-left: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-left | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-left)\n"},"padding-right":{"name":"## padding-right\n","description":"\nCSS 属性 padding-right 是指一个元素在内边距区域(padding area)中右边的宽度。内边距(padding)是指一个元素的内容和边框之间的区域。和外边距(margin)不同,内边距(padding)是不允许有负值的。内边距(padding)可以用四个值声明一个元素的四个方向的内边距(paddings),这是一种 CSS 缩写属性。\n","syntax":"\n### 语法\n```\npadding-right: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-right | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-right)\n"},"padding-top":{"name":"## padding-top\n","description":"\nCSS 属性 padding-top 是指一个元素在内边距区域(padding area)中上方的高度。内边距(padding)是指一个元素的内容和边框之间的区域。和外边距(margin)不同,内边距(padding)是不允许有负值的。内边距(padding)可以用四个值声明一个元素的四个方向的内边距(paddings),这是一种 CSS 缩写属性。\n","syntax":"\n### 语法\n```\npadding-top: <length> | <percentage>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| padding-top | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-top)\n"},"pointer-events":{"name":"## pointer-events\n","description":"\npointer-events CSS 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件的 target (en-US)。\n","syntax":"\n### 语法\n```\npointer-events: auto | none;\n```\n","values":"\n### 属性值\n\n`auto`\n\n\n\n`none`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| pointer-events | 4.4 | x | 3.9.0 | 9.0 | x | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/pointer-events)\n"},"position":{"name":"## position\n","description":"\nCSS position 属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。\n","syntax":"\n### 语法\n```\nposition: relative | absolute | fixed | static | sticky;\n```\n","values":"\n### 属性值\n\n`relative`\n该关键字下,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)。position:relative 对 table-*-group, table-row, table-column, table-cell, table-caption 元素无效。\n\n\n`absolute`\n元素会被移出正常文档流,并不为元素预留空间,通过指定元素相对于最近的非 static 定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margins),且不会与其他边距合并。\n\n\n`fixed`\n元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform、perspective、filter 或 backdrop-filter 属性非 none 时,容器由视口改为该祖先。\n\n\n`static`\n该关键字指定元素使用正常的布局行为,即元素在文档常规流中当前的布局位置。此时 top, right, bottom, left 和 z-index 属性无效。\n\n\n`sticky`\n元素根据正常文档流进行定位,然后相对它的最近滚动祖先(nearest scrolling ancestor)和 containing block(最近块级祖先 nearest block-level ancestor),包括 table-related 元素,基于 top、right、bottom 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。\n 该值总是创建一个新的层叠上下文(stacking context)。注意,一个 sticky 元素会“固定”在离它最近的一个拥有“滚动机制”的祖先上(当该祖先的 overflow 是 hidden、scroll、auto 或 overlay 时),即便这个祖先不是最近的真实可滚动祖先。这有效地抑制了任何“sticky”行为(详情见 Github issue on W3C CSSWG)。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| position | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| static | 4.4 | √ | x | 9.0 | √ | x |\n| sticky | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/position)\n"},"right":{"name":"## right\n","description":"\nright CSS 属性定义了定位元素的右外边距边界与其包含块右边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\nright: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n这个关键字表示:\n \n 对于绝对定位元素,元素将忽略此属性而以 left 属性为准,如果此时设置 width: auto,将基于内容需要的宽度设置宽度;如果 left 也为 auto 的话,元素的水平位置就是它假如作为静态(即 static)元素时该在的位置。\n 对于相对定位元素,元素相对正常位置的偏移量将基于 left 属性;如果 left 也为 auto 的话,元素将不会有偏移。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| right | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/right)\n"},"text-align":{"name":"## text-align\n","description":"\ntext-align CSS 属性定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐。\n","syntax":"\n### 语法\n```\ntext-align: left | center | right;\n```\n","values":"\n### 属性值\n\n`left`\n内联内容与行框的左边缘对齐。在垂直文本中,“左”与行框的边缘对齐,该边缘将是从左到右文本的起始边缘。\n\n\n`center`\n内联内容在行框内居中。\n\n\n`right`\n内联内容与行框的右边缘对齐。在垂直文本中,“右”与行框的边缘对齐,该边缘将是从左到右文本的结束边缘。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-align | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-align)\n"},"text-decoration":{"name":"## text-decoration\n","description":"\ntext-decoration 简写 CSS 属性设置文本上的装饰性线条的外观。它是 text-decoration-line、text-decoration-color、text-decoration-style 和较新的 text-decoration-thickness 属性的缩写。\n","syntax":"\n### 语法\n```\ntext-decoration: <'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>;\n```\n","values":"\n### 属性值\n\n`dashed`\n产生虚线样式。\n\n\n`dotted`\n产生一条虚线。\n\n\n`double`\n产生双线。\n\n\n`line-through`\n每行文本中间都有一条线。\n\n\n`none`\n不产生任何线条。\n\n\n`overline`\n每行文本上方都有一行。\n\n\n`solid`\n产生实线。\n\n\n`underline`\n每行文本都带有下划线。\n\n\n`wavy`\n产生一条波浪线。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration | 4.4 | √ | x | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration)\n"},"text-decoration-color":{"name":"## text-decoration-color\n","description":"\nCSS 属性 text-decoration-color 用于设置文本修饰线的颜色,文本修饰线是通过 text-decoration-line 属性指定的。\n","syntax":"\n### 语法\n```\ntext-decoration-color: <color>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-color | 4.4 | √ | x | 9.0 | √ | - |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-color | √( 57 ) | √( 79 ) | √( 36 ) | √( 44 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-color)\n"},"text-decoration-line":{"name":"## text-decoration-line\n","description":"\nCSS 属性 text-decoration-line 用于设置元素中的文本的修饰类型。当要设置多个线修饰属性时,用 text-decoration 简写属性会比分别写多个属性更方便。\n","syntax":"\n### 语法\n```\ntext-decoration-line: underline | line-through | overline;\n```\n","values":"\n### 属性值\n\n`underline`\n每行文本都带有下划线。\n\n\n`line-through`\n每行文本中间都有一条线。\n\n\n`overline`\n每行文本上方都有一行。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-line | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| overline | 4.4 | √ | x | 9.0 | √ | x |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-line | √( 57 ) | √( 79 ) | √( 36 ) | √( 44 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-line)\n"},"text-decoration-style":{"name":"## text-decoration-style\n","description":"\nCSS 属性 text-decoration-style 用于设置由 text-decoration-line 设定的线的样式。线的样式会应用到所有被 text-decoration-line 设定的线,不能为其中的每条线设置不同的样式。当要设置多个线修饰属性时,用 text-decoration 简写属性会比分别写多个属性更方便。\n","syntax":"\n### 语法\n```\ntext-decoration-style: solid | dashed | dotted | wavy;\n```\n","values":"\n### 属性值\n\n`solid`\n产生实线。\n\n\n`dashed`\n产生虚线样式。\n\n\n`dotted`\n产生一条虚线。\n\n\n`wavy`\n产生一条波浪线。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-style | 4.4 | √ | x | 9.0 | √ | - |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-style | √( 57 ) | √( 79 ) | √( 36 ) | √( 44 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-style)\n"},"text-overflow":{"name":"## text-overflow\n","description":"\ntext-overflow CSS 属性用于确定如何提示用户存在隐藏的溢出内容。其形式可以是裁剪、显示一个省略号(“…”)或显示一个自定义字符串。\n","syntax":"\n### 语法\n```\ntext-overflow: clip | ellipsis;\n```\n","values":"\n### 属性值\n\n`clip`\n剪辑溢出的内联内容。角色可能仅部分呈现。\n\n\n`ellipsis`\n渲染省略号字符 (U+2026) 以表示剪辑的内联内容。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-overflow | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-overflow)\n"},"top":{"name":"## top\n","description":"\ntop样式属性定义了定位元素的上外边距边界与其包含块上边界之间的偏移,非定位元素设置此属性无效。\n","syntax":"\n### 语法\n```\ntop: <length> | <percentage> | auto;\n```\n","values":"\n### 属性值\n\n`auto`\n这个关键字表示:\n \n 对于绝对定位元素,元素将忽略此属性已bottom属性为准,如果此时设置height: auto,将基于内容需要的高度设置高度;如果bottom也为auto的话,元素的垂直位置就是它假如作为静态 (即 static) 元素时该在的位置。\n 对于相对定位元素,元素相对正常位置的偏移量将基于bottom属性;如果bottom也为auto的话,元素将不会有偏移。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| top | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/top)\n"},"transform":{"name":"## transform\n","description":"\nCSS transform 属性允许你旋转,缩放,倾斜或平移给定元素。这是通过修改 CSS 视觉格式化模型的坐标空间来实现的。\n","syntax":"\n### 语法\n```\ntransform: <transform-list>;\n```\n","values":"\n### 属性值\n\n`rotate(\\<angle\\>)`\n\n\n\n`rotateX(\\<angle\\>)`\n\n\n\n`rotateY(\\<angle\\>)`\n\n\n\n`rotateZ(\\<angle\\>)`\n\n\n\n`scale(\\<number\\> \\<number\\>)`\n\n\n\n`scaleX(\\<number\\>)`\n\n\n\n`scaleY(\\<number\\>)`\n\n\n\n`translate(\\<length/percentage\\> \\<length/percentage\\>)`\n\n\n\n`translateX(\\<length/percentage\\>)`\n\n\n\n`translateY(\\<length/percentage\\>)`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transform | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform)\n"},"transition":{"name":"## transition\n","description":"\ntransition CSS 属性是 transition-property、transition-duration、transition-timing-function 和 transition-delay 的一个简写属性 (en-US)。\n","syntax":"\n### 语法\n```\ntransition: <'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>;\n```\n","values":"\n### 属性值\n\n`all`\n每一个能够经历改变的属性都会应用。\n\n\n`none`\n不会发生转变。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition)\n"},"transition-delay":{"name":"## transition-delay\n","description":"\nCSS 的transition-delay属性规定了在过渡效果开始作用之前需要等待的时间。值以秒(s)或毫秒(ms)为单位,表明动画过渡效果将在何时开始。取值为正时会延迟一段时间来响应过渡效果;取值为负时会导致过渡立即开始。你可以指定多个延迟时间,每个延迟将会分别作用于你所指定的相符合的 css 属性(transition-property)\n","syntax":"\n### 语法\n```\ntransition-delay: <time>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-delay | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-delay)\n"},"transition-duration":{"name":"## transition-duration\n","description":"\ntransition-duration 属性以秒或毫秒为单位指定过渡动画所需的时间。默认值为 0s,表示不出现过渡动画。可以指定多个时长,每个时长会被应用到由 transition-property 指定的对应属性上。如果指定的时长个数小于属性个数,那么时长列表会重复。如果时长列表更长,那么该列表会被裁减。两种情况下,属性列表都保持不变。\n","syntax":"\n### 语法\n```\ntransition-duration: <time>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-duration | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-duration)\n"},"transition-property":{"name":"## transition-property\n","description":"\ntransition-property 指定应用过渡属性的名称。\n","syntax":"\n### 语法\n```\ntransition-property: <single-transition-property>#;\n```\n","values":"\n### 属性值\n\n`width`\n\n\n\n`height`\n\n\n\n`margin`\n\n\n\n`margin-top`\n\n\n\n`margin-bottom`\n\n\n\n`margin-left`\n\n\n\n`margin-right`\n\n\n\n`left`\n\n\n\n`right`\n\n\n\n`top`\n\n\n\n`bottom`\n\n\n\n`padding`\n\n\n\n`padding-left`\n\n\n\n`padding-right`\n\n\n\n`padding-top`\n\n\n\n`padding-bottom`\n\n\n\n`opacity`\n\n\n\n`background-color`\n\n\n\n`border-color`\n\n\n\n`border-top-color`\n\n\n\n`border-bottom-color`\n\n\n\n`border-left-color`\n\n\n\n`border-right-color`\n\n\n\n`transform`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-property | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-property)\n"},"transition-timing-function":{"name":"## transition-timing-function\n","description":"\nCSS 属性受到 transition effect的影响,会产生不断变化的中间值,而 CSS transition-timing-function 属性用来描述这个中间值是怎样计算的。实质上,通过这个函数会建立一条加速度曲线,因此在整个 transition 变化过程中,变化速度可以不断改变。这条加速度曲线被<timing-function> (en-US)所定义,之后作用到每个 CSS 属性的过渡。你可以规定多个 timing function,通过使用 transition-property属性,可以根据主列表 (transition property 的列表) 给每个 CSS 属性应用相应的 timing function.如果 timing function 的个数比主列表中数量少,缺少的值被设置为初始值(ease) 。如果 timing function 比主列表要多,timing function 函数列表会被截断至合适的大小。这两种情况下声明的 CSS 属性都是有效的。\n","syntax":"\n### 语法\n```\ntransition-timing-function: <easing-function>;\n```\n","values":"\n### 属性值\n\n`ease`\n\n\n\n`ease-in`\n\n\n\n`ease-out`\n\n\n\n`ease-in-out`\n\n\n\n`linear`\n\n\n\n`cubic-bezier`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| transition-timing-function | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-timing-function)\n"},"visibility":{"name":"## visibility\n","description":"\nvisibility CSS 属性显示或隐藏元素而不更改文档的布局。该属性还可以隐藏 <table> 中的行或列。\n","syntax":"\n### 语法\n```\nvisibility: visible | hidden;\n```\n","values":"\n### 属性值\n\n`visible`\n\n\n\n`hidden`\n\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| visibility | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/visibility)\n"},"width":{"name":"## width\n","description":"\nwidth 属性用于设置元素的宽度。width 默认设置内容区域的宽度,但如果 box-sizing 属性被设置为 border-box,就转而设置边框区域的宽度。\n","syntax":"\n### 语法\n```\nwidth: <length> | <percentage>;\n```\n","values":"\n### 属性值\n\n`fit-content`\n根据写入模式使用 fit-content 内联大小或 fit-content 块大小。\n\n\n`max-content`\n根据写入模式使用最大内容内联大小或最大内容块大小。\n\n\n`min-content`\n根据写入模式使用最小内容内联大小或最小内容块大小。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| width | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n| fit-content | 4.4 | √ | x | 9.0 | √ | x |\n| max-content | 4.4 | √ | x | 9.0 | √ | x |\n| min-content | 4.4 | √ | x | 9.0 | √ | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/width)\n"},"z-index":{"name":"## z-index\n","description":"\nz-index 属性设定了一个定位元素及其后代元素或 flex 项目的 z-order。当元素之间重叠的时候,z-index 较大的元素会覆盖较小的元素在上层进行显示。\n","syntax":"\n### 语法\n```\nz-index: <integer>;\n```\n","values":"\n### 属性值\n\n`auto`\n盒子不会创建一个新的本地堆叠上下文。在当前堆叠上下文中生成的盒子的堆叠层级和父级盒子相同。\n","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| z-index | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/z-index)\n"},"text-decoration-thickness":{"name":"## text-decoration-thickness\n","description":"\nCSS 属性 text-decoration-thickness 用于设置元素中文本所使用的装饰线(如 line-through、underline 或 overline)的笔触厚度。\n","syntax":"\n### 语法\n```\ntext-decoration-thickness: <length>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-thickness | 4.4 | √ | x | 9.0 | √ | - |\n\n#### 浏览器兼容性\n| | Chrome | Edge | Firefox | Opera | Safari | IE |\n| :-| :-| :-| :-| :-| :-| :-|\n| text-decoration-thickness | √( 89 ) | √( 89 ) | √( 70 ) | √( 75 ) | √( 12.1 ) | x |\n","reference":"\n### 参见\n- [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness)\n"},"lines":{"name":"## lines\n","description":"","syntax":"\n### 语法\n```\nlines: <integer>;\n```\n","values":"","compatibility":"### 兼容性 \n\n#### uni-app 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| lines | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":""}}
\ No newline at end of file \ No newline at end of file
{"createInnerAudioContext":{"name":"## uni.createInnerAudioContext() @createinneraudiocontext","description":"创建并返回 audio 上下文 audioContext 对象","param":"","returnValue":"### 返回值 \n\n| 类型 | 描述 |\n| :-| :-|\n| [InnerAudioContext](#inneraudiocontext) | 音频对象 | \n\n#### InnerAudioContext \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| duration | number | 是 | 当前音频的长度(单位:s),只有在当前有合法的 src 时返回 |\n| currentTime | number | 是 | 当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回 |\n| paused | boolean | 是 | 当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放 |\n| src | string | 是 | 音频的数据链接,用于直接播放。 |\n| startTime | number | 是 | 音频开始播放的位置(单位:s) |\n| buffered | number | 是 | 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲 |\n| autoplay | boolean | 是 | 是否自动开始播放,默认 false |\n| loop | boolean | 是 | 是否循环播放,默认 false |\n| obeyMuteSwitch | boolean | 是 | 是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true |\n| volume | number | 是 | 音量。范围 0~1。 |\n| playbackRate | number | 否 | 播放的倍率。可取值: 0.5/0.8/1.0/1.25/1.5/2.0,默认值为1.0。(仅 App 支持) |\n| pause | () => void | 是 | 暂停 |\n| stop | () => void | 是 | 停止 |\n| play | () => void | 是 | 播放 |\n| seek | (number) => void | 是 | 跳转到指定位置,单位 s |\n| destroy | () => void | 是 | 销毁当前实例 |\n| onCanplay | ((any) => void) => void | 是 | 音频进入可以播放状态,但不保证后面可以流畅播放 |\n| onPlay | ((any) => void) => void | 是 | 音频播放事件 |\n| onPause | ((any) => void) => void | 是 | 音频暂停事件 |\n| onStop | ((any) => void) => void | 是 | 音频停止事件 |\n| onEnded | ((any) => void) => void | 是 | 音频自然播放结束事件 |\n| onTimeUpdate | ((any) => void) => void | 是 | 音频播放进度更新事件 |\n| onError | ((any) => void) => void | 是 | 音频播放错误事件 |\n| onWaiting | ((any) => void) => void | 是 | 音频加载中事件,当音频因为数据不足,需要停下来加载时会触发 |\n| onSeeking | ((any) => void) => void | 是 | 音频进行 seek 操作事件 |\n| onSeeked | ((any) => void) => void | 是 | 音频完成 seek 操作事件 |\n| offCanplay | ((any) => void) => void | 是 | 取消监听 onCanplay 事件 |\n| offPlay | ((any) => void) => void | 是 | 取消监听 onPlay 事件 |\n| offPause | ((any) => void) => void | 是 | 取消监听 onPause 事件 |\n| offStop | ((any) => void) => void | 是 | 取消监听 onStop 事件 |\n| offEnded | ((any) => void) => void | 是 | 取消监听 onEnded 事件 |\n| offTimeUpdate | ((any) => void) => void | 是 | 取消监听 onTimeUpdate 事件 |\n| offError | ((any) => void) => void | 是 | 取消监听 onWaiting 事件 |\n| offWaiting | ((any) => void) => void | 是 | 取消监听 onWaiting 事件 |\n| offSeeking | ((any) => void) => void | 是 | 取消监听 onSeeking 事件 |\n| offSeeked | ((any) => void) => void | 是 | 取消监听 onSeeked 事件 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | √ | - | - | - |\n","tutorial":"\n### 参见\n[createInnerAudioContext](http://uniapp.dcloud.io/api/media/audio-context?id=createinneraudiocontext)\n"},"getBackgroundAudioManager":{"name":"## uni.getBackgroundAudioManager() @getbackgroundaudiomanager","description":"获取全局唯一的背景音频管理器 backgroundAudioManager","param":"","returnValue":"### 返回值 \n\n| 类型 | 描述 |\n| :-| :-|\n| [BackgroundAudioManager](#backgroundaudiomanager) | 背景音频对象 | \n\n#### BackgroundAudioManager \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| duration | number | 是 | 当前音频的长度(单位:s),只有在当前有合法的 src 时返回 |\n| currentTime | number | 是 | 当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回 |\n| paused | boolean | 是 | 当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放 |\n| src | string | 是 | 音频的数据源,默认为空字符串,当设置了新的 src 时,会自动开始播放 ,目前支持的格式有 m4a, aac, mp3, wav |\n| startTime | number | 是 | 音频开始播放的位置(单位:s) |\n| buffered | number | 是 | 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲 |\n| title | string | 是 | 音频标题,用于做原生音频播放器音频标题。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值。 |\n| epname | string | 是 | 专辑名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值 |\n| singer | string | 是 | 歌手名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值 |\n| coverImgUrl | string | 是 | 封面图url,用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享出去的卡片配图及背景也将使用该图。 |\n| webUrl | string | 是 | 页面链接,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值 |\n| protocol | string | 是 | 音频协议。默认值为 'http',设置 'hls' 可以支持播放 HLS 协议的直播音频 |\n| playbackRate | number | 否 | 播放的倍率。可取值: 0.5/0.8/1.0/1.25/1.5/2.0,默认值为1.0。(仅 App 支持) |\n| pause | () => void | 是 | 暂停 |\n| stop | () => void | 是 | 停止 |\n| play | () => void | 是 | 播放 |\n| seek | (number) => void | 是 | 跳转到指定位置,单位 s |\n| destroy | () => void | 是 | 销毁当前实例 |\n| onCanplay | ((any) => void) => void | 是 | 音频进入可以播放状态,但不保证后面可以流畅播放 |\n| onPlay | ((any) => void) => void | 是 | 音频播放事件 |\n| onPause | ((any) => void) => void | 是 | 音频暂停事件 |\n| onStop | ((any) => void) => void | 是 | 音频停止事件 |\n| onEnded | ((any) => void) => void | 是 | 音频自然播放结束事件 |\n| onTimeUpdate | ((any) => void) => void | 是 | 音频播放进度更新事件 |\n| onError | ((any) => void) => void | 是 | 音频播放错误事件 |\n| onWaiting | ((any) => void) => void | 是 | 音频加载中事件,当音频因为数据不足,需要停下来加载时会触发 |\n| onSeeking | ((any) => void) => void | 是 | 音频进行 seek 操作事件 |\n| onSeeked | ((any) => void) => void | 是 | 音频完成 seek 操作事件 |\n| offCanplay | ((any) => void) => void | 是 | 取消监听 onCanplay 事件 |\n| offPlay | ((any) => void) => void | 是 | 取消监听 onPlay 事件 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | √ | - | - | - |\n","tutorial":"\n### 参见\n[getBackgroundAudioManager](http://uniapp.dcloud.io/api/media/background-audio-manager?id=getbackgroundaudiomanager)\n"},"exitApp":{"name":"## uni.exitApp() @exitapp","description":"\r\n退出当前应用","param":"","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | x | x | x |\n","tutorial":""},"getFileSystemManager":{"name":"## uni.getFileSystemManager() @getfilesystemmanager","description":"\r\n获取文件管理器","param":"","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [FileSystemManager](#filesystemmanager) | \n\n#### FileSystemManager \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| readFile | ([ReadFileOptions](#readfileoptions)) => void | 是 | - |\n| writeFile | ([WriteFileOptions](#writefileoptions)) => void | 是 | - |\n\n##### ReadFileOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| encoding | string | 是 | base64 / utf-8 |\n| filePath | string | 是 | 文件路径,支持相对地址和绝对地址 |\n| success | ([ReadFileSuccessResult](#readfilesuccessresult)) => void | 否 | 接口调用的回调函数 |\n| fail | ([ReadFileFailResult](#readfilefailresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### ReadFileSuccessResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | string | 是 | - |\n\n###### ReadFileFailResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n\n##### WriteFileOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filePath | string | 是 | 文件路径,只支持绝对地址 |\n| data | string | 是 | 写入的文本内容 |\n| success | ([WriteFileSuccessResult](#writefilesuccessresult)) => void | 否 | 接口调用的回调函数 |\n| fail | ([WriteFileFailResult](#writefilefailresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### WriteFileSuccessResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filePath | string | 是 | - |\n\n###### WriteFileFailResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | x | x | x |\n","tutorial":""},"getAccessibilityInfo":{"name":"## uni.getAccessibilityInfo() @getaccessibilityinfo","description":"获取app基本信息","param":"","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| any | \n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | x | 3.9.0 | 9.0 | x | 3.9.0 |\n","tutorial":""},"getAppAuthorizeSetting":{"name":"## uni.getAppAuthorizeSetting() @getappauthorizesetting","description":"获取 APP 授权设置。","param":"","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [GetAppAuthorizeSettingResult](#getappauthorizesettingresult) | \n\n#### GetAppAuthorizeSettingResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| albumAuthorized | string | 否 | 允许 App 使用相册的开关(仅 iOS 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) |\n| bluetoothAuthorized | string | 否 | 允许 App 使用蓝牙的开关(仅 iOS 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台没有该值;iOS平台:表示没有在 `manifest.json -\\> App模块配置` 中配置 `BlueTooth(低功耗蓝牙)` 模块 |\n| cameraAuthorized | string | 是 | 允许 App 使用摄像头的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.CAMERA` 权限;iOS平台没有该值 |\n| locationAuthorized | string | 是 | 允许 App 使用定位的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.ACCESS_COARSE_LOCATION` 权限;iOS平台:表示没有在 `manifest.json -\\> App模块配置` 中配置 `Geolocation(定位)` 模块 |\n| locationAccuracy | string | 否 | 定位准确度。true 表示模糊定位,false 表示精确定位(仅 iOS 支持) - reduced: 模糊定位 - full: 精准定位 - unsupported: 不支持(包括用户拒绝定位权限和没有在 `manifest.json -\\> App模块配置` 中配置 `Geolocation(定位)` 模块) |\n| locationReducedAccuracy | boolean | 否 | 定位准确度(推荐使用 locationAccuracy 属性)。true 表示模糊定位,false 表示精确定位(仅 iOS 支持) |\n| microphoneAuthorized | string | 是 | 允许 App 使用麦克风的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.RECORD_AUDIO` 权限;iOS平台没有该值 |\n| notificationAuthorized | string | 是 | 允许 App 通知的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台没有该值;iOS平台:表示没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| notificationAlertAuthorized | string | 否 | 允许 App 通知带有提醒的开关(仅 iOS 10.0+ 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: 没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| notificationBadgeAuthorized | string | 否 | 允许 App 通知带有标记的开关(仅 iOS 10.0+ 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: 没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| notificationSoundAuthorized | string | 否 | 允许 App 通知带有声音的开关(仅 iOS 10.0+ 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: 没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| phoneCalendarAuthorized | string | 否 | 允许读写日历的开关(仅微信小程序支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getAppAuthorizeSetting](http://uniapp.dcloud.io/api/system/getappauthorizesetting)\n"},"getAppBaseInfo":{"name":"## uni.getAppBaseInfo(config?) @getappbaseinfo","description":"获取app基本信息","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| config | [GetAppBaseInfoOptions](#getappbaseinfooptions) | 否 | - |\n#### GetAppBaseInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filter | Array\\<string\\> | 是 | - |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [GetAppBaseInfoResult](#getappbaseinforesult) | \n\n#### GetAppBaseInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| appId | string | 否 | manifest.json 中应用appid,即DCloud appid。\t |\n| appName | string | 否 | manifest.json 中应用名称\t |\n| appVersion | string | 否 | manifest.json 中应用版本名称。\t |\n| appVersionCode | string | 否 | manifest.json 中应用版本名号。\t |\n| appLanguage | string | 否 | 应用设置的语言en、zh-Hans、zh-Hant、fr、es\t |\n| language | string | 否 | 应用设置的语言\t |\n| version | string | 否 | 引擎版本号 |\n| appWgtVersion | string | 否 | 应用资源(wgt)的版本名称。\t |\n| hostLanguage | string | 否 | 小程序宿主语言\t |\n| hostVersion | string | 否 | App、小程序宿主版本。 |\n| hostName | string | 否 | 小程序宿主名称\t |\n| hostPackageName | string | 否 | 小程序宿主包名\t |\n| hostSDKVersion | string | 否 | uni小程序SDK版本、小程序客户端基础库版本\t |\n| hostTheme | string | 否 | 系统当前主题,取值为light或dark。微信小程序全局配置\"darkmode\":true时才能获取,否则为 null (不支持小游戏) |\n| isUniAppX | boolean | 是 | 是否uni-app x |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getAppBaseInfo](https://uniapp.dcloud.net.cn/api/system/getAppBaseInfo.html)\n"},"getDeviceInfo":{"name":"## uni.getDeviceInfo(config?) @getdeviceinfo","description":"获取设备信息","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| config | [GetDeviceInfoOptions](#getdeviceinfooptions) | 否 | - |\n#### GetDeviceInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filter | Array\\<string\\> | 是 | - |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [GetDeviceInfoResult](#getdeviceinforesult) | \n\n#### GetDeviceInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| brand | string | 否 | 设备品牌 |\n| deviceBrand | string | 否 | 设备品牌 |\n| deviceId | string | 否 | 设备 id 。由 uni-app 框架生成并存储,清空 Storage 会导致改变 |\n| model | string | 否 | 设备型号\t |\n| deviceModel | string | 否 | 设备型号\t |\n| deviceType | string | 否 | 设备类型phone、pad、pc\t |\n| deviceOrientation | string | 否 | 设备方向 竖屏 portrait、横屏 landscape\t |\n| devicePixelRatio | string | 否 | 设备像素比\t |\n| system | string | 否 | 操作系统及版本\t |\n| platform | string | 否 | 客户端平台\t |\n| oaid | string | 否 | oaid标识 Android专有 |\n| isRoot | boolean | 否 | 是否root |\n| isSimulator | boolean | 否 | 是否是模拟器 |\n| isUSBDebugging | boolean | 否 | adb是否开启 |\n| idfa | string | 否 | idfa标识 iOS专有 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getDeviceInfo](https://uniapp.dcloud.net.cn/api/system/getDeviceInfo.html)\n"},"getLocation":{"name":"## uni.getLocation(options) @getlocation","description":"\r\n获取当前的地理位置、速度\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetLocationOptions](#getlocationoptions) | 是 | - |\n#### GetLocationOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| type | string | 否 | 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于uni.openLocation的坐标 |\n| altitude | boolean | 否 | 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 |\n| geocode | boolean | 否 | 传入 true 会解析地址 |\n| highAccuracyExpireTime | number | 否 | 高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果 |\n| isHighAccuracy | boolean | 否 | 开启高精度定位 |\n| success | ([GetLocationSuccess](#getlocationsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetLocationSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| latitude | number | 是 | 纬度,浮点数,范围为-90~90,负数表示南纬 |\n| longitude | number | 是 | 经度,范围为-180~180,负数表示西经 |\n| speed | number | 是 | 速度,浮点数,单位m/s |\n| accuracy | number | 是 | 位置的精确度 |\n| altitude | number | 是 | 高度,单位 m |\n| verticalAccuracy | number | 是 | 垂直精度,单位 m(Android 无法获取,返回 0) |\n| horizontalAccuracy | number | 是 | 水平精度,单位 m |\n| address | any | 否 | 地址信息 |\n","returnValue":"","compatibility":"","tutorial":"\n### 参见\n[getLocation](http://uniapp.dcloud.io/api/location/location?id=getlocation)\n"},"getNetworkType":{"name":"## uni.getNetworkType(options) @getnetworktype","description":"获取网络类型","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetNetworkTypeOptions](#getnetworktypeoptions) | 是 | - |\n#### GetNetworkTypeOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([GetNetworkTypeSuccess](#getnetworktypesuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetNetworkTypeSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| networkType | string | 是 | 网络类型 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getNetworkType](http://uniapp.dcloud.io/api/system/network?id=getnetworktype)\n"},"getRecorderManager":{"name":"## uni.getRecorderManager() @getrecordermanager","description":"录音管理","param":"","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [RecorderManager](#recordermanager) | \n\n#### RecorderManager \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| start | ([RecorderManagerStartOptions](#recordermanagerstartoptions)) => void | 是 | 开始录音 |\n| pause | () => void | 是 | 暂停录音 |\n| resume | () => void | 是 | 暂停录音 |\n| stop | () => void | 是 | 停止录音 |\n| onStart | ((any) => void) => void | 是 | 录音开始事件 |\n| onPause | ((any) => void) => void | 是 | 录音暂停事件 |\n| onResume | ((any) => void) => void | 是 | 录音恢复事件 |\n| onStop | ((any) => void) => void | 是 | 录音停止事件,会回调文件地址 |\n| onFrameRecorded | ((any) => void) => void | 是 | 已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了 frameSize ,则会回调此事件 |\n| onError | ((any) => void) => void | 是 | 录音错误事件, 会回调错误信息 |\n\n##### RecorderManagerStartOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| duration | number | 否 | 指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟) |\n| sampleRate | number | 否 | 采样率,有效值 8000/16000/44100 |\n| numberOfChannels | number | 否 | 录音通道数,有效值 1/2 |\n| encodeBitRate | number | 否 | 编码码率,有效值见下表格 |\n| format | string | 否 | 音频格式,有效值 aac/mp3 |\n| frameSize | number | 否 | 指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[getRecorderManager](http://uniapp.dcloud.io/api/media/record-manager?id=getrecordermanager)\n"},"getSystemInfo":{"name":"## uni.getSystemInfo(options) @getsysteminfo","description":"异步获取系统信息","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetSystemInfoOptions](#getsysteminfooptions) | 是 | - |\n#### GetSystemInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([GetSystemInfoResult](#getsysteminforesult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetSystemInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| SDKVersion | string | 是 | 客户端基础库版本 |\n| app | string | 否 | 当前运行的客户端 |\n| appId | string | 是 | `manifest.json` 中应用appid。 |\n| appLanguage | string | 否 | 应用设置的语言。仅 App、H5 支持 |\n| appName | string | 是 | `manifest.json` 中应用名称。和`字节跳动小程序、飞书小程序`字段冲突,原字端与`hostName`一致 |\n| appVersion | string | 是 | `manifest.json` 中应用版本名称。 |\n| appVersionCode | number | 是 | `manifest.json` 中应用版本名号 |\n| appWgtVersion | string | 否 | 应用资源(wgt)的版本名称。(仅 App 支持) |\n| brand | string | 否 | 手机品牌。H5 不支持 |\n| browserName | string | 是 | 浏览器名称。`App` 端是系统 webview 的名字,比如 wkwebview、chrome。小程序端为空 |\n| browserVersion | string | 是 | 浏览器版本、webview 版本。小程序端为空 |\n| deviceId | string | 是 | 设备 ID |\n| deviceBrand | string | 否 | 设备品牌。如:`apple`、`huawei`。H5 不支持 |\n| deviceModel | string | 是 | 设备型号 |\n| deviceType | string | 是 | 设备类型。`phone`、`pad`、`pc` |\n| devicePixelRatio | number | 是 | 设备像素比 |\n| deviceOrientation | string | 是 | 设备方向。如:`竖屏 portrait`、`横屏 landscape` - portrait: 竖屏 - landscape: 横屏 |\n| fontSizeSetting | number | 否 | 用户字体大小设置 |\n| host | string | 否 | 宿主平台 |\n| hostFontSizeSetting | number | 否 | 用户字体大小设置 |\n| hostSDKVersion | string | 否 | 客户端基础库版本 |\n| hostName | string | 否 | App、小程序宿主名称,如:`WeChat`、`FeiShu`、`alipay`、`DINGTALK`。H5 不支持 |\n| hostVersion | string | 否 | App、小程序宿主版本。如:微信版本号。H5 不支持 |\n| hostLanguage | string | 否 | 小程序宿主语言、app 语言 |\n| hostTheme | string | 否 | App 主题 `light`、`dark`。H5 端为空,小程序端为系统当前主题 |\n| hostPackageName | string | 否 | 小程序宿主包名。仅 App 支持,其他平台为空 |\n| language | string | 否 | 程序设置的语言 |\n| model | string | 是 | 手机型号 |\n| osName | string | 是 | ios、android、windows、mac、linux |\n| osVersion | string | 是 | 操作系统版本。如 ios 版本,andriod 版本 |\n| osLanguage | string | 否 | 操作系统语言,小程序端与 `version` 相同,H5 与浏览器语言一致 |\n| osTheme | string | 否 | |操作系统主题 light、dark。小程序端为小程序主题,H5 端为空 |\n| pixelRatio | number | 是 | 设备像素比 |\n| platform | string | 是 | 客户端平台 |\n| screenWidth | number | 是 | 屏幕宽度 |\n| screenHeight | number | 是 | 屏幕高度 |\n| statusBarHeight | number | 否 | 状态栏的高度 |\n| storage | string | 否 | 设备磁盘容量 |\n| swanNativeVersion | string | 否 | 宿主平台版本号 |\n| system | string | 是 | 操作系统版本 |\n| safeArea | [SafeArea](#safearea) | 否 | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets) | 否 | 在竖屏正方向下的安全区域插入位置 |\n| ua | string | 是 | 用户标识。小程序端为空 |\n| uniCompileVersion | string | 是 | uni 编译器版本号 |\n| uniPlatform | string | 是 | uni-app 运行平台。如:`app`、`mp-weixin`、`web` |\n| uniRuntimeVersion | string | 是 | uni 运行时版本 |\n| version | string | 是 | 引擎版本号 |\n| romName | string | 否 | rom 名称。Android 部分机型获取不到值。iOS 恒为 `ios` |\n| romVersion | string | 否 | rom 版本号。Android 部分机型获取不到值。iOS 恒为 `ios 版本号` |\n| windowWidth | number | 是 | 可使用窗口宽度 |\n| windowHeight | number | 是 | 可使用窗口高度 |\n| navigationBarHeight | number | 否 | 导航栏的高度 |\n| titleBarHeight | number | 否 | 标题栏高度 |\n| currentBattery | string | 否 | 当前电量百分比 |\n| AppPlatform | string | 否 | App平台 |\n| windowTop | number | 是 | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | 可使用窗口的底部位置 |\n| albumAuthorized | boolean | 否 | 允许微信使用相册的开关(仅 iOS 有效) |\n| cameraAuthorized | boolean | 否 | 允许微信使用摄像头的开关 |\n| locationAuthorized | boolean | 否 | 允许微信使用定位的开关 |\n| microphoneAuthorized | boolean | 否 | 允许微信使用麦克风的开关 |\n| notificationAuthorized | boolean | 否 | 允许微信通知的开关 |\n| notificationAlertAuthorized | boolean | 否 | 允许微信通知带有提醒的开关(仅 iOS 有效) |\n| notificationBadgeAuthorized | boolean | 否 | 允许微信通知带有标记的开关(仅 iOS 有效) |\n| notificationSoundAuthorized | boolean | 否 | 允许微信通知带有声音的开关(仅 iOS 有效) |\n| bluetoothEnabled | boolean | 否 | 蓝牙的系统开关 |\n| locationEnabled | boolean | 否 | 地理位置的系统开关 |\n| wifiEnabled | boolean | 否 | Wi-Fi 的系统开关 |\n| cacheLocation | any | 否 | 上一次缓存的位置信息 |\n| theme | string | 否 | 系统当前主题,取值为light或dark。仅微信小程序支持 |\n| oaid | string | 否 | oaid |\n| osAndroidAPILevel | number | 否 | Android 系统API库的版本。 |\n\n###### SafeArea \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左上角横坐标 |\n| right | number | 是 | 安全区域右下角横坐标 |\n| top | number | 是 | 安全区域左上角纵坐标 |\n| bottom | number | 是 | 安全区域右下角纵坐标 |\n| width | number | 是 | 安全区域的宽度,单位逻辑像素 |\n| height | number | 是 | 安全区域的高度,单位逻辑像素 |\n\n###### SafeAreaInsets \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左侧插入位置 |\n| right | number | 是 | 安全区域右侧插入位置 |\n| top | number | 是 | 安全区顶部插入位置 |\n| bottom | number | 是 | 安全区域底部插入位置 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getSystemInfo](http://uniapp.dcloud.io/api/system/info?id=getsysteminfo)\n"},"getSystemInfoSync":{"name":"## uni.getSystemInfoSync() @getsysteminfosync","description":"同步获取系统信息","param":"","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [GetSystemInfoResult](#getsysteminforesult) | \n\n#### GetSystemInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| SDKVersion | string | 是 | 客户端基础库版本 |\n| app | string | 否 | 当前运行的客户端 |\n| appId | string | 是 | `manifest.json` 中应用appid。 |\n| appLanguage | string | 否 | 应用设置的语言。仅 App、H5 支持 |\n| appName | string | 是 | `manifest.json` 中应用名称。和`字节跳动小程序、飞书小程序`字段冲突,原字端与`hostName`一致 |\n| appVersion | string | 是 | `manifest.json` 中应用版本名称。 |\n| appVersionCode | number | 是 | `manifest.json` 中应用版本名号 |\n| appWgtVersion | string | 否 | 应用资源(wgt)的版本名称。(仅 App 支持) |\n| brand | string | 否 | 手机品牌。H5 不支持 |\n| browserName | string | 是 | 浏览器名称。`App` 端是系统 webview 的名字,比如 wkwebview、chrome。小程序端为空 |\n| browserVersion | string | 是 | 浏览器版本、webview 版本。小程序端为空 |\n| deviceId | string | 是 | 设备 ID |\n| deviceBrand | string | 否 | 设备品牌。如:`apple`、`huawei`。H5 不支持 |\n| deviceModel | string | 是 | 设备型号 |\n| deviceType | string | 是 | 设备类型。`phone`、`pad`、`pc` |\n| devicePixelRatio | number | 是 | 设备像素比 |\n| deviceOrientation | string | 是 | 设备方向。如:`竖屏 portrait`、`横屏 landscape` - portrait: 竖屏 - landscape: 横屏 |\n| fontSizeSetting | number | 否 | 用户字体大小设置 |\n| host | string | 否 | 宿主平台 |\n| hostFontSizeSetting | number | 否 | 用户字体大小设置 |\n| hostSDKVersion | string | 否 | 客户端基础库版本 |\n| hostName | string | 否 | App、小程序宿主名称,如:`WeChat`、`FeiShu`、`alipay`、`DINGTALK`。H5 不支持 |\n| hostVersion | string | 否 | App、小程序宿主版本。如:微信版本号。H5 不支持 |\n| hostLanguage | string | 否 | 小程序宿主语言、app 语言 |\n| hostTheme | string | 否 | App 主题 `light`、`dark`。H5 端为空,小程序端为系统当前主题 |\n| hostPackageName | string | 否 | 小程序宿主包名。仅 App 支持,其他平台为空 |\n| language | string | 否 | 程序设置的语言 |\n| model | string | 是 | 手机型号 |\n| osName | string | 是 | ios、android、windows、mac、linux |\n| osVersion | string | 是 | 操作系统版本。如 ios 版本,andriod 版本 |\n| osLanguage | string | 否 | 操作系统语言,小程序端与 `version` 相同,H5 与浏览器语言一致 |\n| osTheme | string | 否 | |操作系统主题 light、dark。小程序端为小程序主题,H5 端为空 |\n| pixelRatio | number | 是 | 设备像素比 |\n| platform | string | 是 | 客户端平台 |\n| screenWidth | number | 是 | 屏幕宽度 |\n| screenHeight | number | 是 | 屏幕高度 |\n| statusBarHeight | number | 否 | 状态栏的高度 |\n| storage | string | 否 | 设备磁盘容量 |\n| swanNativeVersion | string | 否 | 宿主平台版本号 |\n| system | string | 是 | 操作系统版本 |\n| safeArea | [SafeArea](#safearea) | 否 | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets) | 否 | 在竖屏正方向下的安全区域插入位置 |\n| ua | string | 是 | 用户标识。小程序端为空 |\n| uniCompileVersion | string | 是 | uni 编译器版本号 |\n| uniPlatform | string | 是 | uni-app 运行平台。如:`app`、`mp-weixin`、`web` |\n| uniRuntimeVersion | string | 是 | uni 运行时版本 |\n| version | string | 是 | 引擎版本号 |\n| romName | string | 否 | rom 名称。Android 部分机型获取不到值。iOS 恒为 `ios` |\n| romVersion | string | 否 | rom 版本号。Android 部分机型获取不到值。iOS 恒为 `ios 版本号` |\n| windowWidth | number | 是 | 可使用窗口宽度 |\n| windowHeight | number | 是 | 可使用窗口高度 |\n| navigationBarHeight | number | 否 | 导航栏的高度 |\n| titleBarHeight | number | 否 | 标题栏高度 |\n| currentBattery | string | 否 | 当前电量百分比 |\n| AppPlatform | string | 否 | App平台 |\n| windowTop | number | 是 | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | 可使用窗口的底部位置 |\n| albumAuthorized | boolean | 否 | 允许微信使用相册的开关(仅 iOS 有效) |\n| cameraAuthorized | boolean | 否 | 允许微信使用摄像头的开关 |\n| locationAuthorized | boolean | 否 | 允许微信使用定位的开关 |\n| microphoneAuthorized | boolean | 否 | 允许微信使用麦克风的开关 |\n| notificationAuthorized | boolean | 否 | 允许微信通知的开关 |\n| notificationAlertAuthorized | boolean | 否 | 允许微信通知带有提醒的开关(仅 iOS 有效) |\n| notificationBadgeAuthorized | boolean | 否 | 允许微信通知带有标记的开关(仅 iOS 有效) |\n| notificationSoundAuthorized | boolean | 否 | 允许微信通知带有声音的开关(仅 iOS 有效) |\n| bluetoothEnabled | boolean | 否 | 蓝牙的系统开关 |\n| locationEnabled | boolean | 否 | 地理位置的系统开关 |\n| wifiEnabled | boolean | 否 | Wi-Fi 的系统开关 |\n| cacheLocation | any | 否 | 上一次缓存的位置信息 |\n| theme | string | 否 | 系统当前主题,取值为light或dark。仅微信小程序支持 |\n| oaid | string | 否 | oaid |\n| osAndroidAPILevel | number | 否 | Android 系统API库的版本。 |\n\n##### SafeArea \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左上角横坐标 |\n| right | number | 是 | 安全区域右下角横坐标 |\n| top | number | 是 | 安全区域左上角纵坐标 |\n| bottom | number | 是 | 安全区域右下角纵坐标 |\n| width | number | 是 | 安全区域的宽度,单位逻辑像素 |\n| height | number | 是 | 安全区域的高度,单位逻辑像素 |\n\n##### SafeAreaInsets \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左侧插入位置 |\n| right | number | 是 | 安全区域右侧插入位置 |\n| top | number | 是 | 安全区顶部插入位置 |\n| bottom | number | 是 | 安全区域底部插入位置 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getSystemInfoSync](http://uniapp.dcloud.io/api/system/info?id=getsysteminfosync)\n"},"getWindowInfo":{"name":"## uni.getWindowInfo() @getwindowinfo","description":"同步获取窗口信息","param":"","returnValue":"### 返回值 \n\n| 类型 | 描述 |\n| :-| :-|\n| [GetWindowInfoResult](#getwindowinforesult) | result | \n\n#### GetWindowInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| pixelRatio | number | 是 | 设备像素比 |\n| screenWidth | number | 是 | 屏幕宽度 |\n| screenHeight | number | 是 | 屏幕高度 |\n| windowWidth | number | 是 | 可使用窗口宽度 |\n| windowHeight | number | 是 | 可使用窗口高度 |\n| statusBarHeight | number | 是 | 状态栏的高度 |\n| windowTop | number | 是 | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | 可使用窗口的底部位置 |\n| safeArea | [SafeArea](#safearea) | 是 | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets) | 是 | 在竖屏正方向下的安全区域插入位置 |\n| screenTop | number | 是 | 窗口上边缘的 y 值 |\n\n##### SafeArea \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左上角横坐标 |\n| right | number | 是 | 安全区域右下角横坐标 |\n| top | number | 是 | 安全区域左上角纵坐标 |\n| bottom | number | 是 | 安全区域右下角纵坐标 |\n| width | number | 是 | 安全区域的宽度,单位逻辑像素 |\n| height | number | 是 | 安全区域的高度,单位逻辑像素 |\n\n##### SafeAreaInsets \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左侧插入位置 |\n| right | number | 是 | 安全区域右侧插入位置 |\n| top | number | 是 | 安全区顶部插入位置 |\n| bottom | number | 是 | 安全区域底部插入位置 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getWindowInfo](http://uniapp.dcloud.io/api/system/getWindowInfo.html)\n"},"getSystemSetting":{"name":"## uni.getSystemSetting() @getsystemsetting","description":"获取系统设置","param":"","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [GetSystemSettingResult](#getsystemsettingresult) | \n\n#### GetSystemSettingResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| bluetoothEnabled | boolean | 否 | 蓝牙是否开启 |\n| bluetoothError | string | 否 | 蓝牙的报错信息 |\n| locationEnabled | boolean | 否 | 位置是否开启 |\n| wifiEnabled | boolean | 否 | wifi是否开启 |\n| wifiError | string | 否 | wifi的报错信息 |\n| deviceOrientation | string | 否 | 设备方向 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[getSystemSetting](https://uniapp.dcloud.net.cn/api/system/getsystemsetting.html)\n"},"chooseImage":{"name":"## uni.chooseImage(options) @chooseimage","description":"从本地相册选择图片或使用相机拍照","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ChooseImageOptions](#chooseimageoptions) | 是 | - |\n#### ChooseImageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| count | number | 否 | 最多可以选择的图片张数,默认9 |\n| sizeType | Array\\<string\\> | 否 | original 原图,compressed 压缩图,默认二者都有 |\n| sourceType | Array\\<string\\> | 否 | album 从相册选图,camera 使用相机,默认二者都有 |\n| extension | Array\\<string\\> | 否 | 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。 |\n| crop | [ChooseImageCropOptions](#chooseimagecropoptions) | 否 | 图像裁剪参数,设置后 sizeType 失效。 |\n| success | ([ChooseImageSuccessCallback](#chooseimagesuccesscallback)) => void | 否 | 成功则返回图片的本地文件路径列表 tempFilePaths |\n| fail | ([ChooseImageFailCallback](#chooseimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ChooseImageCropOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| width | number | 是 | 裁剪的宽度,单位为px,用于计算裁剪宽高比。 |\n| height | number | 是 | 裁剪的高度,单位为px,用于计算裁剪宽高比。 |\n| quality | number | 否 | 取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。 |\n| resize | boolean | 否 | 是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注:设置为false时在裁剪编辑界面显示图片的像素值,设置为true时不显示。 |\n| saveToAlbum | boolean | 否 | 是否将裁剪的图片保存到手机相册里,默认值为false。 |\n\n##### ChooseImageSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | - |\n| tempFilePaths | Array\\<string\\> | 是 | - |\n| tempFiles | any | 是 | - |\n\n##### ChooseImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[chooseImage](http://uniapp.dcloud.io/api/media/image?id=chooseimage)\n"},"previewImage":{"name":"## uni.previewImage(options) @previewimage","description":"预览图片","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [PreviewImageOptions](#previewimageoptions) | 是 | - |\n#### PreviewImageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| count | string | 否 | 当前显示图片的链接,不填则默认为 urls 的第一张 |\n| current | any | 否 | current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。App平台在 1.9.5至1.9.8之间,current为必填。不填会报错 |\n| urls | Array\\<string\\> | 是 | 需要预览的图片链接列表 |\n| indicator | string | 否 | 图片指示器样式 - default: 底部圆点指示器 - number: 顶部数字指示器 - none: 不显示指示器 |\n| loop | boolean | 否 | 是否可循环预览 |\n| longPressActions | [LongPressActionsOptions](#longpressactionsoptions) | 否 | 长按图片显示操作菜单,如不填默认为保存相册,1.9.5 起支持。 |\n| success | ([PreviewImageSuccessCallback](#previewimagesuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([PreviewImageFailCallback](#previewimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### LongPressActionsOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| itemList | Array\\<string\\> | 是 | 按钮的文字数组 |\n| itemColor | string | 否 | 按钮的文字颜色,字符串格式,默认为\"#000000\" |\n| success | ([LongPressActionsSuccessData](#longpressactionssuccessdata)) => void | 否 | 接口调用成功的回调函数 |\n| fail | (any) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### LongPressActionsSuccessData \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tapIndex | number | 是 | 接口调用失败的回调函数 |\n| index | number | 是 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### PreviewImageSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errSubject | string | 是 | - |\n| errMsg | string | 是 | - |\n\n##### PreviewImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[previewImage](http://uniapp.dcloud.io/api/media/image?id=previewimage)\n"},"closePreviewImage":{"name":"## uni.closePreviewImage(options) @closepreviewimage","description":"关闭图片预览","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ClosePreviewImageOptions](#closepreviewimageoptions) | 是 | - |\n#### ClosePreviewImageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([ClosePreviewImageSuccessCallback](#closepreviewimagesuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ClosePreviewImageFailCallback](#closepreviewimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ClosePreviewImageSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n\n##### ClosePreviewImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[closePreviewImage](http://uniapp.dcloud.io/api/media/image?id=closepreviewimage)\n"},"getImageInfo":{"name":"## uni.getImageInfo(options) @getimageinfo","description":"获取图片信息","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetImageInfoOptions](#getimageinfooptions) | 是 | - |\n#### GetImageInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| src | string | 是 | 图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径 |\n| success | ([GetImageInfoSuccessCallback](#getimageinfosuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetImageInfoFailCallback](#getimageinfofailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetImageInfoSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| width | number | 是 | 图片宽度,单位px |\n| height | number | 是 | 图片高度,单位px |\n| path | string | 是 | 返回图片的本地路径 |\n| orientation | string | 否 | 返回图片的方向 |\n| type | string | 否 | 返回图片的格式 |\n\n##### GetImageInfoFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[getImageInfo](http://uniapp.dcloud.io/api/media/image?id=getimageinfo)\n"},"saveImageToPhotosAlbum":{"name":"## uni.saveImageToPhotosAlbum(options) @saveimagetophotosalbum","description":"保存图片到系统相册","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [SaveImageToPhotosAlbumOptions](#saveimagetophotosalbumoptions) | 是 | - |\n#### SaveImageToPhotosAlbumOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filePath | string | 是 | 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径 |\n| success | ([SaveImageToPhotosAlbumSuccessCallback](#saveimagetophotosalbumsuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetImageInfoFailCallback](#getimageinfofailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SaveImageToPhotosAlbumSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| path | string | 是 | 保存到相册的图片路径 |\n\n##### GetImageInfoFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[saveImageToPhotosAlbum](http://uniapp.dcloud.io/api/media/image?id=saveimagetophotosalbum)\n"},"compressImage":{"name":"## uni.compressImage(options) @compressimage","description":"压缩图片","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [CompressImageOptions](#compressimageoptions) | 是 | - |\n#### CompressImageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| src | string | 是 | 图片路径,图片的路径,可以是相对路径、临时文件路径、存储文件路径 |\n| quality | number | 否 | 压缩质量,范围0~100,数值越小,质量越低,压缩率越高(仅对jpg有效) |\n| rotate | number | 否 | 旋转度数,范围0~360 |\n| width | string | 否 | 缩放图片的宽度 |\n| height | string | 否 | 缩放图片的高度 |\n| compressedHeight | number | 否 | 压缩后图片的高度,单位为px,若不填写则默认以compressedWidth为准等比缩放 |\n| compressedWidth | number | 否 | 压缩后图片的宽度,单位为px,若不填写则默认以compressedHeight为准等比缩放。 |\n| success | ([CompressImageSuccessCallback](#compressimagesuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetImageInfoFailCallback](#getimageinfofailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### CompressImageSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tempFilePath | string | 是 | 压缩后图片的临时文件路径 |\n\n##### GetImageInfoFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[compressImage](http://uniapp.dcloud.io/api/media/image?id=compressimage)\n"},"chooseVideo":{"name":"## uni.chooseVideo(options) @choosevideo","description":"拍摄视频或从手机相册中选视频,返回视频的临时文件路径。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ChooseVideoOptions](#choosevideooptions) | 是 | - |\n#### ChooseVideoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| sourceType | Array\\<string\\> | 否 | album 从相册选视频,camera 使用相机拍摄,默认为:\\['album', 'camera'\\] |\n| compressed | boolean | 否 | 是否压缩所选的视频源文件,默认值为true,需要压缩 |\n| maxDuration | number | 否 | 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒 |\n| camera | string | 否 | 摄像切换 - front: 前置摄像头 - back: 后置摄像头 |\n| extension | Array\\<string\\> | 否 | 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。 |\n| success | ([ChooseVideoSuccessCallback](#choosevideosuccesscallback)) => void | 否 | 接口调用成功,返回视频文件的临时文件路径,详见返回参数说明 |\n| fail | ([ChooseImageFailCallback](#chooseimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ChooseVideoSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tempFilePath | string | 是 | 选定视频的临时文件路径 |\n| duration | number | 是 | 选定的视频文件,仅H5支持 |\n| size | number | 是 | 选定视频的数据量大小 |\n| height | number | 是 | 返回选定视频的长 |\n| width | number | 是 | 返回选定视频的宽 |\n| name | string | 否 | 包含扩展名的文件名称(仅H5支持) |\n\n##### ChooseImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[chooseVideo](http://uniapp.dcloud.io/api/media/video?id=choosevideo)\n"},"getVideoInfo":{"name":"## uni.getVideoInfo(options) @getvideoinfo","description":"获取视频详细信息","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetVideoInfoOptions](#getvideoinfooptions) | 是 | - |\n#### GetVideoInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| src | string | 是 | 视频文件路径,可以是临时文件路径也可以是永久文件路径 |\n| success | ([GetVideoInfoSuccessCallback](#getvideoinfosuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ChooseImageFailCallback](#chooseimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetVideoInfoSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| orientation | string | 否 | 画面方向 |\n| type | string | 否 | 视频格式 |\n| duration | number | 是 | 视频长度 |\n| size | number | 是 | 视频大小,单位 kB |\n| height | number | 是 | 视频的长,单位 px |\n| width | number | 是 | 视频的宽,单位 px |\n| fps | number | 否 | 视频帧率 |\n| bitrate | number | 否 | 视频码率,单位 kbps |\n\n##### ChooseImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[getVideoInfo](http://uniapp.dcloud.io/api/media/video?id=getvideoinfo)\n"},"saveVideoToPhotosAlbum":{"name":"## uni.saveVideoToPhotosAlbum(options) @savevideotophotosalbum","description":"保存视频到系统相册","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [SaveVideoToPhotosAlbumOptions](#savevideotophotosalbumoptions) | 是 | - |\n#### SaveVideoToPhotosAlbumOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filePath | string | 是 | 视频文件路径,可以是临时文件路径也可以是永久文件路径 |\n| success | ([SaveVideoToPhotosAlbumSuccessCallback](#savevideotophotosalbumsuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ChooseImageFailCallback](#chooseimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ChooseImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[saveVideoToPhotosAlbum](http://uniapp.dcloud.io/api/media/video?id=savevideotophotosalbum)\n"},"compressVideo":{"name":"## uni.compressVideo(options) @compressvideo","description":"压缩视频","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [CompressVideoOptions](#compressvideooptions) | 是 | - |\n#### CompressVideoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| src | string | 是 | 视频文件路径,可以是临时文件路径也可以是永久文件路径 |\n| quality | string | 否 | 压缩质量 - low: 低 - medium: 中 - high: 高 |\n| bitrate | number | 否 | 码率,单位 kbps |\n| fps | number | 否 | 帧率 |\n| resolution | number | 否 | 相对于原视频的分辨率比例,取值范围(0, 1\\] |\n| success | ([CompressVideoSuccessCallback](#compressvideosuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ChooseImageFailCallback](#chooseimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### CompressVideoSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tempFilePath | string | 是 | 压缩后的临时文件地址 |\n| size | number | 是 | 压缩后的大小,单位 kB |\n\n##### ChooseImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n","tutorial":"\n### 参见\n[compressVideo](http://uniapp.dcloud.io/api/media/video?id=compressvideo)\n"},"uploadFile":{"name":"## uni.uploadFile(options) @uploadfile","description":"将本地资源上传到开发者服务器。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [UploadFileOptions](#uploadfileoptions) | 是 | - |\n#### UploadFileOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| url | string | 是 | 开发者服务器 url |\n| filePath | string | 否 | 要上传文件资源的路径 |\n| name | string | 否 | 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 |\n| files | Array\\<[UploadFileOptionFiles](#uploadfileoptionfiles)\\> | 否 | 需要上传的文件列表。 |\n| header | any | 否 | HTTP 请求 Header, header 中不能设置 Referer |\n| formData | any | 否 | HTTP 请求中其他额外的 form data |\n| timeout | number | 否 | 超时时间,单位 ms |\n| success | ([UploadFileSuccess](#uploadfilesuccess)) => void | 否 | 成功返回的回调函数 |\n| fail | ([UploadFileFail](#uploadfilefail)) => void | 否 | 失败的回调函数 |\n| complete | (any) => void | 否 | 结束的回调函数(调用成功、失败都会执行) |\n\n##### UploadFileOptionFiles \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| name | string | 否 | multipart 提交时,表单的项目名,默认为 file,如果 name 不填或填的值相同,可能导致服务端读取文件时只能读取到一个文件。 |\n| uri | string | 是 | 要上传文件资源的路径 |\n| file | any | 否 | 要上传的文件对象,仅H5(2.6.15+)支持 |\n\n##### UploadFileSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | string | 是 | 开发者服务器返回的数据 |\n| statusCode | number | 是 | 开发者服务器返回的 HTTP 状态码 |\n\n##### UploadFileFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| cause | any | 否 | 错误来源 |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [UploadTask](#uploadtask) | \n\n#### UploadTask \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| abort | () => void | 是 | 中断上传任务。 |\n| onProgressUpdate | (([OnProgressUpdateResult](#onprogressupdateresult)) => void) => void | 是 | 监听上传进度变化。 |\n\n##### OnProgressUpdateResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| progress | number | 是 | 上传进度百分比 |\n| totalBytesSent | number | 是 | 已经上传的数据长度,单位 Bytes |\n| totalBytesExpectedToSend | number | 是 | 预期需要上传的数据总长度,单位 Bytes |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[uploadFile](https://uniapp.dcloud.net.cn/api/request/network-file.html#uploadfile)\n"},"downloadFile":{"name":"## uni.downloadFile(options) @downloadfile","description":"下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [DownloadFileOptions](#downloadfileoptions) | 是 | - |\n#### DownloadFileOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| url | string | 是 | 下载资源的 url |\n| header | any | 否 | HTTP 请求 Header,header 中不能设置 Referer |\n| timeout | number | 否 | 超时时间,单位 ms |\n| success | ([DownloadFileSuccess](#downloadfilesuccess)) => void | 否 | 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'} |\n| fail | ([DownloadFileFail](#downloadfilefail)) => void | 否 | 失败的回调函数 |\n| complete | (any) => void | 否 | 结束的回调函数(调用成功、失败都会执行) |\n\n##### DownloadFileSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tempFilePath | string | 是 | 临时文件路径,下载后的文件会存储到一个临时文件 |\n| statusCode | number | 是 | 开发者服务器返回的 HTTP 状态码 |\n\n##### DownloadFileFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errSubject | string | 是 | - |\n| errCode | number | 是 | - |\n| errMsg | string | 是 | - |\n| data | any | 否 | - |\n| cause | any | 否 | - |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [DownloadTask](#downloadtask) | \n\n#### DownloadTask \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| abort | () => void | 是 | 中断下载任务。 |\n| onProgressUpdate | (([OnProgressDownloadResult](#onprogressdownloadresult)) => void) => void | 是 | 监听下载进度变化。 |\n\n##### OnProgressDownloadResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| progress | number | 是 | 下载进度百分比 |\n| totalBytesWritten | number | 是 | 已经下载的数据长度,单位 Bytes |\n| totalBytesExpectedToWrite | number | 是 | 预期需要下载的数据总长度,单位 Bytes |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[downloadFile](https://uniapp.dcloud.net.cn/api/request/network-file.html#downloadfile)\n"},"openAppAuthorizeSetting":{"name":"## uni.openAppAuthorizeSetting(options) @openappauthorizesetting","description":"跳转系统授权管理页","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [OpenAppAuthorizeSettingOptions](#openappauthorizesettingoptions) | 是 | - |\n#### OpenAppAuthorizeSettingOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([OpenAppAuthorizeSettingSuccess](#openappauthorizesettingsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([OpenAppAuthorizeSettingFail](#openappauthorizesettingfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | ([OpenAppAuthorizeSettingComplete](#openappauthorizesettingcomplete)) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### OpenAppAuthorizeSettingSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n\n##### OpenAppAuthorizeSettingFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n\n##### OpenAppAuthorizeSettingComplete \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[openAppAuthorizeSetting](http://uniapp.dcloud.io/api/system/openappauthorizesetting)\n"},"showToast":{"name":"## uni.showToast(options) @showtoast","description":"\r\nuni.showToast函数定义\r\n弹出toast \r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowToastOptions](#showtoastoptions) | 是 | uni.showToast参数定义 |\n#### ShowToastOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 是 | 提示的内容,长度与 icon 取值有关。 |\n| icon | string | 否 | icon值说明 success: 显示成功图标,error: 显示错误图标; fail: 显示错误图标,此时title文本无长度显示; exception: 显示异常图标,此时title文本无长度显示; loading: 显示加载图标;none: 不显示图标。 |\n| image | string | 否 | 自定义图标的本地路径(app端暂不支持gif) |\n| mask | boolean | 否 | 是否显示透明蒙层,防止触摸穿透,默认:false |\n| duration | number | 否 | 提示的延迟时间,单位毫秒,默认:1500 |\n| position | string | 否 | position值说明(仅App生效) top: 居上显示; center: 居中显示;bottom: 居底显示 |\n| success | ([ShowToastSuccess](#showtoastsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowToastFail](#showtoastfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ShowToastFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 1001:title is null |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"","tutorial":"\n### 参见\n[showToast](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showtoast)\n"},"hideToast":{"name":"## uni.hideToast() @hidetoast","description":"\r\nuni.hideToast函数定义\r\n隐藏toast\r\n","param":"","returnValue":"","compatibility":"","tutorial":"\n### 参见\n[hideToast](https://uniapp.dcloud.net.cn/api/ui/prompt.html#hidetoast)\n"},"showLoading":{"name":"## uni.showLoading(options) @showloading","description":"\r\nuni.showLoading函数定义\r\n弹出loading\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowLoadingOptions](#showloadingoptions) | 是 | uni.showLoading参数定义 |\n#### ShowLoadingOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 是 | 提示的内容,长度与 icon 取值有关。 |\n| mask | boolean | 否 | 是否显示透明蒙层,防止触摸穿透,默认:false |\n| success | ([ShowLoadingSuccess](#showloadingsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowLoadingFail](#showloadingfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ShowLoadingFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 1001:title is null |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"","tutorial":"\n### 参见\n[showLoading](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showloading)\n"},"hideLoading":{"name":"## uni.hideLoading() @hideloading","description":"\r\nuni.hideLoading函数定义\r\n隐藏loading\r\n","param":"","returnValue":"","compatibility":"","tutorial":"\n### 参见\n[hideLoading](https://uniapp.dcloud.net.cn/api/ui/prompt.html#hideloading)\n"},"showModal":{"name":"## uni.showModal(options) @showmodal","description":"\r\nuni.showModal 函数定义\r\n\r\n弹出modal\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowModalOptions](#showmodaloptions) | 是 | uni.showModal 参数定义 |\n#### ShowModalOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 否 | 提示的标题 |\n| content | string | 否 | 提示的内容 |\n| showCancel | boolean | 否 | |\n| cancelText | string | 否 | 取消按钮的文字,默认为\"取消\" |\n| cancelColor | string | 否 | 取消按钮的文字颜色,默认为\"#000000\" |\n| confirmText | string | 否 | 确定按钮的文字,默认为\"确定\" |\n| confirmColor | string | 否 | 确定按钮的文字颜色 |\n| editable | boolean | 否 | |\n| placeholderText | string | 否 | 显示输入框时的提示文本 |\n| success | ([ShowModalSuccess](#showmodalsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowModalFail](#showmodalfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ShowModalSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| confirm | boolean | 是 | 为 true 时,表示用户点击了确定按钮 |\n| cancel | boolean | 是 | 为 true 时,表示用户点击了取消(用于 Android 系统区分点击蒙层关闭还是点击取消按钮关闭) |\n| content | string | 否 | editable 为 true 时,用户输入的文本 |\n\n##### ShowModalFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"","tutorial":"\n### 参见\n[showModal](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showmodal)\n"},"showActionSheet":{"name":"## uni.showActionSheet(options) @showactionsheet","description":"\r\nuni.showActionSheet函数定义\r\n\r\n弹出actionSheet\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowActionSheetOptions](#showactionsheetoptions) | 是 | uni.showActionSheet函数参数定义 |\n#### ShowActionSheetOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 否 | 菜单标题 |\n| alertText | string | 否 | 警示文案(同菜单标题, app无效) |\n| itemList | Array\\<string\\> | 是 | 按钮的文字数组 |\n| itemColor | string | 否 | 按钮的文字颜色,字符串格式(iOS默认为系统控件颜色) |\n| popover | [Popover](#popover) | 否 | 大屏设备弹出原生选择按钮框的指示区域,默认居中显示 |\n| success | ([ShowActionSheetSuccess](#showactionsheetsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowActionSheetFail](#showactionsheetfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### Popover \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| top | number | 是 | 指示区域坐标,使用原生 navigationBar 时一般需要加上 navigationBar 的高度 |\n| left | number | 是 | 指示区域坐标 |\n| width | number | 是 | 指示区域宽度 |\n| height | number | 是 | 指示区域高度 |\n\n##### ShowActionSheetSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tapIndex | number | 否 | 用户点击的按钮,从上到下的顺序,从0开始 |\n\n##### ShowActionSheetFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 1001:parameter.itemList should have at least 1 item 1002:cancel |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"","tutorial":"\n### 参见\n[showActionSheet](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showactionsheet)\n"},"setStorage":{"name":"## uni.setStorage(options) @setstorage","description":"\r\nuni.setStorage函数定义\r\n将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。 \r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [SetStorageOptions](#setstorageoptions) | 是 | uni.setStorage参数定义 |\n#### SetStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| data | any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |\n| success | ([SetStorageSuccess](#setstoragesuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([SetStorageFail](#setstoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[setStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#setstorage)\n"},"setStorageSync":{"name":"## uni.setStorageSync(key, data) @setstoragesync","description":"\r\nuni.setStorageSync函数定义\r\n将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| data | any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[setStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#setstoragesync)\n"},"getStorage":{"name":"## uni.getStorage(options) @getstorage","description":"\r\nuni.getStorage函数定义\r\n从本地缓存中异步获取指定 key 对应的内容。\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetStorageOptions](#getstorageoptions) | 是 | uni.getStorage参数定义 |\n#### GetStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| success | ([GetStorageSuccess](#getstoragesuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetStorageFail](#getstoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetStorageSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 否 | key 对应的内容 |\n\n##### GetStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[getStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorage)\n"},"getStorageSync":{"name":"## uni.getStorageSync(key) @getstoragesync","description":"\r\nuni.getStorageSync函数定义\r\n从本地缓存中同步获取指定 key 对应的内容。\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| any | \n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[getStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstoragesync)\n"},"getStorageInfo":{"name":"## uni.getStorageInfo(options) @getstorageinfo","description":"\r\nuni.getStorageInfo函数定义\r\n异步获取当前 storage 的相关信息。\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetStorageInfoOptions](#getstorageinfooptions) | 是 | uni.getStorageInfo参数定义 |\n#### GetStorageInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([GetStorageInfoSuccess](#getstorageinfosuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetStorageInfoFail](#getstorageinfofail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetStorageInfoSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| keys | Array\\<string\\> | 是 | 当前 storage 中所有的 key |\n| currentSize | number | 是 | 当前占用的空间大小, 单位:kb |\n| limitSize | number | 是 | 限制的空间大小, 单位:kb |\n\n##### GetStorageInfoFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[getStorageInfo](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorageinfo)\n"},"getStorageInfoSync":{"name":"## uni.getStorageInfoSync() @getstorageinfosync","description":"\r\nuni.getStorageInfoSync函数定义\r\n同步获取当前 storage 的相关信息。\r\n\r\n","param":"","returnValue":"### 返回值 \n\n| 类型 | 描述 |\n| :-| :-|\n| [GetStorageInfoSuccess](#getstorageinfosuccess) | \r\nuni.getStorageInfo成功回调参数 | \n\n#### GetStorageInfoSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| keys | Array\\<string\\> | 是 | 当前 storage 中所有的 key |\n| currentSize | number | 是 | 当前占用的空间大小, 单位:kb |\n| limitSize | number | 是 | 限制的空间大小, 单位:kb |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[getStorageInfoSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorageinfosync)\n"},"removeStorage":{"name":"## uni.removeStorage(options) @removestorage","description":"\r\nuni.removeStorage函数定义\r\n从本地缓存中异步移除指定 key。\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [RemoveStorageOptions](#removestorageoptions) | 是 | uni.removeStorage参数定义 |\n#### RemoveStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| success | ([RemoveStorageSuccess](#removestoragesuccess)) => void | 否 | 接口调用的回调函数 |\n| fail | ([RemoveStorageFail](#removestoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### RemoveStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[removeStorage](hhttps://uniapp.dcloud.net.cn/api/storage/storage.html#removestorage)\n"},"removeStorageSync":{"name":"## uni.removeStorageSync(key) @removestoragesync","description":"\r\nuni.removeStorageSync函数定义\r\n从本地缓存中同步移除指定 key。\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[removeStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#removestoragesync)\n"},"clearStorage":{"name":"## uni.clearStorage(option?) @clearstorage","description":"\r\nuni.clearStorage函数定义\r\n清理本地数据缓存。\r\n","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| option | [ClearStorageOptions](#clearstorageoptions) | 否 | - |\n#### ClearStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([ClearStorageSuccess](#clearstoragesuccess)) => void | 否 | 接口调用的回调函数 |\n| fail | ([ClearStorageFail](#clearstoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ClearStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[clearStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#clearstorage)\n"},"clearStorageSync":{"name":"## uni.clearStorageSync() @clearstoragesync","description":"\r\nuni.clearStorageSync函数定义\r\n清理本地数据缓存。\r\n","param":"","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n","tutorial":"\n### 参见\n[clearStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#clearstoragesync)\n"},"connectSocket":{"name":"## uni.connectSocket(options) @connectsocket","description":"创建一个 WebSocket 连接。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ConnectSocketOptions](#connectsocketoptions) | 是 | - |\n#### ConnectSocketOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| url | string | 是 | 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名 |\n| header | any | 否 | HTTP 请求 Header,header 中不能设置 Referer |\n| protocols | Array\\<string\\> | 否 | 子协议数组 |\n| success | ([ConnectSocketSuccess](#connectsocketsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ConnectSocketSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | - |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| [SocketTask](#sockettask) | \n\n#### SocketTask \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| send | ([SendSocketMessageOptions](#sendsocketmessageoptions)) => void | 是 | 通过 WebSocket 连接发送数据 |\n| close | ([CloseSocketOptions](#closesocketoptions)) => void | 是 | 关闭 WebSocket 连接 |\n| onOpen | (([OnSocketOpenCallbackResult](#onsocketopencallbackresult)) => void) => void | 是 | 监听 WebSocket 连接打开事件 |\n| onClose | ((any) => void) => void | 是 | 监听 WebSocket 连接关闭事件 |\n| onError | (([GeneralCallbackResult](#generalcallbackresult)) => void) => void | 是 | 监听 WebSocket 错误 |\n| onMessage | (([OnSocketMessageCallbackResult](#onsocketmessagecallbackresult)) => void) => void | 是 | 监听 WebSocket 接受到服务器的消息事件 |\n\n##### SendSocketMessageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 是 | 需要发送的内容 |\n| success | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### CloseSocketOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| code | number | 否 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) |\n| reason | string | 否 | 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符) |\n| success | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### OnSocketOpenCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| header | any | 是 | 连接成功的 HTTP 响应 Header |\n\n##### OnSocketMessageCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 是 | 服务器返回的消息 |\n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[connectSocket](https://uniapp.dcloud.net.cn/api/request/websocket.html#connectsocket)\n"},"onSocketOpen":{"name":"## uni.onSocketOpen(options) @onsocketopen","description":"监听WebSocket连接打开事件。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | ([OnSocketOpenCallbackResult](#onsocketopencallbackresult)) => void | 是 | - |\n#### OnSocketOpenCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| header | any | 是 | 连接成功的 HTTP 响应 Header |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[onSocketOpen](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketopen)\n"},"onSocketError":{"name":"## uni.onSocketError(callback) @onsocketerror","description":"下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | ([OnSocketErrorCallbackResult](#onsocketerrorcallbackresult)) => void | 是 | - |\n#### OnSocketErrorCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[onSocketError](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketerror)\n"},"sendSocketMessage":{"name":"## uni.sendSocketMessage(options) @sendsocketmessage","description":"通过 WebSocket 连接发送数据,需要先 uni.connectSocket,并在 uni.onSocketOpen 回调之后才能发送。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [SendSocketMessageOptions](#sendsocketmessageoptions) | 是 | - |\n#### SendSocketMessageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 是 | 需要发送的内容 |\n| success | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[sendSocketMessage](https://uniapp.dcloud.net.cn/api/request/websocket.html#sendsocketmessage)\n"},"onSocketMessage":{"name":"## uni.onSocketMessage(callback) @onsocketmessage","description":"监听WebSocket接受到服务器的消息事件。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | ([OnSocketMessageCallbackResult](#onsocketmessagecallbackresult)) => void | 是 | - |\n#### OnSocketMessageCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 是 | 服务器返回的消息 |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[onSocketMessage](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketmessage)\n"},"closeSocket":{"name":"## uni.closeSocket(options) @closesocket","description":"关闭 WebSocket 连接。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [CloseSocketOptions](#closesocketoptions) | 是 | - |\n#### CloseSocketOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| code | number | 否 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) |\n| reason | string | 否 | 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符) |\n| success | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[closeSocket](https://uniapp.dcloud.net.cn/api/request/websocket.html#closesocket)\n"},"onSocketClose":{"name":"## uni.onSocketClose(callback) @onsocketclose","description":"监听WebSocket关闭。","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | ([OnSocketCloseCallbackResult](#onsocketclosecallbackresult)) => void | 是 | - |\n#### OnSocketCloseCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| code | number | 是 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。\t |\n| reason | string | 是 | 一个可读的字符串,表示连接被关闭的原因。\t |\n","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n","tutorial":"\n### 参见\n[onSocketClose](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketclose)\n"},"general_type":{"name":"## 通用类型\n","param":"### UniError \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errSubject | string | 是 | - |\n| errCode | number | 是 | - |\n| errMsg | string | 是 | - |\n| data | any | 否 | - |\n| cause | any | 否 | - |\n\n### GeneralCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n"}} {
\ No newline at end of file "exit": {
"name": "## uni.exit(options?) @exit",
"description": "\r\n退出当前应用",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ExitOptions](#exitoptions) | 否 | - |\n#### ExitOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([ExitSuccess](#exitsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ExitSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | - |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | x | x | x |\n",
"tutorial": ""
},
"previewImage": {
"name": "## uni.previewImage(options) @previewimage",
"description": "预览图片",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [PreviewImageOptions](#previewimageoptions) | 是 | - |\n#### PreviewImageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| count | string | 否 | 当前显示图片的链接,不填则默认为 urls 的第一张 |\n| current | any | 否 | current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。App平台在 1.9.5至1.9.8之间,current为必填。不填会报错 |\n| urls | Array\\<string\\> | 是 | 需要预览的图片链接列表 |\n| indicator | string | 否 | 图片指示器样式 - default: 底部圆点指示器 - number: 顶部数字指示器 - none: 不显示指示器 |\n| loop | boolean | 否 | 是否可循环预览 |\n| longPressActions | [LongPressActionsOptions](#longpressactionsoptions) | 否 | 长按图片显示操作菜单,如不填默认为保存相册,1.9.5 起支持。 |\n| success | ([PreviewImageSuccessCallback](#previewimagesuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([PreviewImageFailCallback](#previewimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### LongPressActionsOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| itemList | Array\\<string\\> | 是 | 按钮的文字数组 |\n| itemColor | string | 否 | 按钮的文字颜色,字符串格式,默认为\"#000000\" |\n| success | ([LongPressActionsSuccessData](#longpressactionssuccessdata)) => void | 否 | 接口调用成功的回调函数 |\n| fail | (any) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### LongPressActionsSuccessData \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tapIndex | number | 是 | 接口调用失败的回调函数 |\n| index | number | 是 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### PreviewImageSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errSubject | string | 是 | - |\n| errMsg | string | 是 | - |\n\n##### PreviewImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n",
"tutorial": "\n### 参见\n[previewImage](http://uniapp.dcloud.io/api/media/image?id=previewimage)\n"
},
"closePreviewImage": {
"name": "## uni.closePreviewImage(options) @closepreviewimage",
"description": "关闭图片预览",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ClosePreviewImageOptions](#closepreviewimageoptions) | 是 | - |\n#### ClosePreviewImageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([ClosePreviewImageSuccessCallback](#closepreviewimagesuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ClosePreviewImageFailCallback](#closepreviewimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ClosePreviewImageSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n\n##### ClosePreviewImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n",
"tutorial": "\n### 参见\n[closePreviewImage](http://uniapp.dcloud.io/api/media/image?id=closepreviewimage)\n"
},
"showToast": {
"name": "## uni.showToast(options) @showtoast",
"description": "\r\nuni.showToast函数定义\r\n弹出toast \r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowToastOptions](#showtoastoptions) | 是 | uni.showToast参数定义 |\n#### ShowToastOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 是 | 提示的内容,长度与 icon 取值有关。 |\n| icon | string | 否 | icon值说明 success: 显示成功图标,error: 显示错误图标; fail: 显示错误图标,此时title文本无长度显示; exception: 显示异常图标,此时title文本无长度显示; loading: 显示加载图标;none: 不显示图标。 |\n| image | string | 否 | 自定义图标的本地路径(app端暂不支持gif) |\n| mask | boolean | 否 | 是否显示透明蒙层,防止触摸穿透,默认:false |\n| duration | number | 否 | 提示的延迟时间,单位毫秒,默认:1500 |\n| position | string | 否 | position值说明(仅App生效) top: 居上显示; center: 居中显示;bottom: 居底显示 |\n| success | ([ShowToastSuccess](#showtoastsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowToastFail](#showtoastfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ShowToastFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 1001:title is null |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[showToast](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showtoast)\n"
},
"hideToast": {
"name": "## uni.hideToast() @hidetoast",
"description": "\r\nuni.hideToast函数定义\r\n隐藏toast\r\n",
"param": "",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[hideToast](https://uniapp.dcloud.net.cn/api/ui/prompt.html#hidetoast)\n"
},
"showLoading": {
"name": "## uni.showLoading(options) @showloading",
"description": "\r\nuni.showLoading函数定义\r\n弹出loading\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowLoadingOptions](#showloadingoptions) | 是 | uni.showLoading参数定义 |\n#### ShowLoadingOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 是 | 提示的内容,长度与 icon 取值有关。 |\n| mask | boolean | 否 | 是否显示透明蒙层,防止触摸穿透,默认:false |\n| success | ([ShowLoadingSuccess](#showloadingsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowLoadingFail](#showloadingfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ShowLoadingFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 1001:title is null |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[showLoading](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showloading)\n"
},
"hideLoading": {
"name": "## uni.hideLoading() @hideloading",
"description": "\r\nuni.hideLoading函数定义\r\n隐藏loading\r\n",
"param": "",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[hideLoading](https://uniapp.dcloud.net.cn/api/ui/prompt.html#hideloading)\n"
},
"showModal": {
"name": "## uni.showModal(options) @showmodal",
"description": "\r\nuni.showModal 函数定义\r\n\r\n弹出modal\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowModalOptions](#showmodaloptions) | 是 | uni.showModal 参数定义 |\n#### ShowModalOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 否 | 提示的标题 |\n| content | string | 否 | 提示的内容 |\n| showCancel | boolean | 否 | |\n| cancelText | string | 否 | 取消按钮的文字,默认为\"取消\" |\n| cancelColor | string | 否 | 取消按钮的文字颜色,默认为\"#000000\" |\n| confirmText | string | 否 | 确定按钮的文字,默认为\"确定\" |\n| confirmColor | string | 否 | 确定按钮的文字颜色 |\n| editable | boolean | 否 | |\n| placeholderText | string | 否 | 显示输入框时的提示文本 |\n| success | ([ShowModalSuccess](#showmodalsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowModalFail](#showmodalfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ShowModalSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| confirm | boolean | 是 | 为 true 时,表示用户点击了确定按钮 |\n| cancel | boolean | 是 | 为 true 时,表示用户点击了取消(用于 Android 系统区分点击蒙层关闭还是点击取消按钮关闭) |\n| content | string | 否 | editable 为 true 时,用户输入的文本 |\n\n##### ShowModalFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[showModal](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showmodal)\n"
},
"showActionSheet": {
"name": "## uni.showActionSheet(options) @showactionsheet",
"description": "\r\nuni.showActionSheet函数定义\r\n\r\n弹出actionSheet\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ShowActionSheetOptions](#showactionsheetoptions) | 是 | uni.showActionSheet函数参数定义 |\n#### ShowActionSheetOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| title | string | 否 | 菜单标题 |\n| alertText | string | 否 | 警示文案(同菜单标题, app无效) |\n| itemList | Array\\<string\\> | 是 | 按钮的文字数组 |\n| itemColor | string | 否 | 按钮的文字颜色,字符串格式(iOS默认为系统控件颜色) |\n| popover | [Popover](#popover) | 否 | 大屏设备弹出原生选择按钮框的指示区域,默认居中显示 |\n| success | ([ShowActionSheetSuccess](#showactionsheetsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([ShowActionSheetFail](#showactionsheetfail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### Popover \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| top | number | 是 | 指示区域坐标,使用原生 navigationBar 时一般需要加上 navigationBar 的高度 |\n| left | number | 是 | 指示区域坐标 |\n| width | number | 是 | 指示区域宽度 |\n| height | number | 是 | 指示区域高度 |\n\n##### ShowActionSheetSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tapIndex | number | 否 | 用户点击的按钮,从上到下的顺序,从0开始 |\n\n##### ShowActionSheetFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 0:成功 1001:parameter.itemList should have at least 1 item 1002:cancel |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[showActionSheet](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showactionsheet)\n"
},
"getNetworkType": {
"name": "## uni.getNetworkType(options) @getnetworktype",
"description": "获取网络类型",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetNetworkTypeOptions](#getnetworktypeoptions) | 是 | - |\n#### GetNetworkTypeOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([GetNetworkTypeSuccess](#getnetworktypesuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetNetworkTypeSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| networkType | string | 是 | 网络类型 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getNetworkType](http://uniapp.dcloud.io/api/system/network?id=getnetworktype)\n"
},
"request": {
"name": "## uni.request(param) @request",
"description": "发起网络请求。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| param | [RequestOptions](#requestoptions) | 是 | 网络请求参数 |\n#### RequestOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| url | string | 是 | 开发者服务器接口地址 |\n| data | any | 否 | 请求的参数 Object|String类型 |\n| header | any | 否 | 设置请求的 header,header 中不能设置 Referer |\n| method | string | 否 | 请求类型 默认值GET\t GET|POST|PUT|DELETE|HEAD|OPTIONS |\n| timeout | number | 否 | 超时时间,单位 ms |\n| dataType | string | 否 | 如果设为 json,会对返回的数据进行一次 JSON.parse,非 json 不会进行 JSON.parse |\n| responseType | string | 否 | 设置响应的数据类型。 |\n| sslVerify | boolean | 否 | 验证 ssl 证书 |\n| withCredentials | boolean | 否 | 跨域请求时是否携带凭证(cookies) |\n| firstIpv4 | boolean | 否 | DNS解析时优先使用ipv4 |\n| success | ([RequestSuccess](#requestsuccess)) => void | 否 | 网络请求成功回调。 |\n| fail | ([RequestFail](#requestfail)) => void | 否 | 网络请求失败回调。 |\n| complete | (any) => void | 否 | 网络请求完成回调,成功或者失败都会调用。 |\n\n##### RequestSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 否 | 开发者服务器返回的数据 |\n| statusCode | number | 是 | 开发者服务器返回的 HTTP 状态码 |\n| header | any | 是 | 开发者服务器返回的 HTTP Response Header |\n| cookies | Array\\<string\\> | 是 | 开发者服务器返回的 cookies,格式为字符串数组 |\n\n##### RequestFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| cause | any | 否 | 错误来源 |\n",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [RequestTask](#requesttask) | \n\n#### RequestTask \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| abort | () => void | 是 | 中断网络请求。 |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[request](https://uniapp.dcloud.net.cn/api/request/request.html)\n"
},
"downloadFile": {
"name": "## uni.downloadFile(options) @downloadfile",
"description": "下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [DownloadFileOptions](#downloadfileoptions) | 是 | - |\n#### DownloadFileOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| url | string | 是 | 下载资源的 url |\n| header | any | 否 | HTTP 请求 Header,header 中不能设置 Referer |\n| timeout | number | 否 | 超时时间,单位 ms |\n| success | ([DownloadFileSuccess](#downloadfilesuccess)) => void | 否 | 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'} |\n| fail | ([DownloadFileFail](#downloadfilefail)) => void | 否 | 失败的回调函数 |\n| complete | (any) => void | 否 | 结束的回调函数(调用成功、失败都会执行) |\n\n##### DownloadFileSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| tempFilePath | string | 是 | 临时文件路径,下载后的文件会存储到一个临时文件 |\n| statusCode | number | 是 | 开发者服务器返回的 HTTP 状态码 |\n\n##### DownloadFileFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errSubject | string | 是 | - |\n| errCode | number | 是 | - |\n| errMsg | string | 是 | - |\n| data | any | 否 | - |\n| cause | any | 否 | - |\n",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [DownloadTask](#downloadtask) | \n\n#### DownloadTask \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| abort | () => void | 是 | 中断下载任务。 |\n| onProgressUpdate | (([OnProgressDownloadResult](#onprogressdownloadresult)) => void) => void | 是 | 监听下载进度变化。 |\n\n##### OnProgressDownloadResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| progress | number | 是 | 下载进度百分比 |\n| totalBytesWritten | number | 是 | 已经下载的数据长度,单位 Bytes |\n| totalBytesExpectedToWrite | number | 是 | 预期需要下载的数据总长度,单位 Bytes |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[downloadFile](https://uniapp.dcloud.net.cn/api/request/network-file.html#downloadfile)\n"
},
"connectSocket": {
"name": "## uni.connectSocket(options) @connectsocket",
"description": "创建一个 WebSocket 连接。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ConnectSocketOptions](#connectsocketoptions) | 是 | - |\n#### ConnectSocketOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| url | string | 是 | 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名 |\n| header | any | 否 | HTTP 请求 Header,header 中不能设置 Referer |\n| protocols | Array\\<string\\> | 否 | 子协议数组 |\n| success | ([ConnectSocketSuccess](#connectsocketsuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ConnectSocketSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | - |\n",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [SocketTask](#sockettask) | \n\n#### SocketTask \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| send | ([SendSocketMessageOptions](#sendsocketmessageoptions)) => void | 是 | 通过 WebSocket 连接发送数据 |\n| close | ([CloseSocketOptions](#closesocketoptions)) => void | 是 | 关闭 WebSocket 连接 |\n| onOpen | (([OnSocketOpenCallbackResult](#onsocketopencallbackresult)) => void) => void | 是 | 监听 WebSocket 连接打开事件 |\n| onClose | ((any) => void) => void | 是 | 监听 WebSocket 连接关闭事件 |\n| onError | (([GeneralCallbackResult](#generalcallbackresult)) => void) => void | 是 | 监听 WebSocket 错误 |\n| onMessage | (([OnSocketMessageCallbackResult](#onsocketmessagecallbackresult)) => void) => void | 是 | 监听 WebSocket 接受到服务器的消息事件 |\n\n##### SendSocketMessageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 是 | 需要发送的内容 |\n| success | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### CloseSocketOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| code | number | 否 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) |\n| reason | string | 否 | 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符) |\n| success | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用失败的回调函数 |\n| complete | ([GeneralCallbackResult](#generalcallbackresult)) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### OnSocketOpenCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| header | any | 是 | 连接成功的 HTTP 响应 Header |\n\n##### OnSocketMessageCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 是 | 服务器返回的消息 |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[connectSocket](https://uniapp.dcloud.net.cn/api/request/websocket.html#connectsocket)\n"
},
"onSocketOpen": {
"name": "## uni.onSocketOpen(options) @onsocketopen",
"description": "监听WebSocket连接打开事件。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | ([OnSocketOpenCallbackResult](#onsocketopencallbackresult)) => void | 是 | - |",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[onSocketOpen](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketopen)\n"
},
"onSocketError": {
"name": "## uni.onSocketError(callback) @onsocketerror",
"description": "下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | ([OnSocketErrorCallbackResult](#onsocketerrorcallbackresult)) => void | 是 | - |\n#### OnSocketErrorCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[onSocketError](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketerror)\n"
},
"sendSocketMessage": {
"name": "## uni.sendSocketMessage(options) @sendsocketmessage",
"description": "通过 WebSocket 连接发送数据,需要先 uni.connectSocket,并在 uni.onSocketOpen 回调之后才能发送。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [SendSocketMessageOptions](#sendsocketmessageoptions) | 是 | - |",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[sendSocketMessage](https://uniapp.dcloud.net.cn/api/request/websocket.html#sendsocketmessage)\n"
},
"onSocketMessage": {
"name": "## uni.onSocketMessage(callback) @onsocketmessage",
"description": "监听WebSocket接受到服务器的消息事件。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | ([OnSocketMessageCallbackResult](#onsocketmessagecallbackresult)) => void | 是 | - |",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[onSocketMessage](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketmessage)\n"
},
"closeSocket": {
"name": "## uni.closeSocket(options) @closesocket",
"description": "关闭 WebSocket 连接。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [CloseSocketOptions](#closesocketoptions) | 是 | - |",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[closeSocket](https://uniapp.dcloud.net.cn/api/request/websocket.html#closesocket)\n"
},
"onSocketClose": {
"name": "## uni.onSocketClose(callback) @onsocketclose",
"description": "监听WebSocket关闭。",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | ([OnSocketCloseCallbackResult](#onsocketclosecallbackresult)) => void | 是 | - |\n#### OnSocketCloseCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| code | number | 是 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。\t |\n| reason | string | 是 | 一个可读的字符串,表示连接被关闭的原因。\t |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[onSocketClose](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketclose)\n"
},
"setStorage": {
"name": "## uni.setStorage(options) @setstorage",
"description": "\r\nuni.setStorage函数定义\r\n将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。 \r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [SetStorageOptions](#setstorageoptions) | 是 | uni.setStorage参数定义 |\n#### SetStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| data | any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |\n| success | ([SetStorageSuccess](#setstoragesuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([SetStorageFail](#setstoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[setStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#setstorage)\n"
},
"setStorageSync": {
"name": "## uni.setStorageSync(key, data) @setstoragesync",
"description": "\r\nuni.setStorageSync函数定义\r\n将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| data | any | 是 | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[setStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#setstoragesync)\n"
},
"getStorage": {
"name": "## uni.getStorage(options) @getstorage",
"description": "\r\nuni.getStorage函数定义\r\n从本地缓存中异步获取指定 key 对应的内容。\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetStorageOptions](#getstorageoptions) | 是 | uni.getStorage参数定义 |\n#### GetStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| success | ([GetStorageSuccess](#getstoragesuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetStorageFail](#getstoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetStorageSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| data | any | 否 | key 对应的内容 |\n\n##### GetStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorage)\n"
},
"getStorageSync": {
"name": "## uni.getStorageSync(key) @getstoragesync",
"description": "\r\nuni.getStorageSync函数定义\r\n从本地缓存中同步获取指定 key 对应的内容。\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| any | \n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstoragesync)\n"
},
"getStorageInfo": {
"name": "## uni.getStorageInfo(options) @getstorageinfo",
"description": "\r\nuni.getStorageInfo函数定义\r\n异步获取当前 storage 的相关信息。\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetStorageInfoOptions](#getstorageinfooptions) | 是 | uni.getStorageInfo参数定义 |\n#### GetStorageInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([GetStorageInfoSuccess](#getstorageinfosuccess)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetStorageInfoFail](#getstorageinfofail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetStorageInfoSuccess \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| keys | Array\\<string\\> | 是 | 当前 storage 中所有的 key |\n| currentSize | number | 是 | 当前占用的空间大小, 单位:kb |\n| limitSize | number | 是 | 限制的空间大小, 单位:kb |\n\n##### GetStorageInfoFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getStorageInfo](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorageinfo)\n"
},
"getStorageInfoSync": {
"name": "## uni.getStorageInfoSync() @getstorageinfosync",
"description": "\r\nuni.getStorageInfoSync函数定义\r\n同步获取当前 storage 的相关信息。\r\n\r\n",
"param": "",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [GetStorageInfoSuccess](#getstorageinfosuccess) | \n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getStorageInfoSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorageinfosync)\n"
},
"removeStorage": {
"name": "## uni.removeStorage(options) @removestorage",
"description": "\r\nuni.removeStorage函数定义\r\n从本地缓存中异步移除指定 key。\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [RemoveStorageOptions](#removestorageoptions) | 是 | uni.removeStorage参数定义 |\n#### RemoveStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |\n| success | ([RemoveStorageSuccess](#removestoragesuccess)) => void | 否 | 接口调用的回调函数 |\n| fail | ([RemoveStorageFail](#removestoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### RemoveStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[removeStorage](hhttps://uniapp.dcloud.net.cn/api/storage/storage.html#removestorage)\n"
},
"removeStorageSync": {
"name": "## uni.removeStorageSync(key) @removestoragesync",
"description": "\r\nuni.removeStorageSync函数定义\r\n从本地缓存中同步移除指定 key。\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| key | string | 是 | 本地缓存中的指定的 key |",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[removeStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#removestoragesync)\n"
},
"clearStorage": {
"name": "## uni.clearStorage(option) @clearstorage",
"description": "\r\nuni.clearStorage函数定义\r\n清理本地数据缓存。\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| option | [ClearStorageOptions](#clearstorageoptions) | 是 | - |\n#### ClearStorageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([ClearStorageSuccess](#clearstoragesuccess)) => void | 否 | 接口调用的回调函数 |\n| fail | ([ClearStorageFail](#clearstoragefail)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ClearStorageFail \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[clearStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#clearstorage)\n"
},
"clearStorageSync": {
"name": "## uni.clearStorageSync() @clearstoragesync",
"description": "\r\nuni.clearStorageSync函数定义\r\n清理本地数据缓存。\r\n",
"param": "",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
"tutorial": "\n### 参见\n[clearStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#clearstoragesync)\n"
},
"getLocation": {
"name": "## uni.getLocation(options) @getlocation",
"description": "\r\n获取当前的地理位置、速度\r\n",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetLocationOptions](#getlocationoptions) | 是 | - |",
"returnValue": "",
"compatibility": "",
"tutorial": "\n### 参见\n[getLocation](http://uniapp.dcloud.io/api/location/location?id=getlocation)\n"
},
"chooseImage": {
"name": "## uni.chooseImage(options) @chooseimage",
"description": "从本地相册选择图片或使用相机拍照",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [ChooseImageOptions](#chooseimageoptions) | 是 | - |\n#### ChooseImageOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| count | number | 否 | 最多可以选择的图片张数,默认9 |\n| sizeType | Array\\<string\\> | 否 | original 原图,compressed 压缩图,默认二者都有 |\n| sourceType | Array\\<string\\> | 否 | album 从相册选图,camera 使用相机,默认二者都有 |\n| extension | Array\\<string\\> | 否 | 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。 |\n| crop | [ChooseImageCropOptions](#chooseimagecropoptions) | 否 | 图像裁剪参数,设置后 sizeType 失效。 |\n| success | ([ChooseImageSuccessCallback](#chooseimagesuccesscallback)) => void | 否 | 成功则返回图片的本地文件路径列表 tempFilePaths |\n| fail | ([ChooseImageFailCallback](#chooseimagefailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ChooseImageCropOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| width | number | 是 | 裁剪的宽度,单位为px,用于计算裁剪宽高比。 |\n| height | number | 是 | 裁剪的高度,单位为px,用于计算裁剪宽高比。 |\n| quality | number | 否 | 取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。 |\n| resize | boolean | 否 | 是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注:设置为false时在裁剪编辑界面显示图片的像素值,设置为true时不显示。 |\n| saveToAlbum | boolean | 否 | 是否将裁剪的图片保存到手机相册里,默认值为false。 |\n\n##### ChooseImageSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | - |\n| tempFilePaths | Array\\<string\\> | 是 | - |\n| tempFiles | any | 是 | - |\n\n##### ChooseImageFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n",
"tutorial": "\n### 参见\n[chooseImage](http://uniapp.dcloud.io/api/media/image?id=chooseimage)\n"
},
"saveImageToPhotosAlbum": {
"name": "## uni.saveImageToPhotosAlbum(options) @saveimagetophotosalbum",
"description": "保存图片到系统相册",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [SaveImageToPhotosAlbumOptions](#saveimagetophotosalbumoptions) | 是 | - |\n#### SaveImageToPhotosAlbumOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filePath | string | 是 | 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径 |\n| success | ([SaveImageToPhotosAlbumSuccessCallback](#saveimagetophotosalbumsuccesscallback)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([GetImageInfoFailCallback](#getimageinfofailcallback)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SaveImageToPhotosAlbumSuccessCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| path | string | 是 | 保存到相册的图片路径 |\n\n##### GetImageInfoFailCallback \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errCode | number | 是 | 错误码 |\n| errSubject | string | 是 | 调用API的名称 |\n| errMsg | string | 是 | 错误的详细信息 |\n| cause | any | 否 | 错误来源 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | - | - | - |\n",
"tutorial": "\n### 参见\n[saveImageToPhotosAlbum](http://uniapp.dcloud.io/api/media/image?id=saveimagetophotosalbum)\n"
},
"getAppAuthorizeSetting": {
"name": "## uni.getAppAuthorizeSetting() @getappauthorizesetting",
"description": "获取 APP 授权设置。",
"param": "",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [GetAppAuthorizeSettingResult](#getappauthorizesettingresult) | \n\n#### GetAppAuthorizeSettingResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| albumAuthorized | string | 否 | 允许 App 使用相册的开关(仅 iOS 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) |\n| bluetoothAuthorized | string | 否 | 允许 App 使用蓝牙的开关(仅 iOS 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台没有该值;iOS平台:表示没有在 `manifest.json -\\> App模块配置` 中配置 `BlueTooth(低功耗蓝牙)` 模块 |\n| cameraAuthorized | string | 是 | 允许 App 使用摄像头的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.CAMERA` 权限;iOS平台没有该值 |\n| locationAuthorized | string | 是 | 允许 App 使用定位的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.ACCESS_COARSE_LOCATION` 权限;iOS平台:表示没有在 `manifest.json -\\> App模块配置` 中配置 `Geolocation(定位)` 模块 |\n| locationAccuracy | string | 否 | 定位准确度。true 表示模糊定位,false 表示精确定位(仅 iOS 支持) - reduced: 模糊定位 - full: 精准定位 - unsupported: 不支持(包括用户拒绝定位权限和没有在 `manifest.json -\\> App模块配置` 中配置 `Geolocation(定位)` 模块) |\n| locationReducedAccuracy | boolean | 否 | 定位准确度(推荐使用 locationAccuracy 属性)。true 表示模糊定位,false 表示精确定位(仅 iOS 支持) |\n| microphoneAuthorized | string | 是 | 允许 App 使用麦克风的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.RECORD_AUDIO` 权限;iOS平台没有该值 |\n| notificationAuthorized | string | 是 | 允许 App 通知的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台没有该值;iOS平台:表示没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| notificationAlertAuthorized | string | 否 | 允许 App 通知带有提醒的开关(仅 iOS 10.0+ 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: 没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| notificationBadgeAuthorized | string | 否 | 允许 App 通知带有标记的开关(仅 iOS 10.0+ 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: 没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| notificationSoundAuthorized | string | 否 | 允许 App 通知带有声音的开关(仅 iOS 10.0+ 支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: 没有在 `manifest.json -\\> App模块配置` 中配置 `Push(推送)` 模块 |\n| phoneCalendarAuthorized | string | 否 | 允许读写日历的开关(仅微信小程序支持) - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getAppAuthorizeSetting](http://uniapp.dcloud.io/api/system/getappauthorizesetting)\n"
},
"getAppBaseInfo": {
"name": "## uni.getAppBaseInfo(config) @getappbaseinfo",
"description": "获取app基本信息",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| config | [GetAppBaseInfoOptions](#getappbaseinfooptions) | 是 | - |\n#### GetAppBaseInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filter | Array\\<string\\> | 是 | - |\n",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [GetAppBaseInfoResult](#getappbaseinforesult) | \n\n#### GetAppBaseInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| appId | string | 否 | manifest.json 中应用appid,即DCloud appid。\t |\n| appName | string | 否 | manifest.json 中应用名称\t |\n| appVersion | string | 否 | manifest.json 中应用版本名称。\t |\n| appVersionCode | string | 否 | manifest.json 中应用版本名号。\t |\n| appLanguage | string | 否 | 应用设置的语言en、zh-Hans、zh-Hant、fr、es\t |\n| language | string | 否 | 应用设置的语言\t |\n| version | string | 否 | 引擎版本号 |\n| appWgtVersion | string | 否 | 应用资源(wgt)的版本名称。\t |\n| hostLanguage | string | 否 | 小程序宿主语言\t |\n| hostVersion | string | 否 | App、小程序宿主版本。 |\n| hostName | string | 否 | 小程序宿主名称\t |\n| hostPackageName | string | 否 | 小程序宿主包名\t |\n| hostSDKVersion | string | 否 | uni小程序SDK版本、小程序客户端基础库版本\t |\n| hostTheme | string | 否 | 系统当前主题,取值为light或dark。微信小程序全局配置\"darkmode\":true时才能获取,否则为 null (不支持小游戏) |\n| isUniAppX | boolean | 是 | 是否uni-app x |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getAppBaseInfo](https://uniapp.dcloud.net.cn/api/system/getAppBaseInfo.html)\n"
},
"getDeviceInfo": {
"name": "## uni.getDeviceInfo(config) @getdeviceinfo",
"description": "获取设备信息",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| config | [GetDeviceInfoOptions](#getdeviceinfooptions) | 是 | - |\n#### GetDeviceInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filter | Array\\<string\\> | 是 | - |\n",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [GetDeviceInfoResult](#getdeviceinforesult) | \n\n#### GetDeviceInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| brand | string | 否 | 设备品牌 |\n| deviceBrand | string | 否 | 设备品牌 |\n| deviceId | string | 否 | 设备 id 。由 uni-app 框架生成并存储,清空 Storage 会导致改变 |\n| model | string | 否 | 设备型号\t |\n| deviceModel | string | 否 | 设备型号\t |\n| deviceType | string | 否 | 设备类型phone、pad、pc\t |\n| deviceOrientation | string | 否 | 设备方向 竖屏 portrait、横屏 landscape\t |\n| devicePixelRatio | string | 否 | 设备像素比\t |\n| system | string | 否 | 操作系统及版本\t |\n| platform | string | 否 | 客户端平台\t |\n| oaid | string | 否 | oaid标识 Android专有 |\n| isRoot | boolean | 否 | 是否root |\n| isSimulator | boolean | 否 | 是否是模拟器 |\n| isUSBDebugging | boolean | 否 | adb是否开启 |\n| idfa | string | 否 | idfa标识 iOS专有 |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getDeviceInfo](https://uniapp.dcloud.net.cn/api/system/getDeviceInfo.html)\n"
},
"getSystemInfo": {
"name": "## uni.getSystemInfo(options) @getsysteminfo",
"description": "异步获取系统信息",
"param": "### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [GetSystemInfoOptions](#getsysteminfooptions) | 是 | - |\n#### GetSystemInfoOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| success | ([GetSystemInfoResult](#getsysteminforesult)) => void | 否 | 接口调用成功的回调函数 |\n| fail | ([UniError](#unierror)) => void | 否 | 接口调用失败的回调函数 |\n| complete | (any) => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetSystemInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| SDKVersion | string | 是 | 客户端基础库版本 |\n| app | string | 否 | 当前运行的客户端 |\n| appId | string | 是 | `manifest.json` 中应用appid。 |\n| appLanguage | string | 否 | 应用设置的语言。仅 App、H5 支持 |\n| appName | string | 是 | `manifest.json` 中应用名称。和`字节跳动小程序、飞书小程序`字段冲突,原字端与`hostName`一致 |\n| appVersion | string | 是 | `manifest.json` 中应用版本名称。 |\n| appVersionCode | number | 是 | `manifest.json` 中应用版本名号 |\n| appWgtVersion | string | 否 | 应用资源(wgt)的版本名称。(仅 App 支持) |\n| brand | string | 否 | 手机品牌。H5 不支持 |\n| browserName | string | 是 | 浏览器名称。`App` 端是系统 webview 的名字,比如 wkwebview、chrome。小程序端为空 |\n| browserVersion | string | 是 | 浏览器版本、webview 版本。小程序端为空 |\n| deviceId | string | 是 | 设备 ID |\n| deviceBrand | string | 否 | 设备品牌。如:`apple`、`huawei`。H5 不支持 |\n| deviceModel | string | 是 | 设备型号 |\n| deviceType | string | 是 | 设备类型。`phone`、`pad`、`pc` |\n| devicePixelRatio | number | 是 | 设备像素比 |\n| deviceOrientation | string | 是 | 设备方向。如:`竖屏 portrait`、`横屏 landscape` - portrait: 竖屏 - landscape: 横屏 |\n| fontSizeSetting | number | 否 | 用户字体大小设置 |\n| host | string | 否 | 宿主平台 |\n| hostFontSizeSetting | number | 否 | 用户字体大小设置 |\n| hostSDKVersion | string | 否 | 客户端基础库版本 |\n| hostName | string | 否 | App、小程序宿主名称,如:`WeChat`、`FeiShu`、`alipay`、`DINGTALK`。H5 不支持 |\n| hostVersion | string | 否 | App、小程序宿主版本。如:微信版本号。H5 不支持 |\n| hostLanguage | string | 否 | 小程序宿主语言、app 语言 |\n| hostTheme | string | 否 | App 主题 `light`、`dark`。H5 端为空,小程序端为系统当前主题 |\n| hostPackageName | string | 否 | 小程序宿主包名。仅 App 支持,其他平台为空 |\n| language | string | 否 | 程序设置的语言 |\n| model | string | 是 | 手机型号 |\n| osName | string | 是 | ios、android、windows、mac、linux |\n| osVersion | string | 是 | 操作系统版本。如 ios 版本,andriod 版本 |\n| osLanguage | string | 否 | 操作系统语言,小程序端与 `version` 相同,H5 与浏览器语言一致 |\n| osTheme | string | 否 | |操作系统主题 light、dark。小程序端为小程序主题,H5 端为空 |\n| pixelRatio | number | 是 | 设备像素比 |\n| platform | string | 是 | 客户端平台 |\n| screenWidth | number | 是 | 屏幕宽度 |\n| screenHeight | number | 是 | 屏幕高度 |\n| statusBarHeight | number | 否 | 状态栏的高度 |\n| storage | string | 否 | 设备磁盘容量 |\n| swanNativeVersion | string | 否 | 宿主平台版本号 |\n| system | string | 是 | 操作系统版本 |\n| safeArea | [SafeArea](#safearea) | 否 | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets) | 否 | 在竖屏正方向下的安全区域插入位置 |\n| ua | string | 是 | 用户标识。小程序端为空 |\n| uniCompileVersion | string | 是 | uni 编译器版本号 |\n| uniPlatform | string | 是 | uni-app 运行平台。如:`app`、`mp-weixin`、`web` |\n| uniRuntimeVersion | string | 是 | uni 运行时版本 |\n| version | string | 是 | 引擎版本号 |\n| romName | string | 否 | rom 名称。Android 部分机型获取不到值。iOS 恒为 `ios` |\n| romVersion | string | 否 | rom 版本号。Android 部分机型获取不到值。iOS 恒为 `ios 版本号` |\n| windowWidth | number | 是 | 可使用窗口宽度 |\n| windowHeight | number | 是 | 可使用窗口高度 |\n| navigationBarHeight | number | 否 | 导航栏的高度 |\n| titleBarHeight | number | 否 | 标题栏高度 |\n| currentBattery | string | 否 | 当前电量百分比 |\n| AppPlatform | string | 否 | App平台 |\n| windowTop | number | 是 | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | 可使用窗口的底部位置 |\n| albumAuthorized | boolean | 否 | 允许微信使用相册的开关(仅 iOS 有效) |\n| cameraAuthorized | boolean | 否 | 允许微信使用摄像头的开关 |\n| locationAuthorized | boolean | 否 | 允许微信使用定位的开关 |\n| microphoneAuthorized | boolean | 否 | 允许微信使用麦克风的开关 |\n| notificationAuthorized | boolean | 否 | 允许微信通知的开关 |\n| notificationAlertAuthorized | boolean | 否 | 允许微信通知带有提醒的开关(仅 iOS 有效) |\n| notificationBadgeAuthorized | boolean | 否 | 允许微信通知带有标记的开关(仅 iOS 有效) |\n| notificationSoundAuthorized | boolean | 否 | 允许微信通知带有声音的开关(仅 iOS 有效) |\n| bluetoothEnabled | boolean | 否 | 蓝牙的系统开关 |\n| locationEnabled | boolean | 否 | 地理位置的系统开关 |\n| wifiEnabled | boolean | 否 | Wi-Fi 的系统开关 |\n| cacheLocation | any | 否 | 上一次缓存的位置信息 |\n| theme | string | 否 | 系统当前主题,取值为light或dark。仅微信小程序支持 |\n| oaid | string | 否 | oaid |\n| osAndroidAPILevel | number | 否 | Android 系统API库的版本。 |\n\n###### SafeArea \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左上角横坐标 |\n| right | number | 是 | 安全区域右下角横坐标 |\n| top | number | 是 | 安全区域左上角纵坐标 |\n| bottom | number | 是 | 安全区域右下角纵坐标 |\n| width | number | 是 | 安全区域的宽度,单位逻辑像素 |\n| height | number | 是 | 安全区域的高度,单位逻辑像素 |\n\n###### SafeAreaInsets \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| left | number | 是 | 安全区域左侧插入位置 |\n| right | number | 是 | 安全区域右侧插入位置 |\n| top | number | 是 | 安全区顶部插入位置 |\n| bottom | number | 是 | 安全区域底部插入位置 |\n",
"returnValue": "",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getSystemInfo](http://uniapp.dcloud.io/api/system/info?id=getsysteminfo)\n"
},
"getSystemInfoSync": {
"name": "## uni.getSystemInfoSync() @getsysteminfosync",
"description": "同步获取系统信息",
"param": "",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [GetSystemInfoResult](#getsysteminforesult) | \n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getSystemInfoSync](http://uniapp.dcloud.io/api/system/info?id=getsysteminfosync)\n"
},
"getWindowInfo": {
"name": "## uni.getWindowInfo() @getwindowinfo",
"description": "同步获取窗口信息",
"param": "",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [GetWindowInfoResult](#getwindowinforesult) | \n\n#### GetWindowInfoResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| pixelRatio | number | 是 | 设备像素比 |\n| screenWidth | number | 是 | 屏幕宽度 |\n| screenHeight | number | 是 | 屏幕高度 |\n| windowWidth | number | 是 | 可使用窗口宽度 |\n| windowHeight | number | 是 | 可使用窗口高度 |\n| statusBarHeight | number | 是 | 状态栏的高度 |\n| windowTop | number | 是 | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | 可使用窗口的底部位置 |\n| safeArea | [SafeArea](#safearea) | 是 | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets) | 是 | 在竖屏正方向下的安全区域插入位置 |\n| screenTop | number | 是 | 窗口上边缘的 y 值 |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getWindowInfo](http://uniapp.dcloud.io/api/system/getWindowInfo.html)\n"
},
"getSystemSetting": {
"name": "## uni.getSystemSetting() @getsystemsetting",
"description": "获取系统设置",
"param": "",
"returnValue": "### 返回值 \n\n| 类型 |\n| :-|\n| [GetSystemSettingResult](#getsystemsettingresult) | \n\n#### GetSystemSettingResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| bluetoothEnabled | boolean | 否 | 蓝牙是否开启 |\n| bluetoothError | string | 否 | 蓝牙的报错信息 |\n| locationEnabled | boolean | 否 | 位置是否开启 |\n| wifiEnabled | boolean | 否 | wifi是否开启 |\n| wifiError | string | 否 | wifi的报错信息 |\n| deviceOrientation | string | 否 | 设备方向 |\n",
"compatibility": "### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
"tutorial": "\n### 参见\n[getSystemSetting](https://uniapp.dcloud.net.cn/api/system/getsystemsetting.html)\n"
},
"general_type": {
"name": "## 通用类型\n",
"param": "### UniError \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| ctors | Constructor | 是 | - |\n| errSubject | string | 是 | - |\n| errCode | number | 是 | - |\n| errMsg | string | 是 | - |\n| data | any | 否 | - |\n| name | string | 是 | - |\n| message | string | 是 | - |\n| cause | [UTSError](#utserror) | 否 | - |\n| stack | string | 否 | - |\n\n### GeneralCallbackResult \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| errMsg | string | 是 | 错误信息 |\n"
}
}
\ No newline at end of file
{"animation-view":{"name":"## animation-view","description":"Lottie 动画","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| path | String | - | 动画资源地址,目前只支持绝对路径 |\n| loop | Boolean | - | 动画是否循环播放 |\n| autoplay | Boolean | - | 动画是否自动播放 |\n| action | String | - | 动画操作,可取值 play、pause、stop [action](#action-values) |\n| hidden | Boolean | - | 是否隐藏动画 |\n| @ended | Any | - | - |\n\n#### action @action-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| play | 播放 |\n| pause | 暂停 |\n| stop | 停止 |\n","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/animation-view)\n"},"button":{"name":"## button","description":"按钮","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |\n| hover-class | String | - | 指定按下去的样式类。当 hover-class=\"none\" 时,没有点击态效果 |\n| hover-stop-propagation | Boolean | - | 指定是否阻止本节点的祖先节点出现点击态 |\n| hover-start-time | Number | - | 按住后多久出现点击态,单位毫秒 |\n| hover-stay-time | Number | - | 手指松开后点击态保留时间,单位毫秒 |\n| size | String | - | 按钮的大小 [size](#size-values) |\n| type | String | - | 按钮的类型 [type](#type-values) |\n| plain | Boolean | - | 按钮是否镂空,背景色透明 |\n| loading | Boolean | - | 名称前是否带 loading 图标 |\n| form-type | String | - | 用于 form 组件,点击分别会触发 form 组件的 submit/reset 事件 [form-type](#form-type-values) |\n| open-type | String | - | 微信开放能力 [open-type](#open-type-values) |\n| lang | String | - | 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。 |\n| session-from | String | - | 会话来源 |\n| send-message-title | String | - | 会话内消息卡片标题 |\n| send-message-path | String | - | 会话内消息卡片点击跳转应用路径 |\n| send-message-img | String | - | 会话内消息卡片图片 |\n| show-message-card | Boolean | - | 显示会话内消息卡片 |\n| app-parameter | String | - | 打开 APP 时,向 APP 传递的参数 |\n| group-id | String | - | 打开群资料卡时,传递的群号 |\n| guild-id | String | - | 打开频道页面时,传递的频道号 |\n| public-id | String | - | 打开公众号资料卡时,传递的号码 |\n| @getuserinfo | (event: Event) => void | - | 用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致 |\n| @contact | (event: Event) => void | - | 客服消息回调 |\n| @getphonenumber | (event: Event) => void | - | 获取用户手机号回调 |\n| @error | (event: Event) => void | - | 当使用开放能力时,发生错误的回调 |\n| @opensetting | (event: Event) => void | - | 在打开授权设置页后回调 |\n| @launchapp | (event: Event) => void | - | 打开 APP 成功的回调 |\n| @chooseavatar | (event: Event) => void | - | 获取用户头像回调 |\n| @chooseaddress | (event: Event) => void | - | 调起用户编辑并选择收货地址的回调 |\n| @chooseinvoicetitle | (event: Event) => void | - | 用户选择发票抬头的回调 |\n| @addgroupapp | (event: Event) => void | - | 添加群应用的回调 |\n| @subscribe | (event: Event) => void | - | 订阅消息授权回调 |\n| @login | (event: Event) => void | - | 登录回调 |\n\n#### size @size-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| default | - |\n| mini | - |\n\n\n#### type @type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| default | - |\n| primary | - |\n| warn | - |\n\n\n#### form-type @form-type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| submit | 提交表单 |\n| reset | 重置表单 |\n\n\n#### open-type @open-type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| feedback | 打开“意见反馈”页面,用户可提交反馈内容并上传日志 |\n| share | 触发用户转发 |\n| getUserInfo | 获取用户信息,可以从@getuserinfo回调中获取到用户信息 |\n| contact | 打开客服会话,如果用户在会话中点击消息卡片后返回应用,可以从 @contact 回调中获得具体信息 |\n| getPhoneNumber | 获取用户手机号,可以从@getphonenumber回调中获取到用户信息 |\n| launchApp | 打开APP,可以通过app-parameter属性设定向APP传的参数 |\n| openSetting | 打开授权设置页 |\n| chooseAvatar | 获取用户头像,可以从@chooseavatar回调中获取到头像信息 |\n| getAuthorize | 支持小程序授权 |\n| lifestyle | 关注生活号 |\n| contactShare | 分享到通讯录好友 |\n| openGroupProfile | 呼起QQ群资料卡页面,可以通过group-id属性设定需要打开的群资料卡的群号,同时manifest.json中必须配置groupIdList |\n| openGuildProfile | 呼起频道页面,可以通过guild-id属性设定需要打开的频道ID |\n| openPublicProfile | 打开公众号资料卡,可以通过public-id属性设定需要打开的公众号资料卡的号码,同时manifest.json中必须配置publicIdList |\n| shareMessageToFriend | 在自定义开放数据域组件中,向指定好友发起分享据 |\n| addFriend | 添加好友,对方需要通过该小程序进行授权,允许被加好友后才能调用成功用户授权 |\n| addColorSign | 添加彩签,点击后添加状态有用户提示,无回调 |\n| addGroupApp | 添加群应用(只有管理员或群主有权操作),添加后给button绑定@addgroupapp事件接收回调数据 |\n| addToFavorites | 收藏当前页面,点击按钮后会触发Page.onAddToFavorites方法 |\n| chooseAddress | 选择用户收货地址,可以从@chooseaddress回调中获取到用户选择的地址信息 |\n| chooseInvoiceTitle | 选择用户发票抬头,可以从@chooseinvoicetitle回调中获取到用户选择发票抬头信息 |\n| login | 登录,可以从@login回调中确认是否登录成功 |\n| subscribe | 订阅类模板消息,需要用户授权才可发送 |\n| favorite | 触发用户收藏 |\n| watchLater | 触发用户稍后再看 |\n| openProfile | 触发打开用户主页 |\n","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/button)\n"},"checkbox":{"name":"## checkbox","description":"多选项目","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |\n| value | String | - | checkbox 标识,选中时触发 checkbox-group 的 change 事件,并携带 checkbox 的 value |\n| checked | Boolean | - | 当前是否选中,可用来设置默认选中 |\n| color | ColorString | #007aff | checkbox的颜色 |\n| backgroundColor | ColorString | #ffffff | checkbox默认的背景颜色 |\n| borderColor | ColorString | #d1d1d1 | checkbox默认的边框颜色 |\n| activeBackgroundColor | ColorString | #ffffff | checkbox选中时的背景颜色 |\n| activeBorderColor | ColorString | #d1d1d1 | checkbox选中时的边框颜色 |\n| iconColor | ColorString | #007aff | checkbox的图标颜色,优先级大于color属性 |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/checkbox)\n"},"checkbox-group":{"name":"## checkbox-group","description":"多项选择器,内部由多个checkbox组成","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| @change | (event: CheckboxGroupChangeEvent) => void | - | checkbox-group中选中项发生改变是触发 change 事件,detail = {value:\\[选中的checkbox的value的数组\\]} |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/checkbox)\n"},"image":{"name":"## image","description":"图片","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| loop | Boolean | - | 是否循环播放 |\n| src | ImageURIString | - | 图片资源地址 |\n| mode | String | - | 图片裁剪、缩放的模式 [mode](#mode-values) |\n| lazy-load | Boolean | - | 图片懒加载。只针对page与scroll-view下的image有效 |\n| fade-show | Boolean | - | 图片显示动画效果 |\n| webp | Boolean | - | 默认不解析 webP 格式,只支持网络资源 |\n| show-menu-by-longpress | Boolean | - | 开启长按图片显示识别小程序码菜单 |\n| draggable | Boolean | - | 鼠标长按是否能拖动图片(仅H5平台) |\n| @error | (event: Event) => void | - | 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'} |\n| @load | (event: Event) => void | - | 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'} |\n\n#### mode @mode-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| scaleToFill | 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 |\n| aspectFit | 保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。 |\n| aspectFill | 保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取 |\n| widthFix | 宽度不变,高度自动变化,保持原图宽高比不变 |\n| heightFix | 高度不变,宽度自动变化,保持原图宽高比不变 |\n| top | 不缩放图片,只显示图片的顶部区域 |\n| bottom | 不缩放图片,只显示图片的底部区域 |\n| center | 不缩放图片,只显示图片的中间区域 |\n| left | 不缩放图片,只显示图片的左边区域 |\n| right | 不缩放图片,只显示图片的右边区域 |\n| top left | 不缩放图片,只显示图片的左上边区域 |\n| top rigth | 不缩放图片,只显示图片的右上边区域 |\n| bottom left | 不缩放图片,只显示图片的左下边区域 |\n| bottom right | 不缩放图片,只显示图片的右下边区域 |\n","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| image | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/image)\n"},"input":{"name":"## input","description":"输入框","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |\n| value | String | - | 输入框的初始内容 |\n| type | String | - | input的类型 [type](#type-values) |\n| password | Boolean | - | 是否是密码类型 |\n| placeholder | String | - | 输入框为空时占位符 |\n| placeholder-style | String | - | 指定 placeholder 的样式 |\n| placeholder-class | String | - | 指定 placeholder 的样式类 |\n| maxlength | Number | - | 最大输入长度,设置为 -1 的时候不限制最大长度 |\n| cursor-spacing | Number | - | 指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 |\n| auto-focus | Boolean | - | 自动获取焦点 |\n| focus | Boolean | - | 获取焦点 |\n| confirm-type | String | - | 设置键盘右下角按钮的文字 [confirm-type](#confirm-type-values) |\n| always-embed | Boolean | - | 强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效) |\n| confirm-hold | Boolean | - | 点击键盘右下角按钮时是否保持键盘不收起 |\n| cursor | Number | - | 指定focus时的光标位置 |\n| selection-start | Number | - | 光标起始位置,自动聚集时有效,需与selection-end搭配使用 |\n| selection-end | Number | - | 光标结束位置,自动聚集时有效,需与selection-satrt搭配使用 |\n| adjust-position | Boolean | - | 键盘弹起时,是否自动上推页面 |\n| text-content-type | String | - | 文本区域的语义,根据类型自动填充 [text-content-type](#text-content-type-values) |\n| hold-keyboard | Boolean | - | focus时,点击页面的时候不收起键盘 |\n| safe-password-cert-path | String | - | 安全键盘加密公钥的路径,只支持包内路径 |\n| safe-password-length | Number | - | 安全键盘输入密码长度 |\n| safe-password-time-stamp | Number | - | 安全键盘加密时间戳 |\n| safe-password-nonce | String | - | 安全键盘加密盐值 |\n| safe-password-salt | String | - | 安全键盘计算 hash 盐值,若指定custom-hash 则无效 |\n| safe-password-custom-hash | String | - | 安全键盘计算 hash 的算法表达式 |\n| random-number | Boolean | - | 当 type 为 number, digit, idcard 数字键盘是否随机排列 |\n| controlled | Boolean | - | 是否为受控组件。为 true 时,value 内容会完全受 setData 控制 |\n| always-system | Boolean | - | 是否强制使用系统键盘和 Web-view 创建的 input 元素。为 true 时,confirm-type、confirm-hold 可能失效 |\n| inputmode | String | - | 是一个枚举属性,它提供了用户在编辑元素或其内容时可能输入的数据类型的提示。在符合条件的高版本webview里,uni-app的 web 和 app-vue 平台中可使用本属性。 [inputmode](#inputmode-values) |\n| @input | (event: Event) => void | - | 当键盘输入时,触发input事件,event.detail = {value, cursor},处理函数可以直接 return 一个字符串,将替换输入框的内容。 |\n| @focus | (event: Event) => void | - | 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度,在基础库 1.9.90 起支持 |\n| @blur | (event: Event) => void | - | 输入框失去焦点时触发,event.detail = {value: value} |\n| @keyboardheightchange | (event: Event) => void | - | 键盘高度发生变化的时候触发此事件,event.detail = {height: height, duration: duration} |\n| @confirm | (event: Event) => void | - | 点击完成按钮时触发,event.detail = {value: value} |\n\n#### type @type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| text | 文本输入键盘 |\n| number | 数字输入键盘 |\n| idcard | 身份证输入键盘 |\n| digit | 带小数点数字输入键盘 |\n| safe-password | 密码安全输入键盘 |\n| nickname | 昵称输入键盘 |\n\n\n#### confirm-type @confirm-type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| send | 发送 |\n| search | 搜索 |\n| next | 下一个 |\n| go | 前往 |\n| done | 完成 |\n\n\n#### text-content-type @text-content-type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| oneTimeCode | 一次性验证码 |\n\n\n#### inputmode @inputmode-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| none | 无虚拟键盘。在应用程序或者站点需要实现自己的键盘输入控件时很有用。 |\n| text | 使用用户本地区域设置的标准文本输入键盘。 |\n| decimal | 小数输入键盘,包含数字和分隔符(通常是“ . ”或者“ , ”),设备可能也可能不显示减号键。 |\n| numeric | 数字输入键盘,所需要的就是 0 到 9 的数字,设备可能也可能不显示减号键。 |\n| tel | 电话输入键盘,包含 0 到 9 的数字、星号(*)和井号(#)键。表单输入里面的电话输入通常应该使用 \\\\<input type=\"tel\"\\\\> 。 |\n| search | 为搜索输入优化的虚拟键盘,比如,返回键可能被重新标记为“搜索”,也可能还有其他的优化。 |\n| email | 为邮件地址输入优化的虚拟键盘,通常包含\"@\"符号和其他优化。表单里面的邮件地址输入应该使用 \\\\<input type=\"email\"\\\\> 。 |\n| url | 为网址输入优化的虚拟键盘,比如,“/”键会更加明显、历史记录访问等。表单里面的网址输入通常应该使用 \\\\<input type=\"url\"\\\\> 。 |\n","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/input)\n"},"list-item":{"name":"## list-item","description":"列表组件","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| type | Number | - | 对应list-item的类型 List 将对同类型条目进行复用,所以合理的类型拆分,可以很好地提升 List 性能 |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/list-view#list-item)\n"},"list-view":{"name":"## list-view","description":"列表组件","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| scroll-x | Boolean | false | 允许横向滚动,不支持同时设置scroll-y属性 |\n| scroll-y | Boolean | false | 允许纵向滚动,不支持同时设置scroll-x属性 |\n| rebound | Boolean | true | 控制是否回弹效果 |\n| upper-threshold | Number | 50 | 距顶部/左边多远时(单位px),触发 scrolltoupper 事件 |\n| lower-threshold | Number | 50 | 距底部/右边多远时(单位px),触发 scrolltolower 事件 |\n| scroll-top | Number | - | 设置竖向滚动条位置 |\n| scroll-left | Number | - | 设置横向滚动条位置 |\n| show-scrollbar | Boolean | true | 控制是否出现滚动条 |\n| scroll-into-view | String | - | 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素 |\n| scroll-with-animation | Boolean | false | 在设置滚动条位置时使用动画过渡 |\n| refresher-enabled | Boolean | false | 开启自定义下拉刷新 |\n| refresher-threshold | Number | false | 设置自定义下拉刷新阈值 |\n| refresher-default-style | String | black | 设置自定义下拉刷新默认样式,支持设置 black,white,none,none 表示不使用默认样式。默认:black |\n| refresher-background | String | #FFF | 设置自定义下拉刷新区域背景颜色。默认'#FFF' |\n| refresher-triggered | Boolean | false | 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发 |\n| @refresherpulling | (event: RefresherEvent) => void | - | 自定义下拉刷新控件被下拉 |\n| @refresherrefresh | (event: RefresherEvent) => void | - | 自定义下拉刷新被触发 |\n| @refresherrestore | (event: RefresherEvent) => void | - | 自定义下拉刷新被复位 |\n| @refresherabort | (event: RefresherEvent) => void | - | 自定义下拉刷新被中止 |\n| @scrolltoupper | (event: ScrollToUpperEvent) => void | - | 滚动到顶部/左边,会触发 scrolltoupper 事件 |\n| @scrolltolower | (event: ScrollToLowerEvent) => void | - | 滚动到底部/右边,会触发 scrolltolower 事件 |\n| @scroll | (event: ScrollEvent) => void | - | 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY} |","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| @refresherpulling | 4.4 | √ | 3.9+ | - | - | - |\n| @refresherrefresh | 4.4 | √ | 3.9+ | - | - | - |\n| @refresherrestore | 4.4 | √ | 3.9+ | - | - | - |\n| @refresherabort | 4.4 | √ | 3.9+ | - | - | - |\n| @scrolltoupper | 4.4 | √ | 3.9+ | - | - | - |\n| @scrolltolower | 4.4 | √ | 3.9+ | - | - | - |\n| @scroll | 4.4 | √ | 3.9+ | - | - | - |\n","reference":""},"navigator":{"name":"## navigator","description":"页面链接","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| target | String | - | 在哪个目标上发生跳转,默认当前应用 |\n| url | String\\|PageURIString | - | 当前应用内的跳转链接 |\n| open-type | String | - | 跳转方式 [open-type](#open-type-values) |\n| delta | Number | - | 当 open-type 为 navigateBack 时有效,表示回退的层数 |\n| app-id | String | - | 当target=\"miniProgram\"时有效,要打开的小程序 appId |\n| path | String | - | 当target=\"miniProgram\"时有效,打开的页面路径,如果为空则打开首页 |\n| extra-data | Object | - | 当target=\"miniProgram\"时有效,需要传递给目标应用的数据,目标应用可在 App.onLaunch(),App.onShow() 中获取到这份数据 |\n| version | String | - | 当target=\"miniProgram\"时有效,要打开的小程序版本,有效值 develop(开发版),trial(体验版),release(正式版),仅在当前小程序为开发版或体验版时此参数有效;如果当前小程序是体验版或正式版,则打开的小程序必定是正式版 |\n| animation-type | String | - | 当 open-type=\"navigateTo\" 或 open-type=\"navigateBack\" 时有效,窗口的显示/关闭的动画类型。 [animation-type](#animation-type-values) |\n| animation-duration | Number | - | 当 open-type=\"navigateTo\" 或 open-type=\"navigateBack\" 时有效,窗口的显示/关闭动画的持续时间。 |\n| hover-class | String | - | 指定按下去的样式类。当 hover-class=\"none\" 时,没有点击态效果 |\n| hover-stop-propagation | Boolean | - | 指定是否阻止本节点的祖先节点出现点击态 |\n| hover-start-time | Number | - | 按住后多久出现点击态,单位毫秒 |\n| hover-stay-time | Number | - | 手指松开后点击态保留时间,单位毫秒 |\n\n#### open-type @open-type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| navigate | 对应 wx.navigateTo 或 wx.navigateToMiniProgram 的功能 |\n| redirect | 对应 wx.redirectTo 的功能 |\n| switchTab | 对应 wx.switchTab 的功能 |\n| reLaunch | 对应 wx.reLaunch 的功能 |\n| navigateBack | 对应 wx.navigateBack 的功能 |\n\n\n#### animation-type @animation-type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| auto | 自动选择动画效果 |\n| none | 无动画效果 |\n| slide-in-right | 从右侧横向滑动效果 |\n| slide-in-left | 左侧横向滑动效果 |\n| slide-in-top | 从上侧竖向滑动效果 |\n| slide-in-bottom | 从下侧竖向滑动效果 |\n| fade-in | 从透明到不透明逐渐显示效果 |\n| zoom-out | 从小到大逐渐放大显示效果 |\n| zoom-fade-out | 从小到大逐渐放大并且从透明到不透明逐渐显示效果 |\n| pop-in | 从右侧平移入栈动画效果 |\n| slide-out-right | 横向向右侧滑出屏幕动画 |\n| slide-out-left | 横向向左侧滑出屏幕动画 |\n| slide-out-top | 竖向向上侧滑出屏幕动画 |\n| slide-out-bottom | 竖向向下侧滑出屏幕动画 |\n| fade-out | 从不透明到透明逐渐隐藏动画 |\n| zoom-in | 从大逐渐缩小关闭动画 |\n| zoom-fade-in | 从大逐渐缩小并且从不透明到透明逐渐隐藏关闭动画 |\n| pop-out | 从右侧平移出栈动画效果 |\n","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/navigator)\n"},"picker-view-column":{"name":"## picker-view-column","description":"仅可放置于 picker-view 中,其孩子节点的高度会自动设置成与picker-view的选中框的高度一致","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.net.cn/component/picker-view.html#picker-view-column)\n"},"picker-view":{"name":"## picker-view","description":"嵌入页面的滚动选择器","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |\n| value | Number | - | picker-view-column 选择的第几项 |\n| indicator-style | CSSString | - | 设置选择器中间选中框的样式 |\n| indicator-class | ClassString | - | 设置选择器中间选中框的类名 |\n| mask-style | CSSString | - | 设置蒙层的样式 |\n| mask-class | ClassString | - | 设置蒙层的类名 |\n| @change | (event: PickerViewChangeEvent) => void | - | 当滚动选择,value 改变时触发 change 事件,event.detail = {value: value};value为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 \t\t开始) |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/picker-view)\n"},"progress":{"name":"## progress","description":"进度条","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| duration | Number | 30 | 进度增加1%所需毫秒数 |\n| percent | Number | 0 | 百分比0~100 |\n| show-info | Boolean | false | 在进度条右侧显示百分比 |\n| stroke-width | Number | 6 | 进度条线的宽度,单位px |\n| color | ColorString | - | 进度条颜色 (请使用 activeColor) |\n| activeColor | ColorString | #09BB07 | 已选择的进度条的颜色 |\n| backgroundColor | ColorString | #EBEBEB | 未选择的进度条的颜色 |\n| active | Boolean | false | 进度条从左往右的动画 |\n| active-mode | String | - | backwards: 动画从头播;forwards:动画从上次结束点接着播 [active-mode](#active-mode-values) |\n| @activeend | (event: ProgressActiveendEvent) => void | - | 动画完成事件 |\n\n#### active-mode @active-mode-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| backwards | - |\n| forwards | - |\n","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/progress)\n"},"radio":{"name":"## radio","description":"单选项目","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |\n| value | String | - | \\<radio/\\> 标识。当该radio 选中时,radio-group的 change 事件会携带radio的value |\n| checked | Boolean | - | \\<radio/\\> 当前是否选中 |\n| color | ColorString | #007AFF | radio的颜色 |\n| backgroundColor | ColorString | #ffffff | radio默认的背景颜色 |\n| borderColor | ColorString | #d1d1d1 | radio默认的边框颜色 |\n| activeBackgroundColor | ColorString | #007AFF | radio选中时的背景颜色,优先级大于color属性 |\n| activeBorderColor | ColorString | | radio选中时的边框颜色 |\n| iconColor | ColorString | #ffffff | radio的图标颜色 |\n| @click | (event: MouseEvent) => void | - | 组件被点击时触发 |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/radio)\n"},"radio-group":{"name":"## radio-group","description":"单项选择器,内部由多个 radio 组成","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |\n| @change | (event: RadioGroupChangeEvent) => void | - | radio-group 中的选中项发生变化时触发 change 事件,event.detail = {value: 选中项radio的value} |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/radio)\n"},"rich-text":{"name":"## rich-text","description":"富文本","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| nodes | Array | - | 节点列表 |","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| rich-text | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/rich-text)\n"},"scroll-view":{"name":"## scroll-view","description":"可滚动视图区域","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| scroll-x | Boolean | false | 允许横向滚动,不支持同时设置scroll-y属性 |\n| scroll-y | Boolean | false | 允许纵向滚动,不支持同时设置scroll-x属性 |\n| rebound | Boolean | true | 控制是否回弹效果 |\n| upper-threshold | Number | 50 | 距顶部/左边多远时(单位px),触发 scrolltoupper 事件 |\n| lower-threshold | Number | 50 | 距底部/右边多远时(单位px),触发 scrolltolower 事件 |\n| scroll-top | Number | - | 设置竖向滚动条位置 |\n| scroll-left | Number | - | 设置横向滚动条位置 |\n| scroll-into-view | String | - | 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素 |\n| scroll-with-animation | Boolean | false | 在设置滚动条位置时使用动画过渡 |\n| refresher-enabled | Boolean | false | 开启自定义下拉刷新 |\n| refresher-threshold | Number | 45 | 设置自定义下拉刷新阈值 |\n| refresher-default-style | String | black | 设置自定义下拉刷新默认样式,支持设置 black | white | none, none 表示不使用默认样式 |\n| refresher-background | String | #FFF | 设置自定义下拉刷新区域背景颜色。默认'#FFF' |\n| refresher-triggered | Boolean | false | 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发 |\n| show-scrollbar | Boolean | true | 控制是否出现滚动条 |\n| @refresherpulling | (event: RefresherEvent) => void | - | 自定义下拉刷新控件被下拉 |\n| @refresherrefresh | (event: RefresherEvent) => void | - | 自定义下拉刷新被触发 |\n| @refresherrestore | (event: RefresherEvent) => void | - | 自定义下拉刷新被复位 |\n| @refresherabort | (event: RefresherEvent) => void | - | 自定义下拉刷新被中止 |\n| @scrolltoupper | (event: ScrollToUpperEvent) => void | - | 滚动到顶部/左边,会触发 scrolltoupper 事件 |\n| @scrolltolower | (event: ScrollToLowerEvent) => void | - | 滚动到底部/右边,会触发 scrolltolower 事件 |\n| @scroll | (event: ScrollEvent) => void | - | 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY} |","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| @refresherpulling | 4.4 | √ | 3.9+ | - | - | - |\n| @refresherrefresh | 4.4 | √ | 3.9+ | - | - | - |\n| @refresherrestore | 4.4 | √ | 3.9+ | - | - | - |\n| @refresherabort | 4.4 | √ | 3.9+ | - | - | - |\n| @scrolltoupper | 4.4 | √ | 3.9+ | - | - | - |\n| @scrolltolower | 4.4 | √ | 3.9+ | - | - | - |\n| @scroll | 4.4 | √ | 3.9+ | - | - | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/scroll-view)\n"},"slider":{"name":"## slider","description":"滑动选择器","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| disabled | Boolean | - | 是否禁用 |\n| min | Number | 0 | slider 最小值 |\n| max | Number | 100 | slider 最大值 |\n| step | Number | 1 | slider 步长,取值必须大于 0,并且可被(max - min)整除 |\n| value | Number | 0 | radio当前取值 |\n| color | ColorString | - | slider 背景条的颜色(请使用 backgroundColor) |\n| activeColor | ColorString | #007aff | slider 滑块左侧已选择部分的线条颜色 |\n| backgroundColor | ColorString | #e9e9e9 | radio背景条的颜色 |\n| block-size | Number | 28 | radio滑块的大小,取值范围为 12 - 28 |\n| block-color | ColorString | #ffffff | 滑块颜色 |\n| show-value | Boolean | false | 是否显示当前 value |\n| @change | (event: SliderChangeEvent) => void | - | 完成一次拖动后触发的事件,event.detail = {value: value} |\n| @changing | (event: SliderChangeEvent) => void | - | 拖动过程中触发的事件,event.detail = {value: value} |","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| @change | 4.4 | √ | 3.9+ | - | - | - |\n| @changing | 4.4 | √ | 3.9+ | - | - | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/slider)\n"},"swiper-item":{"name":"## swiper-item","description":"仅可放置在 swiper 组件中,宽高自动设置为100%","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| item-id | String | - | 该 swiper-item 的标识符 |","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.net.cn/component/swiper.html#swiper-item)\n"},"swiper":{"name":"## swiper","description":"滑块视图容器","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| indicator-dots | Boolean | - | 是否显示面板指示点 |\n| indicator-color | HexColor | - | 指示点颜色 |\n| indicator-active-color | HexColor | - | 当前选中的指示点颜色 |\n| active-class | String | - | swiper-item 可见时的 class |\n| changing-class | Boolean | - | acceleration 设置为 {{true}} 时且处于滑动过程中,中间若干屏处于可见时的class |\n| acceleration | Boolean | - | 当开启时,会根据滑动速度,连续滑动多屏 |\n| disable-programmatic-animation | Boolean | - | 是否禁用代码变动触发 swiper 切换时使用动画。 |\n| disable-touch | Boolean | - | 是否禁止用户 touch 操作 |\n| touchable | Boolean | - | 是否监听用户的触摸事件 |\n| easing-function | String | - | 指定 swiper 切换缓动动画类型,有效值:default、linear、easeInCubic、easeOutCubic、easeInOutCubic [easing-function](#easing-function-values) |\n| autoplay | Boolean | - | 是否自动切换 |\n| current | Number | - | 当前所在滑块的 index |\n| current-item-id | String | - | 当前所在滑块的 item-id ,不能与 current 被同时指定 |\n| interval | Number | - | 自动切换时间间隔 |\n| duration | Number | - | 滑动动画时长 |\n| circular | Boolean | - | 是否采用衔接滑动 |\n| vertical | Boolean | - | 滑动方向是否为纵向 |\n| previous-margin | String | - | 前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值 |\n| next-margin | String | - | 后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值 |\n| display-multiple-items | Number | - | 同时显示的滑块数量 |\n| skip-hidden-item-layout | Boolean | - | 是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息 |\n| @change | (event: Event) => void | - | current 改变时会触发 change 事件,event.detail = {current: current, source: source} |\n| @transition | (event: Event) => void | - | swiper-item 的位置发生改变时会触发 transition 事件,event.detail = {dx: dx, dy: dy} |\n| @animationfinish | (event: Event) => void | - | 动画结束时会触发 animationfinish 事件,event.detail = {current: current, source: source} |\n\n#### easing-function @easing-function-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| default | - |\n| linear | - |\n| easeInCubic | - |\n| easeOutCubic | - |\n| easeInOutCubic | - |\n","compatibility":"","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/swiper)\n"},"switch":{"name":"## switch","description":"开关选择器","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| checked | Boolean | - | 是否选中 |\n| type | String | - | 样式,有效值:switch, checkbox [type](#type-values) |\n| color | ColorString | - | switch 的颜色,同 css 的 color |\n| disabled | Boolean | - | 是否禁用 |\n| @change | (event: SwitchChangeEvent) => void | - | checked 改变时触发 change 事件,event.detail={ value:checked} |\n\n#### type @type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| switch | - |\n| checkbox | - |\n","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| @change | 4.4 | √ | 3.9+ | - | - | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/switch)\n"},"text":{"name":"## text","description":"文本","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| selectable | Boolean | - | 文本是否可选 |\n| space | String | - | 显示连续空格 [space](#space-values) |\n| decode | Boolean | - | 是否解码 |\n\n#### space @space-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| ensp | 中文字符空格一半大小 |\n| emsp | 中文字符空格大小 |\n| nbsp | 根据字体设置的空格大小 |\n","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| text | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/text)\n"},"textarea":{"name":"## textarea","description":"多行输入框","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| display | Any | - | - |\n| value | String | - | 输入框的初始内容 |\n| placeholder | String | - | 输入框为空时占位符 |\n| placeholder-style | String | - | 指定 placeholder 的样式 |\n| placeholder-class | String | - | 指定 placeholder 的样式类 |\n| maxlength | Number | - | 最大输入长度,设置为 -1 的时候不限制最大长度 |\n| auto-focus | Boolean | - | 自动获取焦点 |\n| focus | Boolean | - | 获取焦点 |\n| cursor | Number | - | 指定focus时的光标位置 |\n| confirm-type | String | - | 设置键盘右下角按钮的文字 [confirm-type](#confirm-type-values) |\n| confirm-hold | Boolean | - | 点击键盘右下角按钮时是否保持键盘不收起 |\n| auto-height | Boolean | - | 是否自动增高,设置auto-height时,style.height不生效 |\n| fixed | Boolean | - | 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true |\n| cursor-spacing | Number | - | 指定光标与键盘的距离,单位 px 。取 textarea 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 |\n| show-confirm-bar | Boolean | - | 是否显示键盘上方带有”完成“按钮那一栏 |\n| selection-start | Number | - | 光标起始位置,自动聚集时有效,需与selection-end搭配使用 |\n| selection-end | Number | - | 光标结束位置,自动聚集时有效,需与selection-satrt搭配使用 |\n| adjust-position | Boolean | - | 键盘弹起时,是否自动上推页面 |\n| inputmode | String | - | 是一个枚举属性,它提供了用户在编辑元素或其内容时可能输入的数据类型的提示。在符合条件的高版本webview里,uni-app的 web 和 app-vue 平台中可使用本属性。 [inputmode](#inputmode-values) |\n| @confirm | (event: Event) => void | - | 点击完成时, 触发 confirm 事件,event.detail = {value: value} |\n| @input | (event: Event) => void | - | 当键盘输入时,触发 input 事件,event.detail = {value, cursor}, @input 处理函数的返回值并不会反映到 textarea 上 |\n| @linechange | (event: Event) => void | - | 输入框行数变化时调用,event.detail = {height: 0, heightRpx: 0, lineCount: 0} |\n| @blur | (event: Event) => void | - | 输入框失去焦点时触发,event.detail = {value, cursor} |\n| @keyboardheightchange | (event: Event) => void | - | 键盘高度发生变化的时候触发此事件,event.detail = {height: height, duration: duration} |\n| @focus | (event: Event) => void | - | 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度,在基础库 1.9.90 起支持 |\n\n#### confirm-type @confirm-type-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| send | 发送 |\n| search | 搜索 |\n| next | 下一个 |\n| go | 前往 |\n| done | 完成 |\n\n\n#### inputmode @inputmode-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| none | 无虚拟键盘。在应用程序或者站点需要实现自己的键盘输入控件时很有用。 |\n| text | 使用用户本地区域设置的标准文本输入键盘。 |\n| decimal | 小数输入键盘,包含数字和分隔符(通常是“ . ”或者“ , ”),设备可能也可能不显示减号键。 |\n| numeric | 数字输入键盘,所需要的就是 0 到 9 的数字,设备可能也可能不显示减号键。 |\n| tel | 电话输入键盘,包含 0 到 9 的数字、星号(*)和井号(#)键。表单输入里面的电话输入通常应该使用 \\\\<input type=\"tel\"\\\\> 。 |\n| search | 为搜索输入优化的虚拟键盘,比如,返回键可能被重新标记为“搜索”,也可能还有其他的优化。 |\n| email | 为邮件地址输入优化的虚拟键盘,通常包含\"@\"符号和其他优化。表单里面的邮件地址输入应该使用 \\\\<input type=\"email\"\\\\> 。 |\n| url | 为网址输入优化的虚拟键盘,比如,“/”键会更加明显、历史记录访问等。表单里面的网址输入通常应该使用 \\\\<input type=\"url\"\\\\> 。 |\n","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| @confirm | 4.4 | √ | 3.9+ | - | - | - |\n| @input | 4.4 | √ | 3.9+ | - | - | - |\n| @linechange | 4.4 | √ | 3.9+ | - | - | - |\n| @blur | 4.4 | √ | 3.9+ | - | - | - |\n| @keyboardheightchange | 4.4 | √ | 3.9+ | - | - | - |\n| @focus | 4.4 | √ | 3.9+ | - | - | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/textarea)\n"},"video":{"name":"## video","description":"视频","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| loop | Boolean | - | 是否循环播放 |\n| src | String\\|TagVideoURIString | - | 视频资源地址 |\n| initial-time | Number | - | 指定视频初始播放位置 |\n| duration | Number | - | 指定视频长度 |\n| controls | Boolean | - | 是否显示默认播放控件(播放/暂停按钮、播放进度、时间) |\n| danmu-list | Array | - | 弹幕列表 |\n| danmu-btn | Boolean | - | 是否显示弹幕按钮,只在初始化时有效,不能动态变更 |\n| enable-danmu | Boolean | - | 是否展示弹幕,只在初始化时有效,不能动态变更 |\n| autoplay | Boolean | - | 是否自动播放 |\n| muted | Boolean | - | 是否静音播放 |\n| page-gesture | Boolean | - | 在非全屏模式下,是否开启亮度与音量调节手势 |\n| direction | Number | - | 设置全屏时视频的方向,不指定则根据宽高比自动判断。有效值为 0(正常竖向), 90(屏幕逆时针90度), -90(屏幕顺时针90度) |\n| show-progress | Boolean | - | 若不设置,宽度大于240时才会显示 |\n| show-fullscreen-btn | Boolean | - | 是否显示全屏按钮 |\n| show-play-btn | Boolean | - | 是否显示视频底部控制栏的播放按钮 |\n| show-center-play-btn | Boolean | - | 是否显示视频中间的播放按钮 |\n| enable-progress-gesture | Boolean | - | 是否开启控制进度的手势 |\n| objectFit | String | - | 当视频大小与 video 容器大小不一致时,视频的表现形式。 [objectFit](#objectFit-values) |\n| poster | String | - | 视频封面的图片网络资源地址,如果 controls 属性值为 false 则设置 poster 无效 |\n| show-mute-btn | Boolean | - | 是否显示静音按钮 |\n| title | String | - | 视频的标题,全屏时在顶部展示 |\n| play-btn-position | String | - | 播放按钮的位置 |\n| enable-play-gesture | Boolean | - | 是否开启播放手势,即双击切换播放、暂停 |\n| auto-pause-if-navigate | Boolean | - | 当跳转到其它小程序页面时,是否自动暂停本页面的视频 |\n| auto-pause-if-open-native | Boolean | - | 当跳转到其它微信原生页面时,是否自动暂停本页面的视频 |\n| vslide-gesture | Boolean | - | 在非全屏模式下,是否开启亮度与音量调节手势(同 page-gesture) |\n| vslide-gesture-in-fullscreen | Boolean | - | 在全屏模式下,是否开启亮度与音量调节手势 |\n| ad-unit-id | String | - | 视频前贴广告单元ID |\n| poster-for-crawler | String | - | 用于给搜索等场景作为视频封面展示,建议使用无播放 icon 的视频封面图,只支持网络地址 |\n| codec | String | - | 解码器选择 |\n| http-cache | Boolean | - | 是否对 http、https 视频源开启本地缓存 |\n| play-strategy | Number | - | 播放策略 |\n| is-live | Boolean | - | 是否为直播源 |\n| @play | (event: Event) => void | - | 当开始/继续播放时触发play事件 |\n| @pause | (event: Event) => void | - | 当暂停播放时,触发pause事件 |\n| @ended | (event: Event) => void | - | 当播放到视频末尾时触发ended事件 |\n| @timeupdate | (event: Event) => void | - | 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次 |\n| @fullscreenchange | (event: Event) => void | - | 当视频进入和退出全屏是触发,event.detail = {fullScreen, direction},direction取为 vertical 或 horizontal |\n| @waiting | (event: Event) => void | - | 视频出现缓冲时触发 |\n| @error | (event: Event) => void | - | 播放出错试触发事件 |\n| @progress | (event: Event) => void | - | 加载进度变化时触发,只支持一段加载。event.detail = {buffered},百分比 |\n| @loadedmetadata | (event: Event) => void | - | 视频元数据加载完成时触发。event.detail = {width, height, duration} |\n\n#### objectFit @objectFit-values \n\n| 值名称 | 描述 |\n| :-| :-|\n| contain | 包含 |\n| fill | 填充 |\n| cover | 覆盖 |\n","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| video | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/video)\n"},"view":{"name":"## view","description":"基本视图容器","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| hover-class | String | - | 指定按下去的样式类。当 hover-class=\"none\" 时,没有点击态效果 |\n| hover-stop-propagation | Boolean | - | 指定是否阻止本节点的祖先节点出现点击态 |\n| hover-start-time | Number | - | 按住后多久出现点击态,单位毫秒 |\n| hover-stay-time | Number | - | 手指松开后点击态保留时间,单位毫秒 |","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| view | 4.4 | √ | √ | - | - | - |\n| hover-class | 4.4 | √ | √ | - | - | - |\n| hover-stop-propagation | 4.4 | √ | √ | - | - | - |\n| hover-start-time | 4.4 | √ | √ | - | - | - |\n| hover-stay-time | 4.4 | √ | √ | - | - | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/view)\n"},"web-view":{"name":"## web-view","description":"承载网页的容器","attrubute":"### 参数 \n| 属性名 | 类型 | 默认值 | 描述 |\n| :-| :-| :-| :-|\n| src | String\\|URIString | - | webview 指向网页的链接 |\n| webview-styles | Object\\|Boolean | - | webview 的样式 |\n| @message | (event: Event) => void | - | 网页向应用 postMessage 时,会在特定时机(应用后退、组件销毁、分享)触发并收到消息。e.detail = { data } |","compatibility":"\n### 兼容性\n| | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-| :-|\n| web-view | 4.4 | √ | 3.9.0 | 9.0 | √ | - |\n","reference":"\n### 参见\n- [Reference](https://uniapp.dcloud.io/component/web-view)\n"}}
\ No newline at end of file
{"uniCloud_props":{"name":"## UniCloud","description":"new UniCloud(config)","param":"## 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| config | [UniCloudInitOptions](#unicloudinitoptions) | 是 | - |\n### UniCloudInitOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| provider | string | 是 | 服务商,目前支持 aliyun、tencent |\n| spaceName | string | 否 | 服务空间名 |\n| spaceId | string | 是 | 服务空间id |\n| clientSecret | string | 否 | 阿里云clientSecret |\n| endpoint | string | 否 | 阿里云endpoint |\n","returnValue":"","compatibility":"","tutorial":""},"Constructor":{"name":"## Constructor(options)","description":"","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [UniCloudInitOptions](#unicloudinitoptions) | 是 | - |","returnValue":"","compatibility":"","tutorial":""},"callFunction":{"name":"## callFunction(options)","description":"请求云函数","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [UniCloudCallFunctionOptions](#unicloudcallfunctionoptions) | 是 | - |\n#### UniCloudCallFunctionOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| name | string | 是 | 云函数名 |\n| data | any | 否 | 云函数参数 |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| Promise\\<T\\> | \n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""},"uploadFile":{"name":"## uploadFile(options)","description":"上传文件到云存储","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [UniCloudUploadFileOptions](#uniclouduploadfileoptions) | 是 | - |\n#### UniCloudUploadFileOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| filePath | string | 是 | 文件路径 |\n| cloudPath | string | 是 | 云端路径 |\n| cloudPathAsRealPath | boolean | 否 | 是否以云端路径是否为真实路径保存上传的文件 |\n| onUploadProgress | ([UniCloudUploadProgress](#uniclouduploadprogress)) => any | 否 | 上传进度回调 |\n\n##### UniCloudUploadProgress \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| loaded | number | 是 | 已上传大小 |\n| total | number | 是 | 总大小 |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| Promise\\<T\\> | \n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""},"getTempFileURL":{"name":"## getTempFileURL(options)","description":"获取文件临时URL","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| options | [UniCloudGetTempFileURLOptions](#unicloudgettempfileurloptions) | 是 | - |\n#### UniCloudGetTempFileURLOptions \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| fileList | Array\\<string\\> | 是 | 文件列表 |\n","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| Promise\\<T\\> | \n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""},"importObject":{"name":"## importObject(objectName)","description":"引用云对象","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| objectName | string | 是 | - |","returnValue":"### 返回值 \n\n| 类型 |\n| :-|\n| any | \n","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""},"onResponse":{"name":"## onResponse(callback)","description":"监听响应事件","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | (any?) => any | 是 | - |","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""},"offResponse":{"name":"## offResponse(callback)","description":"移除响应事件监听","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | (any?) => any | 是 | - |","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""},"onRefreshToken":{"name":"## onRefreshToken(callback)","description":"监听token刷新事件","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | (any?) => any | 是 | - |","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""},"offRefreshToken":{"name":"## offRefreshToken(callback)","description":"移除token刷新事件监听","param":"### 参数 \n\n| 参数名 | 参数类型 | 是否必填 | 描述 |\n| :-| :-| :-| :-|\n| callback | (any?) => any | 是 | - |","returnValue":"","compatibility":"### 兼容性 \n\n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :-| :-| :-| :-| :-| :-|\n| 4.4 | √ | 3.9.0 仅支持阿里云 | - | √ | x |\n","tutorial":""}}
\ No newline at end of file
...@@ -144,3 +144,15 @@ uni.chooseLocation({ ...@@ -144,3 +144,15 @@ uni.chooseLocation({
DCloud为开发者争取了福利,可优惠获取高德的商业授权。如有需求请发邮件到`bd@dcloud.io`(注明你的公司名称、应用介绍、HBuilder账户);你也可以直接通过`uni-im`发起在线咨询,在线咨询地址:[DCloud地图服务专员](https://im.dcloud.net.cn/#/?user_id=b9839630-a479-11ea-b772-0f6ad6cf835c) DCloud为开发者争取了福利,可优惠获取高德的商业授权。如有需求请发邮件到`bd@dcloud.io`(注明你的公司名称、应用介绍、HBuilder账户);你也可以直接通过`uni-im`发起在线咨询,在线咨询地址:[DCloud地图服务专员](https://im.dcloud.net.cn/#/?user_id=b9839630-a479-11ea-b772-0f6ad6cf835c)
详见:[https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic](https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic) 详见:[https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic](https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic)
### unicloud-city-select 城市选择组件
若想要实现城市选择功能,可以使用 `unicloud-city-select` 城市选择组件。
**运行效果图**
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/3707/410.png)
> 下载地址:[https://ext.dcloud.net.cn/plugin?name=unicloud-city-select](https://ext.dcloud.net.cn/plugin?name=unicloud-city-select)
> 文档地址:[https://uniapp.dcloud.net.cn/uniCloud/unicloud-city-select.html](https://uniapp.dcloud.net.cn/uniCloud/unicloud-city-select.html)
...@@ -36,7 +36,7 @@ selector类似于 CSS 的选择器,但仅支持下列语法。 ...@@ -36,7 +36,7 @@ selector类似于 CSS 的选择器,但仅支持下列语法。
1. app-uvue支持的选择器较少,不支持ID选择器,[详见](../../uni-app-x/css/readme.md#选择器) 1. app-uvue支持的选择器较少,不支持ID选择器,[详见](../../uni-app-x/css/readme.md#选择器)
2. app-uvue的页面滚动,是由页面最外层的scroll-view模拟的,如果页面最外层不是scroll-view,无法使用本api。[详见](../../uni-app-x/css/readme.md#pagescroll) 2. app-uvue的页面滚动,是由页面最外层的scroll-view模拟的,如果页面最外层不是scroll-view,无法使用本api。[详见](../../uni-app-x/css/readme.md#pagescroll)
3. app-uvue的scroll-view滚动时,如需动画,则需要在scroll-view的属性中配置 `scroll-with-animation="true"`[详见](../../component/scroll-view.md) 3. app-uvue的scroll-view滚动时,如需动画,则需要在scroll-view的属性中配置 `scroll-with-animation="true"`[详见](../../component/scroll-view.md)
4. scroll-view的滚动,另见API 4. scroll-view的滚动,设置其scrollTop即可。[详见](../../component/scroll-view.md)
**示例** **示例**
......
...@@ -1057,7 +1057,7 @@ midButton没有pagePath,需监听点击事件,自行处理点击后的行为 ...@@ -1057,7 +1057,7 @@ midButton没有pagePath,需监听点击事件,自行处理点击后的行为
- 微信小程序模拟器1.02.1904090版有bug,在缩放模拟器页面百分比后,tabbar点击多次后就会卡死。真机无碍,使用时注意。[详见](https://developers.weixin.qq.com/community/develop/doc/0002e6e6bf0d602d8c783e10756400) - 微信小程序模拟器1.02.1904090版有bug,在缩放模拟器页面百分比后,tabbar点击多次后就会卡死。真机无碍,使用时注意。[详见](https://developers.weixin.qq.com/community/develop/doc/0002e6e6bf0d602d8c783e10756400)
- PC宽屏上,当页面存在topWindow或leftWindow或rightWindow等多窗体结构时,若想改变 tabbar 显示的位置,请使用 [custom-tab-bar组件](https://uniapp.dcloud.io/component/custom-tab-bar) 配置,若想隐藏 tabbar,可以使用如下 css(好处是可以和 leftwindow 等窗体联动): - PC宽屏上,当页面存在topWindow或leftWindow或rightWindow等多窗体结构时,若想改变 tabbar 显示的位置,请使用 [custom-tab-bar组件](https://uniapp.dcloud.io/component/custom-tab-bar) 配置,若想隐藏 tabbar,可以使用如下 css(好处是可以和 leftwindow 等窗体联动):
```html ```css
.uni-app--showleftwindow + .uni-tabbar-bottom { .uni-app--showleftwindow + .uni-tabbar-bottom {
display: none; display: none;
} }
......
## button # button
按钮。 按钮。
...@@ -49,16 +49,16 @@ ...@@ -49,16 +49,16 @@
- **注1:``button-hover`` 默认为 ``{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}``** - **注1:``button-hover`` 默认为 ``{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}``**
- ```open-type="launchApp"```时需要调起的APP接入微信OpenSDK[详见](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/launchApp.html) - ```open-type="launchApp"```时需要调起的APP接入微信OpenSDK[详见](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/launchApp.html)
### size 有效值 ## size 有效值
|值|说明| |值|说明|
|:-|:-| |:-|:-|
|default|默认大小| |default|默认大小|
|mini|小尺寸| |mini|小尺寸|
button组件也支持style中通过css定义文字大小。 button组件也支持style中通过css定义文字大小。[见下](#style)
### type 有效值 ## type 有效值
|值|说明| |值|说明|
|:-|:-| |:-|:-|
...@@ -66,16 +66,16 @@ button组件也支持style中通过css定义文字大小。 ...@@ -66,16 +66,16 @@ button组件也支持style中通过css定义文字大小。
|default|白色| |default|白色|
|warn|红色| |warn|红色|
button组件也支持style中通过css定义颜色。 button组件也支持style中通过css定义颜色。[见下](#style)
### form-type 有效值 ## form-type 有效值
|值|说明| |值|说明|
|:-|:-| |:-|:-|
|submit|提交表单| |submit|提交表单|
|reset|重置表单| |reset|重置表单|
### open-type 有效值 ## open-type 有效值
|值|说明|平台差异说明| |值|说明|平台差异说明|
|:-|:-|:-| |:-|:-|:-|
...@@ -108,7 +108,7 @@ button组件也支持style中通过css定义颜色。 ...@@ -108,7 +108,7 @@ button组件也支持style中通过css定义颜色。
|watchLater|触发用户稍后再看|快手小程序 | |watchLater|触发用户稍后再看|快手小程序 |
|openProfile|触发打开用户主页|快手小程序 | |openProfile|触发打开用户主页|快手小程序 |
#### feedback ### feedback
open-type 为 feedback时: open-type 为 feedback时:
...@@ -120,7 +120,30 @@ open-type 为 feedback时: ...@@ -120,7 +120,30 @@ open-type 为 feedback时:
- button组件支持style中通过css定义文字大小、颜色 - button组件支持style中通过css定义文字大小、颜色
### button点击 ## button样式修改@style
button组件属性中的size和type,属于预置样式,方便开发者使用。开发者也可以通过style和class来自定义样式。
button虽然可以内嵌text组件,但不建议通过text组件来修改button样式,因为会导致hove-class不生效。尤其是uvue中样式不继承。建议直接在button组件的style或class属性编写样式。
style和class的优先级,高于size和type属性。
```html
<template>
<button size="default" type="default"
style="color:#ffffff;backgroundColor:#1AAD19;borderColor:#1AAD19"
hover-class="is-hover">按钮</button>
</template>
<style>
.is-hover {
color: rgba(255, 255, 255, 0.6);
background-color: #179b16;
border-color: #179b16;
}
</style>
```
## button点击
button 组件的点击遵循 vue 标准的 @click事件。 button 组件的点击遵循 vue 标准的 @click事件。
...@@ -153,7 +176,7 @@ button 组件没有 url 属性,如果要跳转页面,可以在@click中编 ...@@ -153,7 +176,7 @@ button 组件没有 url 属性,如果要跳转页面,可以在@click中编
- 支付宝小程序平台,获取用户手机号时,建议先通过条件编译的方式,调用支付宝原生API,[参考](https://docs.alipay.com/mini/api/getphonenumber) - 支付宝小程序平台,获取用户手机号时,建议先通过条件编译的方式,调用支付宝原生API,[参考](https://docs.alipay.com/mini/api/getphonenumber)
### 示例 ## 示例
[查看演示](https://hellouniapp.dcloud.net.cn/pages/component/button/button) [查看演示](https://hellouniapp.dcloud.net.cn/pages/component/button/button)
......
...@@ -62,7 +62,7 @@ editor组件目前只有H5、App的vue页面、微信小程序、百度小程序 ...@@ -62,7 +62,7 @@ editor组件目前只有H5、App的vue页面、微信小程序、百度小程序
* 粘贴时仅纯文本内容会被拷贝进编辑器 * 粘贴时仅纯文本内容会被拷贝进编辑器
* 插入 html 到编辑器内时,编辑器会删除一些不必要的标签,以保证内容的统一。例如`<p><span>xxx</span></p>`会改写为`<p>xxx</p>` * 插入 html 到编辑器内时,编辑器会删除一些不必要的标签,以保证内容的统一。例如`<p><span>xxx</span></p>`会改写为`<p>xxx</p>`
* 编辑器聚焦时页面会被上推,系统行为以保证编辑区可见 * 编辑器聚焦时页面会被上推,系统行为以保证编辑区可见
* H5端会动态引入依赖 [quill.min.js](https://unpkg.com/quill@1.3.7/dist/quill.min.js)、[image-resize.min.js](https://unpkg.com/quill-image-resize-mp@3.0.1/image-resize.min.js),依赖从 [unpkg.com](https://unpkg.com) 加载,如过依赖加载较慢,可以下载下来放在自己的服务器或 CDN 服务商,然后在 [自定义模板](/collocation/manifest?id=h5-template) head 内引入。 * H5端会动态引入依赖 [quill.min.js](https://unpkg.com/quill@1.3.7/dist/quill.min.js)、[image-resize.min.js](https://unpkg.com/quill-image-resize-mp@3.0.1/image-resize.min.js),依赖从 [unpkg.com](https://unpkg.com) 加载,如过依赖加载较慢或失败,可以从 [github.com](https://github.com/dcloudio/uni-app/tree/dev/src/core/view/components/editor/quill) 或者 [gitee.com](https://gitee.com/dcloud/uni-app/tree/dev/src/core/view/components/editor/quill) 下载下来放在自己的服务器或 CDN 服务商,相比自己的服务器或者其他 CDN 服务商更推荐的做法是开发者将将所有前端资源托管在 [uniCloud 前端网页托管](https://uniapp.dcloud.net.cn/uniCloud/hosting.html) ,然后在 [自定义模板](../collocation/manifest?id=h5-template) 的 `head` 标签内引入。
* 不能直接插入视频或者其他文件,编辑时可以采用视频封面或者文件缩略图占位,并在图片属性中保存视频信息,预览时读取附加信息再还原为视频或者其他文件操作。 * 不能直接插入视频或者其他文件,编辑时可以采用视频封面或者文件缩略图占位,并在图片属性中保存视频信息,预览时读取附加信息再还原为视频或者其他文件操作。
......
### map ## map
地图组件。 地图组件。
...@@ -256,9 +256,9 @@ export default { ...@@ -256,9 +256,9 @@ export default {
``` ```
::: :::
## App平台地图服务商差异 ### App平台地图服务商差异
### Map 地图组件 #### Map 地图组件
|属性 |说明 |高德是否支持 |google地图是否支持 | |属性 |说明 |高德是否支持 |google地图是否支持 |
|:---- |:---- |:---- |:---- | |:---- |:---- |:---- |:---- |
...@@ -268,25 +268,25 @@ export default { ...@@ -268,25 +268,25 @@ export default {
|labeltap |点击label时触发 |已支持 |Android支持iOS不支持 | |labeltap |点击label时触发 |已支持 |Android支持iOS不支持 |
|poitap |点击地图poi点时触发 |已支持 |Android不支持 iOS支持 | |poitap |点击地图poi点时触发 |已支持 |Android不支持 iOS支持 |
### marker #### marker
|属性 |说明 |高德是否支持 |google地图是否支持 | |属性 |说明 |高德是否支持 |google地图是否支持 |
|:---- |:---- |:---- |:---- | |:---- |:---- |:---- |:---- |
|label |为标记点旁边增加标签 |已支持 |Android支持 iOS不支持 | |label |为标记点旁边增加标签 |已支持 |Android支持 iOS不支持 |
### marker 上的气泡 callout #### marker 上的气泡 callout
|属性 |说明 |高德是否支持 |google地图是否支持 | |属性 |说明 |高德是否支持 |google地图是否支持 |
|:---- |:---- |:---- |:---- | |:---- |:---- |:---- |:---- |
|display |'BYCLICK':点击显示; 'ALWAYS':常显 |已支持 |Android支持iOS只支持 'BYCLICK' | |display |'BYCLICK':点击显示; 'ALWAYS':常显 |已支持 |Android支持iOS只支持 'BYCLICK' |
### marker 上的自定义气泡 customCallout #### marker 上的自定义气泡 customCallout
|属性 |说明 |高德是否支持 |google地图是否支持 | |属性 |说明 |高德是否支持 |google地图是否支持 |
|:---- |:---- |:---- |:---- | |:---- |:---- |:---- |:---- |
|display|'BYCLICK':点击显示; 'ALWAYS':常显 |已支持 |Android支持iOS只支持 'BYCLICK' | |display|'BYCLICK':点击显示; 'ALWAYS':常显 |已支持 |Android支持iOS只支持 'BYCLICK' |
### polyline #### polyline
|属性 |说明 |高德是否支持 |google地图是否支持 | |属性 |说明 |高德是否支持 |google地图是否支持 |
|:---- |:---- |:---- |:---- | |:---- |:---- |:---- |:---- |
...@@ -340,3 +340,26 @@ DCloud为开发者争取了福利,可优惠获取商业授权。如有需求 ...@@ -340,3 +340,26 @@ DCloud为开发者争取了福利,可优惠获取商业授权。如有需求
联系电话:17778170760 联系电话:17778170760
详见:[https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic](https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic) 详见:[https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic](https://uniapp.dcloud.net.cn/tutorial/app-geolocation.html#lic)
### unicloud-map 云端一体组件
若想要在地图上展示自定义的POI信息,试试 `unicloud-map` 云端一体组件,该组件将前端地图组件与云端数据库无缝连接,只需写一个`<unicloud-map>`组件,即可从数据库中获取附近的POI信息并在地图上呈现。无论是静态还是动态的POI,甚至更多自定义功能,都轻松实现。让地图开发变得愉快又高效。
> 下载地址:[https://ext.dcloud.net.cn/plugin?name=unicloud-map](https://ext.dcloud.net.cn/plugin?name=unicloud-map)
> 文档地址:[https://uniapp.dcloud.net.cn/uniCloud/unicloud-map.html](https://uniapp.dcloud.net.cn/uniCloud/unicloud-map.html)
**渲染静态POI运行效果图**
通过从数据库获取POI数据,渲染到地图上
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/3707/409.png)
**渲染动态POI运行效果图**
通过从数据库获取POI数据,并通过 uni-id-common 内的路线规划API,计算路线、距离、时间
**运行效果图**
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/3707/408.png)
...@@ -611,18 +611,7 @@ export function getPluginVersion(): UTSJSONObject{ ...@@ -611,18 +611,7 @@ export function getPluginVersion(): UTSJSONObject{
} }
``` ```
3 JSONObject
```ts
// JSONObject 示例
export function getPluginVersion(): JSONObject{
var retJson = new JSONObject()
retJson["version"] = "1.2.0"
retJson["versionNum"] = 120
return retJson
}
```
uni-app向UTS环境传值,支持下列类型: uni-app向UTS环境传值,支持下列类型:
...@@ -681,6 +670,43 @@ postUserInfo({ ...@@ -681,6 +670,43 @@ postUserInfo({
``` ```
遗留问题:
有些场景,我们需要参数对象包含对象数组,比如
```json
{
"name": "zhangsan",
"teacher": [{
"id": "1",
"name": "kongzi"
},
{
"id": "2",
"name": "mengzi"
}
]
}
```
目前在uni-app 1.0 环境下,复杂参数的传递是存在一定的缺陷。我们不能将teacher 声明为具体的类型数组,需要声明为any数组:
```uts
type Param{
name:string,
// 不能声明为 Teacher[]
teacher: any[];
}
```
访问数组元素时,通过 UTSJSONObjct 包装访问
```uts
// 循环遍历
list1.forEach((item : any) => {
const utsItem = new UTSJSONObject(item)
})
```
这个问题,我们稍后会改进。
## 4 前端使用插件 ## 4 前端使用插件
......
...@@ -205,7 +205,7 @@ const app = createApp({}) ...@@ -205,7 +205,7 @@ const app = createApp({})
|内置组件 |描述 |H5 |App端|微信小程序 | |内置组件 |描述 |H5 |App端|微信小程序 |
| -- | -- | -- |-- |-- | | -- | -- | -- |-- |-- |
|component | 渲染一个“元组件”为动态组件。依 `is` 的值,来决定哪个组件被渲染。 [详情](https://v3.cn.vuejs.org/api/built-in-components.html#component) |√ | √ | x | | |component | 渲染一个“元组件”为动态组件。依 `is` 的值,来决定哪个组件被渲染。 [详情](https://cn.vuejs.org/api/built-in-special-elements.html#component) |√ | √ | x | |
|transition | 作为单个元素/组件的过渡效果。 [详情](https://v3.cn.vuejs.org/api/built-in-components.html#transition) |√ | x | x | | |transition | 作为单个元素/组件的过渡效果。 [详情](https://v3.cn.vuejs.org/api/built-in-components.html#transition) |√ | x | x | |
|transition-group | 作为多个元素/组件的过渡效果。 [详情](https://v3.cn.vuejs.org/api/built-in-components.html#transition-group) |√ | x | x | | |transition-group | 作为多个元素/组件的过渡效果。 [详情](https://v3.cn.vuejs.org/api/built-in-components.html#transition-group) |√ | x | x | |
|keep-alive | 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们,主要用于保留组件状态或避免重新渲染。 [详情](https://v3.cn.vuejs.org/api/built-in-components.html#keep-alive) |√ |x | x | | |keep-alive | 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们,主要用于保留组件状态或避免重新渲染。 [详情](https://v3.cn.vuejs.org/api/built-in-components.html#keep-alive) |√ |x | x | |
......
...@@ -211,6 +211,10 @@ ...@@ -211,6 +211,10 @@
##### 示例: ##### 示例:
::: preview
> uni-app js 引擎版
```html ```html
<template> <template>
<view> <view>
...@@ -235,17 +239,42 @@ ...@@ -235,17 +239,42 @@
</script> </script>
``` ```
> uni-app x
```html ```html
<template> <template>
<view> <view>
<!-- 我是父组件 --> <!-- 我是子组件componentA -->
<componentA :age="10"></componentA> <view>{{age}}</view>
</view> </view>
</template> </template>
<script lang="uts">
export default {
props: {
// 检测类型 + 其他验证
age: {
type: Number,
default: 0,
required: true,
validator: function(value): boolean {
return value >= 0
}
}
}
}
</script>
``` ```
:::
```html
<template>
<view>
<!-- 我是父组件 -->
<componentA :age="10"></componentA>
</view>
</template>
```
### 传递静态或动态的 Prop ### 传递静态或动态的 Prop
...@@ -360,7 +389,9 @@ ...@@ -360,7 +389,9 @@
1. **这个 `prop` 用来传递一个初始值**;这个子组件接下来希望将其作为一个本地的 `prop` 数据来使用。在这种情况下,最好定义一个本地的 `data property `并将这个 `prop` 作为其初始值: 1. **这个 `prop` 用来传递一个初始值**;这个子组件接下来希望将其作为一个本地的 `prop` 数据来使用。在这种情况下,最好定义一个本地的 `data property `并将这个 `prop` 作为其初始值:
::: preview
> uni-app js 引擎版
```html ```html
<template> <template>
...@@ -381,6 +412,33 @@ ...@@ -381,6 +412,33 @@
</script> </script>
``` ```
> uni-app x
```html
<template>
<view>
<!-- 我是子组件componentA -->
<view>{{myTitle}}</view>
</view>
</template>
<script lang="uts">
export default {
props: {
title: {
type: String
}
},
data() {
return {
myTitle:this.title as string
}
}
}
</script>
```
:::
```html ```html
<template> <template>
<view> <view>
...@@ -403,6 +461,9 @@ ...@@ -403,6 +461,9 @@
2. **这个 `prop` 以一种原始的值传入且需要进行转换**。在这种情况下,最好使用这个 `prop` 的值来定义一个计算属性: 2. **这个 `prop` 以一种原始的值传入且需要进行转换**。在这种情况下,最好使用这个 `prop` 的值来定义一个计算属性:
::: preview
> uni-app js 引擎版
```html ```html
<template> <template>
...@@ -423,6 +484,33 @@ ...@@ -423,6 +484,33 @@
</script> </script>
``` ```
> uni-app x
```html
<template>
<view>
<!-- 我是子组件componentA -->
<view>{{normalizedSize}}</view>
</view>
</template>
<script lang="uts">
export default {
props: {
size: {
type: String
}
},
computed: {
normalizedSize: function (): string {
return this.size.toLowerCase()
}
}
}
</script>
```
:::
```html ```html
<template> <template>
<view> <view>
...@@ -454,6 +542,9 @@ ...@@ -454,6 +542,9 @@
为了定制 `prop` 的验证方式,你可以为 `props` 中的值提供一个带有验证需求的对象,而不是一个字符串数组。例如: 为了定制 `prop` 的验证方式,你可以为 `props` 中的值提供一个带有验证需求的对象,而不是一个字符串数组。例如:
::: preview
> uni-app js 引擎版
```js ```js
props: { props: {
...@@ -497,6 +588,51 @@ ...@@ -497,6 +588,51 @@
} }
``` ```
> uni-app x
```js
props: {
propA: {
type: Number
},
// 必填的字符串
propC: {
type: String,
required: true
},
// 带有默认值的数字
propD: {
type: Number,
default: 100
},
// 带有默认值的对象
propE: {
type: UTSObject,
// 对象或数组默认值必须从一个工厂函数获取
default: function(): UTSObject {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function(value): boolean {
// 这个值必须匹配下列字符串中的一个
return ['success', 'warning', 'danger'].indexOf(value) !== -1
}
},
// 具有默认值的函数
propG: {
type: Function,
// 与对象或数组默认值不同,这不是一个工厂函数 —— 这是一个用作默认值的函数
default: function(): string {
return 'Default function'
}
}
}
```
:::
`prop` 验证失败的时候,(开发环境构建版本的) `Vue` 将会产生一个控制台的警告。 `prop` 验证失败的时候,(开发环境构建版本的) `Vue` 将会产生一个控制台的警告。
**tips** **tips**
...@@ -537,12 +673,17 @@ ...@@ -537,12 +673,17 @@
用于验证 `author` prop 的值是否是通过 `new Person` 创建的。 用于验证 `author` prop 的值是否是通过 `new Person` 创建的。
**注意:uni-app x 暂不支持**
### Prop 的大小写命名 ### Prop 的大小写命名
`HTML` 中的 `attribute` 名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用 `DOM` 中的模板时,`camelCase` (驼峰命名法) 的 `prop` 名需要使用其等价的 `kebab-case` (短横线分隔命名) 命名: `HTML` 中的 `attribute` 名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用 `DOM` 中的模板时,`camelCase` (驼峰命名法) 的 `prop` 名需要使用其等价的 `kebab-case` (短横线分隔命名) 命名:
::: preview
> uni-app js 引擎版
```html ```html
<template> <template>
<view> <view>
...@@ -558,6 +699,29 @@ ...@@ -558,6 +699,29 @@
</script> </script>
``` ```
> uni-app x
```html
<template>
<view>
<!-- 我是子组件componentA -->
<view>{{postTitle}}</view>
</view>
</template>
<script lang="uts">
export default {
props: {
postTitle: {
type: String
}
}
}
</script>
```
:::
```html ```html
<template> <template>
<view> <view>
...@@ -844,9 +1008,7 @@ ...@@ -844,9 +1008,7 @@
} }
``` ```
**注意:uni-app x 暂不支持**
### v-model 参数 ### v-model 参数
...@@ -1001,7 +1163,7 @@ ...@@ -1001,7 +1163,7 @@
</script> </script>
``` ```
**注意:uni-app x 暂不支持 capitalize 修饰符**
```html ```html
<!-- 我是 my-component子组件--> <!-- 我是 my-component子组件-->
...@@ -1038,10 +1200,8 @@ ...@@ -1038,10 +1200,8 @@
</script> </script>
``` ```
对于带参数的 `v-model` 绑定,生成的 `prop` 名称将为 `arg + "Modifiers"` 对于带参数的 `v-model` 绑定,生成的 `prop` 名称将为 `arg + "Modifiers"`
```html ```html
<my-component v-model:foo.capitalize="bar"></my-component> <my-component v-model:foo.capitalize="bar"></my-component>
``` ```
......
* [概述](README.md) * [概述](README.md)
* [manifest.json](manifest.md)
* [开发注意](codegap.md) * [开发注意](codegap.md)
* [性能](performance.md)
* [编译器](compiler/README.md) * [编译器](compiler/README.md)
* [UVUE DOM](dom.md) * [manifest.json](manifest.md)
* 组件
* [公共属性和事件](component/common.md)
* [view](component/view.md)
* [scroll-view](component/scroll-view.md)
* [list-view](component/list-view.md)
* [navigator](component/navigator.md)
* [swiper](component/swiper.md)
* [text](component/text.md)
* [rich-text](component/rich-text.md)
* [image](component/image.md)
* [input](component/input.md)
* [textarea](component/textarea.md)
* [button](component/button.md)
* [checkbox](component/checkbox-group.md)
* [radio](component/radio-group.md)
* [picker-view](component/picker-view.md)
* [progress](component/progress.md)
* [slider](component/slider.md)
* [switch](component/switch.md)
* [video](component/video.md)
* [animation-view](component/animation-view.md)
* [web-view](component/web-view.md)
* [API](api.md)
* CSS * CSS
* [概述](css/README.md) * [CSS概述](css/README.md)
* [align-content](css/align-content.md) * [align-content](css/align-content.md)
* [align-items](css/align-items.md) * [align-items](css/align-items.md)
* [background](css/background.md) * [background](css/background.md)
...@@ -89,8 +110,12 @@ ...@@ -89,8 +110,12 @@
* [text-decoration-thickness](css/text-decoration-thickness.md) * [text-decoration-thickness](css/text-decoration-thickness.md)
* [visibility](css/visibility.md) * [visibility](css/visibility.md)
* [lines](css/lines.md) * [lines](css/lines.md)
* [API](api.md) * UVUE DOM
* [事件](event.md) * [DOM概述](dom/)
* [INode](dom/inode.md)
* [CSSStyleDeclaration](dom/cssstyledeclaration.md)
* [DrawableContext](dom/drawablecontext.md)
* [性能](performance.md)
<!-- * [新建项目]() <!-- * [新建项目]()
* [1. 通过 HBuilderX 可视化界面](quickstart-hx.md) * [1. 通过 HBuilderX 可视化界面](quickstart-hx.md)
* [运行和调试]() * [运行和调试]()
...@@ -102,4 +127,4 @@ ...@@ -102,4 +127,4 @@
* [API]() * [API]()
* [编译器]() * [编译器]()
* [质量]() * [质量]()
* [性能]() --> -->
## uni.createInnerAudioContext() @createinneraudiocontext # 基础
<!-- UTSAPIJSON.createInnerAudioContext.description -->
<!-- UTSAPIJSON.createInnerAudioContext.param --> ## uni.exit(options?) @exit
<!-- UTSAPIJSON.createInnerAudioContext.returnValue --> <!-- UTSAPIJSON.exit.description -->
<!-- UTSAPIJSON.createInnerAudioContext.compatibility --> <!-- UTSAPIJSON.exit.param -->
<!-- UTSAPIJSON.createInnerAudioContext.tutorial --> <!-- UTSAPIJSON.exit.returnValue -->
## uni.getBackgroundAudioManager() @getbackgroundaudiomanager <!-- UTSAPIJSON.exit.compatibility -->
<!-- UTSAPIJSON.getBackgroundAudioManager.description --> <!-- UTSAPIJSON.exit.tutorial -->
<!-- UTSAPIJSON.getBackgroundAudioManager.param --> # 界面
<!-- UTSAPIJSON.getBackgroundAudioManager.returnValue -->
<!-- UTSAPIJSON.getBackgroundAudioManager.compatibility -->
<!-- UTSAPIJSON.getBackgroundAudioManager.tutorial -->
## uni.exitApp() @exitapp
<!-- UTSAPIJSON.exitApp.description -->
<!-- UTSAPIJSON.exitApp.param -->
<!-- UTSAPIJSON.exitApp.returnValue -->
<!-- UTSAPIJSON.exitApp.compatibility -->
<!-- UTSAPIJSON.exitApp.tutorial -->
## uni.getFileSystemManager() @getfilesystemmanager
<!-- UTSAPIJSON.getFileSystemManager.description -->
<!-- UTSAPIJSON.getFileSystemManager.param -->
<!-- UTSAPIJSON.getFileSystemManager.returnValue -->
<!-- UTSAPIJSON.getFileSystemManager.compatibility -->
<!-- UTSAPIJSON.getFileSystemManager.tutorial -->
## uni.getAccessibilityInfo() @getaccessibilityinfo
<!-- UTSAPIJSON.getAccessibilityInfo.description -->
<!-- UTSAPIJSON.getAccessibilityInfo.param -->
<!-- UTSAPIJSON.getAccessibilityInfo.returnValue -->
<!-- UTSAPIJSON.getAccessibilityInfo.compatibility -->
<!-- UTSAPIJSON.getAccessibilityInfo.tutorial -->
## uni.getAppAuthorizeSetting() @getappauthorizesetting
<!-- UTSAPIJSON.getAppAuthorizeSetting.description -->
<!-- UTSAPIJSON.getAppAuthorizeSetting.param -->
<!-- UTSAPIJSON.getAppAuthorizeSetting.returnValue -->
<!-- UTSAPIJSON.getAppAuthorizeSetting.compatibility -->
<!-- UTSAPIJSON.getAppAuthorizeSetting.tutorial -->
## uni.getAppBaseInfo(config?) @getappbaseinfo
<!-- UTSAPIJSON.getAppBaseInfo.description -->
<!-- UTSAPIJSON.getAppBaseInfo.param -->
<!-- UTSAPIJSON.getAppBaseInfo.returnValue -->
<!-- UTSAPIJSON.getAppBaseInfo.compatibility -->
<!-- UTSAPIJSON.getAppBaseInfo.tutorial -->
## uni.getDeviceInfo(config?) @getdeviceinfo
<!-- UTSAPIJSON.getDeviceInfo.description -->
<!-- UTSAPIJSON.getDeviceInfo.param -->
<!-- UTSAPIJSON.getDeviceInfo.returnValue -->
<!-- UTSAPIJSON.getDeviceInfo.compatibility -->
<!-- UTSAPIJSON.getDeviceInfo.tutorial -->
## uni.getLocation(options) @getlocation
<!-- UTSAPIJSON.getLocation.description -->
<!-- UTSAPIJSON.getLocation.param -->
<!-- UTSAPIJSON.getLocation.returnValue -->
<!-- UTSAPIJSON.getLocation.compatibility -->
<!-- UTSAPIJSON.getLocation.tutorial -->
## uni.getLocation(options) @getlocation
<!-- UTSAPIJSON.getLocation.description -->
<!-- UTSAPIJSON.getLocation.param -->
<!-- UTSAPIJSON.getLocation.returnValue -->
<!-- UTSAPIJSON.getLocation.compatibility -->
<!-- UTSAPIJSON.getLocation.tutorial -->
## uni.getNetworkType(options) @getnetworktype
<!-- UTSAPIJSON.getNetworkType.description -->
<!-- UTSAPIJSON.getNetworkType.param -->
<!-- UTSAPIJSON.getNetworkType.returnValue -->
<!-- UTSAPIJSON.getNetworkType.compatibility -->
<!-- UTSAPIJSON.getNetworkType.tutorial -->
## uni.getRecorderManager() @getrecordermanager
<!-- UTSAPIJSON.getRecorderManager.description -->
<!-- UTSAPIJSON.getRecorderManager.param -->
<!-- UTSAPIJSON.getRecorderManager.returnValue -->
<!-- UTSAPIJSON.getRecorderManager.compatibility -->
<!-- UTSAPIJSON.getRecorderManager.tutorial -->
## uni.getSystemInfo(options) @getsysteminfo
<!-- UTSAPIJSON.getSystemInfo.description -->
<!-- UTSAPIJSON.getSystemInfo.param -->
<!-- UTSAPIJSON.getSystemInfo.returnValue -->
<!-- UTSAPIJSON.getSystemInfo.compatibility -->
<!-- UTSAPIJSON.getSystemInfo.tutorial -->
## uni.getSystemInfoSync() @getsysteminfosync
<!-- UTSAPIJSON.getSystemInfoSync.description -->
<!-- UTSAPIJSON.getSystemInfoSync.param -->
<!-- UTSAPIJSON.getSystemInfoSync.returnValue -->
<!-- UTSAPIJSON.getSystemInfoSync.compatibility -->
<!-- UTSAPIJSON.getSystemInfoSync.tutorial -->
## uni.getWindowInfo() @getwindowinfo
<!-- UTSAPIJSON.getWindowInfo.description -->
<!-- UTSAPIJSON.getWindowInfo.param -->
<!-- UTSAPIJSON.getWindowInfo.returnValue -->
<!-- UTSAPIJSON.getWindowInfo.compatibility -->
<!-- UTSAPIJSON.getWindowInfo.tutorial -->
## uni.getSystemSetting() @getsystemsetting
<!-- UTSAPIJSON.getSystemSetting.description -->
<!-- UTSAPIJSON.getSystemSetting.param -->
<!-- UTSAPIJSON.getSystemSetting.returnValue -->
<!-- UTSAPIJSON.getSystemSetting.compatibility -->
<!-- UTSAPIJSON.getSystemSetting.tutorial -->
## uni.chooseImage(options) @chooseimage
<!-- UTSAPIJSON.chooseImage.description -->
<!-- UTSAPIJSON.chooseImage.param -->
<!-- UTSAPIJSON.chooseImage.returnValue -->
<!-- UTSAPIJSON.chooseImage.compatibility -->
<!-- UTSAPIJSON.chooseImage.tutorial -->
## uni.previewImage(options) @previewimage ## uni.previewImage(options) @previewimage
...@@ -226,101 +40,104 @@ ...@@ -226,101 +40,104 @@
<!-- UTSAPIJSON.closePreviewImage.tutorial --> <!-- UTSAPIJSON.closePreviewImage.tutorial -->
## uni.getImageInfo(options) @getimageinfo ## uni.showToast(options) @showtoast
<!-- UTSAPIJSON.getImageInfo.description --> <!-- UTSAPIJSON.showToast.description -->
<!-- UTSAPIJSON.getImageInfo.param --> <!-- UTSAPIJSON.showToast.param -->
<!-- UTSAPIJSON.getImageInfo.returnValue --> <!-- UTSAPIJSON.showToast.returnValue -->
<!-- UTSAPIJSON.getImageInfo.compatibility --> <!-- UTSAPIJSON.showToast.compatibility -->
<!-- UTSAPIJSON.getImageInfo.tutorial --> <!-- UTSAPIJSON.showToast.tutorial -->
## uni.saveImageToPhotosAlbum(options) @saveimagetophotosalbum ## uni.hideToast() @hidetoast
<!-- UTSAPIJSON.saveImageToPhotosAlbum.description --> <!-- UTSAPIJSON.hideToast.description -->
<!-- UTSAPIJSON.saveImageToPhotosAlbum.param --> <!-- UTSAPIJSON.hideToast.param -->
<!-- UTSAPIJSON.saveImageToPhotosAlbum.returnValue --> <!-- UTSAPIJSON.hideToast.returnValue -->
<!-- UTSAPIJSON.saveImageToPhotosAlbum.compatibility --> <!-- UTSAPIJSON.hideToast.compatibility -->
<!-- UTSAPIJSON.saveImageToPhotosAlbum.tutorial --> <!-- UTSAPIJSON.hideToast.tutorial -->
## uni.compressImage(options) @compressimage ## uni.showLoading(options) @showloading
<!-- UTSAPIJSON.compressImage.description --> <!-- UTSAPIJSON.showLoading.description -->
<!-- UTSAPIJSON.compressImage.param --> <!-- UTSAPIJSON.showLoading.param -->
<!-- UTSAPIJSON.compressImage.returnValue --> <!-- UTSAPIJSON.showLoading.returnValue -->
<!-- UTSAPIJSON.compressImage.compatibility --> <!-- UTSAPIJSON.showLoading.compatibility -->
<!-- UTSAPIJSON.compressImage.tutorial --> <!-- UTSAPIJSON.showLoading.tutorial -->
## uni.hideLoading() @hideloading
## uni.chooseVideo(options) @choosevideo <!-- UTSAPIJSON.hideLoading.description -->
<!-- UTSAPIJSON.hideLoading.param -->
<!-- UTSAPIJSON.chooseVideo.description --> <!-- UTSAPIJSON.hideLoading.returnValue -->
<!-- UTSAPIJSON.chooseVideo.param --> <!-- UTSAPIJSON.hideLoading.compatibility -->
<!-- UTSAPIJSON.chooseVideo.returnValue --> <!-- UTSAPIJSON.hideLoading.tutorial -->
<!-- UTSAPIJSON.chooseVideo.compatibility --> ## uni.showModal(options) @showmodal
<!-- UTSAPIJSON.chooseVideo.tutorial --> <!-- UTSAPIJSON.showModal.description -->
## uni.getVideoInfo(options) @getvideoinfo <!-- UTSAPIJSON.showModal.param -->
<!-- UTSAPIJSON.getVideoInfo.description --> <!-- UTSAPIJSON.showModal.returnValue -->
<!-- UTSAPIJSON.getVideoInfo.param --> <!-- UTSAPIJSON.showModal.compatibility -->
<!-- UTSAPIJSON.getVideoInfo.returnValue --> <!-- UTSAPIJSON.showModal.tutorial -->
<!-- UTSAPIJSON.getVideoInfo.compatibility --> ## uni.showActionSheet(options) @showactionsheet
<!-- UTSAPIJSON.getVideoInfo.tutorial --> <!-- UTSAPIJSON.showActionSheet.description -->
## uni.saveVideoToPhotosAlbum(options) @savevideotophotosalbum <!-- UTSAPIJSON.showActionSheet.param -->
<!-- UTSAPIJSON.saveVideoToPhotosAlbum.description --> <!-- UTSAPIJSON.showActionSheet.returnValue -->
<!-- UTSAPIJSON.saveVideoToPhotosAlbum.param --> <!-- UTSAPIJSON.showActionSheet.compatibility -->
<!-- UTSAPIJSON.saveVideoToPhotosAlbum.returnValue --> <!-- UTSAPIJSON.showActionSheet.tutorial -->
<!-- UTSAPIJSON.saveVideoToPhotosAlbum.compatibility --> # 网络
<!-- UTSAPIJSON.saveVideoToPhotosAlbum.tutorial -->
## uni.compressVideo(options) @compressvideo ## uni.getNetworkType(options) @getnetworktype
<!-- UTSAPIJSON.compressVideo.description --> <!-- UTSAPIJSON.getNetworkType.description -->
<!-- UTSAPIJSON.compressVideo.param --> <!-- UTSAPIJSON.getNetworkType.param -->
<!-- UTSAPIJSON.compressVideo.returnValue --> <!-- UTSAPIJSON.getNetworkType.returnValue -->
<!-- UTSAPIJSON.compressVideo.compatibility --> <!-- UTSAPIJSON.getNetworkType.compatibility -->
<!-- UTSAPIJSON.compressVideo.tutorial --> <!-- UTSAPIJSON.getNetworkType.tutorial -->
## uni.uploadFile(options) @uploadfile ## uni.request(param) @request
<!-- UTSAPIJSON.uploadFile.description --> <!-- UTSAPIJSON.request.description -->
<!-- UTSAPIJSON.uploadFile.param --> <!-- UTSAPIJSON.request.param -->
<!-- UTSAPIJSON.uploadFile.returnValue --> <!-- UTSAPIJSON.request.returnValue -->
<!-- UTSAPIJSON.uploadFile.compatibility --> <!-- UTSAPIJSON.request.compatibility -->
<!-- UTSAPIJSON.uploadFile.tutorial --> <!-- UTSAPIJSON.request.tutorial -->
## uni.downloadFile(options) @downloadfile ## uni.downloadFile(options) @downloadfile
...@@ -334,89 +151,92 @@ ...@@ -334,89 +151,92 @@
<!-- UTSAPIJSON.downloadFile.tutorial --> <!-- UTSAPIJSON.downloadFile.tutorial -->
## uni.openAppAuthorizeSetting(options) @openappauthorizesetting ## uni.connectSocket(options) @connectsocket
<!-- UTSAPIJSON.connectSocket.description -->
<!-- UTSAPIJSON.connectSocket.param -->
<!-- UTSAPIJSON.openAppAuthorizeSetting.description --> <!-- UTSAPIJSON.connectSocket.returnValue -->
<!-- UTSAPIJSON.openAppAuthorizeSetting.param --> <!-- UTSAPIJSON.connectSocket.compatibility -->
<!-- UTSAPIJSON.openAppAuthorizeSetting.returnValue --> <!-- UTSAPIJSON.connectSocket.tutorial -->
<!-- UTSAPIJSON.openAppAuthorizeSetting.compatibility --> ## uni.onSocketOpen(options) @onsocketopen
<!-- UTSAPIJSON.openAppAuthorizeSetting.tutorial --> <!-- UTSAPIJSON.onSocketOpen.description -->
## uni.showToast(options) @showtoast <!-- UTSAPIJSON.onSocketOpen.param -->
<!-- UTSAPIJSON.showToast.description --> <!-- UTSAPIJSON.onSocketOpen.returnValue -->
<!-- UTSAPIJSON.showToast.param --> <!-- UTSAPIJSON.onSocketOpen.compatibility -->
<!-- UTSAPIJSON.showToast.returnValue --> <!-- UTSAPIJSON.onSocketOpen.tutorial -->
<!-- UTSAPIJSON.showToast.compatibility --> ## uni.onSocketError(callback) @onsocketerror
<!-- UTSAPIJSON.showToast.tutorial --> <!-- UTSAPIJSON.onSocketError.description -->
## uni.hideToast() @hidetoast <!-- UTSAPIJSON.onSocketError.param -->
<!-- UTSAPIJSON.hideToast.description --> <!-- UTSAPIJSON.onSocketError.returnValue -->
<!-- UTSAPIJSON.hideToast.param --> <!-- UTSAPIJSON.onSocketError.compatibility -->
<!-- UTSAPIJSON.hideToast.returnValue --> <!-- UTSAPIJSON.onSocketError.tutorial -->
<!-- UTSAPIJSON.hideToast.compatibility --> ## uni.sendSocketMessage(options) @sendsocketmessage
<!-- UTSAPIJSON.hideToast.tutorial --> <!-- UTSAPIJSON.sendSocketMessage.description -->
## uni.showLoading(options) @showloading <!-- UTSAPIJSON.sendSocketMessage.param -->
<!-- UTSAPIJSON.showLoading.description --> <!-- UTSAPIJSON.sendSocketMessage.returnValue -->
<!-- UTSAPIJSON.showLoading.param --> <!-- UTSAPIJSON.sendSocketMessage.compatibility -->
<!-- UTSAPIJSON.showLoading.returnValue --> <!-- UTSAPIJSON.sendSocketMessage.tutorial -->
<!-- UTSAPIJSON.showLoading.compatibility --> ## uni.onSocketMessage(callback) @onsocketmessage
<!-- UTSAPIJSON.showLoading.tutorial --> <!-- UTSAPIJSON.onSocketMessage.description -->
## uni.hideLoading() @hideloading <!-- UTSAPIJSON.onSocketMessage.param -->
<!-- UTSAPIJSON.hideLoading.description --> <!-- UTSAPIJSON.onSocketMessage.returnValue -->
<!-- UTSAPIJSON.hideLoading.param --> <!-- UTSAPIJSON.onSocketMessage.compatibility -->
<!-- UTSAPIJSON.hideLoading.returnValue --> <!-- UTSAPIJSON.onSocketMessage.tutorial -->
<!-- UTSAPIJSON.hideLoading.compatibility --> ## uni.closeSocket(options) @closesocket
<!-- UTSAPIJSON.hideLoading.tutorial --> <!-- UTSAPIJSON.closeSocket.description -->
## uni.showModal(options) @showmodal <!-- UTSAPIJSON.closeSocket.param -->
<!-- UTSAPIJSON.showModal.description --> <!-- UTSAPIJSON.closeSocket.returnValue -->
<!-- UTSAPIJSON.showModal.param --> <!-- UTSAPIJSON.closeSocket.compatibility -->
<!-- UTSAPIJSON.showModal.returnValue --> <!-- UTSAPIJSON.closeSocket.tutorial -->
<!-- UTSAPIJSON.showModal.compatibility --> ## uni.onSocketClose(callback) @onsocketclose
<!-- UTSAPIJSON.showModal.tutorial --> <!-- UTSAPIJSON.onSocketClose.description -->
## uni.showActionSheet(options) @showactionsheet <!-- UTSAPIJSON.onSocketClose.param -->
<!-- UTSAPIJSON.showActionSheet.description --> <!-- UTSAPIJSON.onSocketClose.returnValue -->
<!-- UTSAPIJSON.showActionSheet.param --> <!-- UTSAPIJSON.onSocketClose.compatibility -->
<!-- UTSAPIJSON.showActionSheet.returnValue --> <!-- UTSAPIJSON.onSocketClose.tutorial -->
<!-- UTSAPIJSON.showActionSheet.compatibility --> # 存储
<!-- UTSAPIJSON.showActionSheet.tutorial -->
## uni.setStorage(options) @setstorage ## uni.setStorage(options) @setstorage
...@@ -514,7 +334,7 @@ ...@@ -514,7 +334,7 @@
<!-- UTSAPIJSON.removeStorageSync.tutorial --> <!-- UTSAPIJSON.removeStorageSync.tutorial -->
## uni.clearStorage(option?) @clearstorage ## uni.clearStorage(option) @clearstorage
<!-- UTSAPIJSON.clearStorage.description --> <!-- UTSAPIJSON.clearStorage.description -->
...@@ -538,89 +358,146 @@ ...@@ -538,89 +358,146 @@
<!-- UTSAPIJSON.clearStorageSync.tutorial --> <!-- UTSAPIJSON.clearStorageSync.tutorial -->
## uni.connectSocket(options) @connectsocket # 定位
<!-- UTSAPIJSON.connectSocket.description -->
<!-- UTSAPIJSON.connectSocket.param --> ## uni.getLocation(options) @getlocation
<!-- UTSAPIJSON.connectSocket.returnValue --> <!-- UTSAPIJSON.getLocation.description -->
<!-- UTSAPIJSON.connectSocket.compatibility --> <!-- UTSAPIJSON.getLocation.param -->
<!-- UTSAPIJSON.connectSocket.tutorial --> <!-- UTSAPIJSON.getLocation.returnValue -->
## uni.onSocketOpen(options) @onsocketopen <!-- UTSAPIJSON.getLocation.compatibility -->
<!-- UTSAPIJSON.onSocketOpen.description --> <!-- UTSAPIJSON.getLocation.tutorial -->
<!-- UTSAPIJSON.onSocketOpen.param --> ## uni.getLocation(options) @getlocation
<!-- UTSAPIJSON.onSocketOpen.returnValue --> <!-- UTSAPIJSON.getLocation.description -->
<!-- UTSAPIJSON.onSocketOpen.compatibility --> <!-- UTSAPIJSON.getLocation.param -->
<!-- UTSAPIJSON.onSocketOpen.tutorial --> <!-- UTSAPIJSON.getLocation.returnValue -->
## uni.onSocketError(callback) @onsocketerror <!-- UTSAPIJSON.getLocation.compatibility -->
<!-- UTSAPIJSON.onSocketError.description --> <!-- UTSAPIJSON.getLocation.tutorial -->
<!-- UTSAPIJSON.onSocketError.param --> # 媒体
<!-- UTSAPIJSON.onSocketError.returnValue -->
<!-- UTSAPIJSON.onSocketError.compatibility --> ## uni.chooseImage(options) @chooseimage
<!-- UTSAPIJSON.onSocketError.tutorial --> <!-- UTSAPIJSON.chooseImage.description -->
## uni.sendSocketMessage(options) @sendsocketmessage <!-- UTSAPIJSON.chooseImage.param -->
<!-- UTSAPIJSON.sendSocketMessage.description --> <!-- UTSAPIJSON.chooseImage.returnValue -->
<!-- UTSAPIJSON.sendSocketMessage.param --> <!-- UTSAPIJSON.chooseImage.compatibility -->
<!-- UTSAPIJSON.sendSocketMessage.returnValue --> <!-- UTSAPIJSON.chooseImage.tutorial -->
<!-- UTSAPIJSON.sendSocketMessage.compatibility --> ## uni.saveImageToPhotosAlbum(options) @saveimagetophotosalbum
<!-- UTSAPIJSON.sendSocketMessage.tutorial --> <!-- UTSAPIJSON.saveImageToPhotosAlbum.description -->
## uni.onSocketMessage(callback) @onsocketmessage <!-- UTSAPIJSON.saveImageToPhotosAlbum.param -->
<!-- UTSAPIJSON.onSocketMessage.description --> <!-- UTSAPIJSON.saveImageToPhotosAlbum.returnValue -->
<!-- UTSAPIJSON.onSocketMessage.param --> <!-- UTSAPIJSON.saveImageToPhotosAlbum.compatibility -->
<!-- UTSAPIJSON.onSocketMessage.returnValue --> <!-- UTSAPIJSON.saveImageToPhotosAlbum.tutorial -->
<!-- UTSAPIJSON.onSocketMessage.compatibility --> # 设备
<!-- UTSAPIJSON.onSocketMessage.tutorial -->
## uni.closeSocket(options) @closesocket ## uni.getAppAuthorizeSetting() @getappauthorizesetting
<!-- UTSAPIJSON.closeSocket.description --> <!-- UTSAPIJSON.getAppAuthorizeSetting.description -->
<!-- UTSAPIJSON.closeSocket.param --> <!-- UTSAPIJSON.getAppAuthorizeSetting.param -->
<!-- UTSAPIJSON.closeSocket.returnValue --> <!-- UTSAPIJSON.getAppAuthorizeSetting.returnValue -->
<!-- UTSAPIJSON.closeSocket.compatibility --> <!-- UTSAPIJSON.getAppAuthorizeSetting.compatibility -->
<!-- UTSAPIJSON.closeSocket.tutorial --> <!-- UTSAPIJSON.getAppAuthorizeSetting.tutorial -->
## uni.onSocketClose(callback) @onsocketclose ## uni.getAppBaseInfo(config) @getappbaseinfo
<!-- UTSAPIJSON.onSocketClose.description --> <!-- UTSAPIJSON.getAppBaseInfo.description -->
<!-- UTSAPIJSON.onSocketClose.param --> <!-- UTSAPIJSON.getAppBaseInfo.param -->
<!-- UTSAPIJSON.onSocketClose.returnValue --> <!-- UTSAPIJSON.getAppBaseInfo.returnValue -->
<!-- UTSAPIJSON.onSocketClose.compatibility --> <!-- UTSAPIJSON.getAppBaseInfo.compatibility -->
<!-- UTSAPIJSON.onSocketClose.tutorial --> <!-- UTSAPIJSON.getAppBaseInfo.tutorial -->
## uni.getDeviceInfo(config) @getdeviceinfo
<!-- UTSAPIJSON.getDeviceInfo.description -->
<!-- UTSAPIJSON.getDeviceInfo.param -->
<!-- UTSAPIJSON.getDeviceInfo.returnValue -->
<!-- UTSAPIJSON.getDeviceInfo.compatibility -->
<!-- UTSAPIJSON.getDeviceInfo.tutorial -->
## uni.getSystemInfo(options) @getsysteminfo
<!-- UTSAPIJSON.getSystemInfo.description -->
<!-- UTSAPIJSON.getSystemInfo.param -->
<!-- UTSAPIJSON.getSystemInfo.returnValue -->
<!-- UTSAPIJSON.getSystemInfo.compatibility -->
<!-- UTSAPIJSON.getSystemInfo.tutorial -->
## uni.getSystemInfoSync() @getsysteminfosync
<!-- UTSAPIJSON.getSystemInfoSync.description -->
<!-- UTSAPIJSON.getSystemInfoSync.param -->
<!-- UTSAPIJSON.getSystemInfoSync.returnValue -->
<!-- UTSAPIJSON.getSystemInfoSync.compatibility -->
<!-- UTSAPIJSON.getSystemInfoSync.tutorial -->
## uni.getWindowInfo() @getwindowinfo
<!-- UTSAPIJSON.getWindowInfo.description -->
<!-- UTSAPIJSON.getWindowInfo.param -->
<!-- UTSAPIJSON.getWindowInfo.returnValue -->
<!-- UTSAPIJSON.getWindowInfo.compatibility -->
<!-- UTSAPIJSON.getWindowInfo.tutorial -->
## uni.getSystemSetting() @getsystemsetting
<!-- UTSAPIJSON.getSystemSetting.description -->
<!-- UTSAPIJSON.getSystemSetting.param -->
<!-- UTSAPIJSON.getSystemSetting.returnValue -->
<!-- UTSAPIJSON.getSystemSetting.compatibility -->
<!-- UTSAPIJSON.getSystemSetting.tutorial -->
<!-- UTSAPIJSON.general_type.name --> <!-- UTSAPIJSON.general_type.name -->
......
...@@ -34,19 +34,19 @@ data里`:`的用途是赋值,无法通过`:`定义类型,所以data的数据 ...@@ -34,19 +34,19 @@ data里`:`的用途是赋值,无法通过`:`定义类型,所以data的数据
<script lang="uts"> <script lang="uts">
type User = { type User = {
name:string name:string
} } //定义一个User类型
export default { export default {
data() { data() {
const date = new Date() //自动推导类型为Date const date = new Date() //自动推导类型为Date
const v = 1; const v = 1; //自动推导为number
return { return {
buttonEnable: false, //自动推导为boolean
s1 : "hello", // 根据字面量推导为string s1 : "hello", // 根据字面量推导为string
n1 : 0 as number, // 这里其实可以根据字面量自动推导,as number写不写都行 n1 : 0 as number, // 这里其实可以根据字面量自动推导,as number写不写都行
n2, // 不合法,必须指定类型。真实运行时请删掉本行 n2, // 不合法,必须指定类型。真实运行时请删掉本行
n3 as number, // 不合法,uts不支持undefined,必须初始化。真实运行时请删掉本行 n3 as number, // 不合法,uts不支持undefined,必须初始化。真实运行时请删掉本行
n4 : null as number | null // 合法。定义为可为null的数字,初始值是null,但在使用n4前必须为其赋值数字 n4 : null as number | null // 合法。定义为可为null的数字,初始值是null,但在使用n4前必须为其赋值数字
year: date.getFullYear() as number, // 在data里,目前无法通过变量类型推导data项的类型,需使用 as 显式声明 year: date.getFullYear() as number, // 在data里,目前无法通过变量类型推导data项的类型,需使用 as 显式声明
buttonEnable: false,
t: ``, // 模板字面量,推导为 string t: ``, // 模板字面量,推导为 string
o: { id: 1, name:"DCloud" }, // 对象字面量,推导为 UTSJSONObject,注意:访问 data 中定义的UTSJSONObject属性时,需要使用索引访问,如 this.o["id"] o: { id: 1, name:"DCloud" }, // 对象字面量,推导为 UTSJSONObject,注意:访问 data 中定义的UTSJSONObject属性时,需要使用索引访问,如 this.o["id"]
an: [1, 2], // 数组字面量,如果元素均为纯数字字面量,则推导为 Array<number> an: [1, 2], // 数组字面量,如果元素均为纯数字字面量,则推导为 Array<number>
...@@ -79,18 +79,51 @@ data里`:`的用途是赋值,无法通过`:`定义类型,所以data的数据 ...@@ -79,18 +79,51 @@ data里`:`的用途是赋值,无法通过`:`定义类型,所以data的数据
</style> </style>
``` ```
## 函数 event 参数需显式指定类型 ## 模板函数 event 参数的类型
上面的例子中,touchstart事件中必须对`e`指定类型,才能使用`e.touches[0].screenX`。下面再举一个例子,加深下记忆:
```vue
<template>
<switch @change="switchChange" />
</template>
<script lang="uts">
export default {
methods: {
switchChange: function (e : SwitchChangeEvent) { // 这里必须声明e的类型为SwitchChangeEvent
console.log('switch 发生 change 事件,携带值为', e.detail.value)
}
}
}
</script>
```
那event参数的类型从哪里获取呢?
1. 组件的文档中有介绍,比如[switch的组件](component/switch.md)
2. ide中有提示,比如鼠标移到switch组件的`@change`上,悬浮出现hover,会显示:`(property) 'change': (event: SwitchChangeEvent) => void`
```html ```html
<view @click="(e: any) => foo(e)">event must has type</view> <view @click="(e: any) => foo(e)">event must has type</view>
<view @click="foo($event as MouseEvent)">event must has type</view> <view @click="foo($event as MouseEvent)">event must has type</view>
``` ```
## JSON的类型注意 ## JSON的类型
JSON数据在强类型语言中使用时,不能像js那样随意。
js中可以这么写:
```js
var p ={"name": "zhangsan","age": 12}
p.age //12
```
但是在强类型语言中,如果想要使用`p.age`,那么p必须是一个对象,而age则是这个对象的属性。然后必须为p对象、name属性、age属性,都定义类型,比如name是string,age是number。
JSON在强类型语言中使用时,不能像js那样随意。这部分内容较长,[详见](../uts/data-type.md#JSON) uts中有2种方式使用json数据:
1. 把json数据转为type,自定义一个类型,声明json数据内容中每个属性的类型。然后就可以使用对象属性的方式来使用json数据。[详见](../uts/data-type.md#type)
2. 使用UTSJSONObject,不为json定义类型,然后通过下标和方法来使用json数据。[详见](../uts/data-type.md#ustjsonobject)
## 作用域插槽数据类型 ## 组件作用域插槽的类型
作用域插槽需在组件中指定插槽数据类型 作用域插槽需在组件中指定插槽数据类型
```ts ```ts
...@@ -115,9 +148,12 @@ export default { ...@@ -115,9 +148,12 @@ export default {
</view> </view>
``` ```
## uts不支持undefined ## uts不支持js的一些功能和特性
任何变量被定义后,都需要赋值。 - 不支持undefined。任何变量被定义后,都需要赋值
- 不支持promise、async、await,仅支持callback回调
- 函数声明方式不支持[作为值传递](../uts/function.md#作为值传递)
- 函数表达式方式不支持[默认参数](../uts/function.md#默认参数)
## css使用注意 ## css使用注意
......
<!-- UTSCOMJSON.animation-view.name -->
<!-- UTSCOMJSON.animation-view.description -->
<!-- UTSCOMJSON.animation-view.attrubute -->
<!-- UTSCOMJSON.animation-view.compatibility -->
<!-- UTSCOMJSON.animation-view.reference -->
<!-- UTSCOMJSON.button.name -->
<!-- UTSCOMJSON.button.description -->
<!-- UTSCOMJSON.button.attrubute -->
<!-- UTSCOMJSON.button.compatibility -->
<!-- UTSCOMJSON.button.reference -->
<!-- UTSCOMJSON.checkbox-group.name -->
<!-- UTSCOMJSON.checkbox-group.description -->
<!-- UTSCOMJSON.checkbox-group.attrubute -->
<!-- UTSCOMJSON.checkbox-group.compatibility -->
<!-- UTSCOMJSON.checkbox-group.reference -->
<!-- UTSCOMJSON.checkbox.name -->
<!-- UTSCOMJSON.checkbox.description -->
<!-- UTSCOMJSON.checkbox.attrubute -->
<!-- UTSCOMJSON.checkbox.compatibility -->
<!-- UTSCOMJSON.checkbox.reference -->
# 组件的公共属性和事件
每个组件都有属性和事件。有些属性和事件,是所有组件都支持的。
## 组件公共属性
- id
- ref
- style
- class
## 组件公共事件
- @touchstart
- @touchmove
- @touchend
- @tap
- @click
- @longpress
### 冒泡事件系统
DOM事件主要有三个阶段:捕获阶段、目标阶段和冒泡阶段。
以点击事件为例,当触发点击时,
1. 首先从根节点逐级向下分发,直到监听点击事件的节点为止(捕获阶段);
2. 然后事件到达当前节点并触发点击事件(目标阶段);
3. 接着继续向上逐级触发父节点的点击事件,直到根节点为止(冒泡阶段)。
注意,虽然有3个阶段,但第2个阶段(“目标阶段”:事件到达了元素)并没有单独处理:捕获和冒泡阶段的处理程序都会在该阶段触发。
我们一般使用默认的事件注册机制,将事件注册到冒泡阶段,相对来说,大多数处理情况都在冒泡阶段。
uvue 目前暂不支持事件的捕获阶段。
#### 阻止冒泡
在事件回调中,可以通过调用`event.stopPropagation`方法阻止事件冒泡。
```ts
handleClick (event : MouseEvent) {
// 阻止继续冒泡.
event.stopPropagation();
}
```
#### 阻止默认行为
在事件回调中,可以通过调用`event.preventDefault`方法阻止默认行为。`event.preventDefault`仅处理默认行为,事件冒泡不会被阻止。
```vue
<template>
<scroll-view style="flex: 1;">
<view style="width: 750rpx;height: 1750rpx;background-color: bisque;">
滑动框中区域修改进度并阻止滚动,滑动其余空白区域触发滚动
<view style="width: 750rpx;height: 40rpx; margin-top: 100rpx;border:5rpx;" @touchmove="slider">
<view ref="sliderNode" style="background-color: chocolate;width: 0rpx;height: 30rpx;"></view>
</view>
</view>
</scroll-view>
</template>
<script>
export default {
data() {
return {
sliderNode: null as INode | null
}
},
methods: {
slider(e : TouchEvent) {
if (this.sliderNode == null) {
this.sliderNode = this.$refs["sliderNode"] as INode
}
e.preventDefault() // 阻止外层scroll-view滚动行为
this.sliderNode!!.style?.setProperty('width', e.touches[0].screenX);
}
}
}
</script>
```
\ No newline at end of file
<!-- UTSCOMJSON.image.name -->
<!-- UTSCOMJSON.image.description -->
<!-- UTSCOMJSON.image.attrubute -->
## 图标格式
- [x] bmp
- [x] gif
- [x] ico
- [x] jpg
- [x] png
- [x] webp
- [x] heic(Android10+支持)
如需其他图片格式,可搜索插件市场或自行开发uts组件插件。
## src路径支持说明
- 支持本地路径相对路径:比如根目录/、上级目录../、子目录subdir/。但不支持页面当前目录。
- 支持本地绝对路径
- 支持网络路径
- 本地路径的大小写不敏感
## 网络图缓存说明
image组件内部使用facebook的fresco库,自带缓存策略。
<!-- UTSCOMJSON.image.compatibility -->
<!-- UTSCOMJSON.image.reference -->
## bug&tips
- 目前src不支持页面当前目录的图片。
\ No newline at end of file
<!-- UTSCOMJSON.input.name -->
<!-- UTSCOMJSON.input.description -->
<!-- UTSCOMJSON.input.attrubute -->
<!-- UTSCOMJSON.input.compatibility -->
<!-- UTSCOMJSON.input.reference -->
<!-- UTSCOMJSON.list-view.name -->
<!-- UTSCOMJSON.list-view.description -->
在App中,基于recycle-view的list,才能实现长列表的资源自动回收,以保障列表加载很多项目时,屏幕外的资源被有效回收。list-view就是基于recycle-view的list组件。
每个list由1个父组件list-view及若干子组件list-item构成。
在list-item上使用v-for指令循环list-item,自动会回收屏幕外的列表项资源。
list-view和scroll-view都是滚动组件,list适用于长列表场景,其他场景适用于scroll-view。
<!-- UTSCOMJSON.list-view.attrubute -->
<!-- UTSCOMJSON.list-view.compatibility -->
<!-- UTSCOMJSON.list-view.reference -->
<!-- UTSCOMJSON.list-item.name -->
<!-- UTSCOMJSON.list-item.description -->
<!-- UTSCOMJSON.list-item.attrubute -->
<!-- UTSCOMJSON.list-item.compatibility -->
<!-- UTSCOMJSON.list-item.reference -->
## 示例代码
- 联网联表:[https://gitcode.net/dcloud/hello-uni-app-x/-/blob/master/pages/component/list-news/list.uvue](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/master/pages/component/list-news/list.uvue)
- 可左右滑动的多个列表:[https://gitcode.net/dcloud/hello-uni-app-x/-/tree/master/pages/template/long-list](https://gitcode.net/dcloud/hello-uni-app-x/-/tree/master/pages/template/long-list)
## Bug&Tips
- list触底偶尔不触发
- 暂不支持reverse,目前还不能开发im那样的倒叙列表
- 暂不支持waterfall多列瀑布流
\ No newline at end of file
<!-- UTSCOMJSON.navigator.name -->
<!-- UTSCOMJSON.navigator.description -->
<!-- UTSCOMJSON.navigator.attrubute -->
<!-- UTSCOMJSON.navigator.compatibility -->
<!-- UTSCOMJSON.navigator.reference -->
<!-- UTSCOMJSON.picker-view.name -->
<!-- UTSCOMJSON.picker-view.description -->
<!-- UTSCOMJSON.picker-view.attrubute -->
<!-- UTSCOMJSON.picker-view.compatibility -->
<!-- UTSCOMJSON.picker-view.reference -->
<!-- UTSCOMJSON.picker-view-column.name -->
<!-- UTSCOMJSON.picker-view-column.description -->
<!-- UTSCOMJSON.picker-view-column.attrubute -->
<!-- UTSCOMJSON.picker-view-column.compatibility -->
<!-- UTSCOMJSON.picker-view-column.reference -->
## tips
- picker里如放置较长内容,应该使用list-view而不是scroll-view。
\ No newline at end of file
<!-- UTSCOMJSON.progress.name -->
<!-- UTSCOMJSON.progress.description -->
<!-- UTSCOMJSON.progress.attrubute -->
<!-- UTSCOMJSON.progress.compatibility -->
<!-- UTSCOMJSON.progress.reference -->
<!-- UTSCOMJSON.radio-group.name -->
<!-- UTSCOMJSON.radio-group.description -->
<!-- UTSCOMJSON.radio-group.attrubute -->
<!-- UTSCOMJSON.radio-group.compatibility -->
<!-- UTSCOMJSON.radio-group.reference -->
<!-- UTSCOMJSON.radio.name -->
<!-- UTSCOMJSON.radio.description -->
<!-- UTSCOMJSON.radio.attrubute -->
<!-- UTSCOMJSON.radio.compatibility -->
<!-- UTSCOMJSON.radio.reference -->
<!-- UTSCOMJSON.rich-text.name -->
<!-- UTSCOMJSON.rich-text.description -->
<!-- UTSCOMJSON.rich-text.attrubute -->
<!-- UTSCOMJSON.rich-text.compatibility -->
<!-- UTSCOMJSON.rich-text.reference -->
## bug&tips
- 目前只支持HTMLString,暂不支持node。HTMLString支持常用但不是全部web样式,具体清单后续给出。
\ No newline at end of file
<!-- UTSCOMJSON.scroll-view.name -->
<!-- UTSCOMJSON.scroll-view.description -->
<!-- UTSCOMJSON.scroll-view.attrubute -->
<!-- UTSCOMJSON.scroll-view.compatibility -->
<!-- UTSCOMJSON.scroll-view.reference -->
## bug@tips
- 嵌套滚动暂未发布
\ No newline at end of file
<!-- UTSCOMJSON.slider.name -->
<!-- UTSCOMJSON.slider.description -->
<!-- UTSCOMJSON.slider.attrubute -->
<!-- UTSCOMJSON.slider.compatibility -->
<!-- UTSCOMJSON.slider.reference -->
<!-- UTSCOMJSON.swiper.name -->
<!-- UTSCOMJSON.swiper.description -->
<!-- UTSCOMJSON.swiper.attrubute -->
<!-- UTSCOMJSON.swiper.compatibility -->
<!-- UTSCOMJSON.swiper.reference -->
<!-- UTSCOMJSON.swiper-item.name -->
<!-- UTSCOMJSON.swiper-item.description -->
<!-- UTSCOMJSON.swiper-item.attrubute -->
<!-- UTSCOMJSON.swiper-item.compatibility -->
<!-- UTSCOMJSON.swiper-item.reference -->
<!-- UTSCOMJSON.switch.name -->
<!-- UTSCOMJSON.switch.description -->
<!-- UTSCOMJSON.switch.attrubute -->
<!-- UTSCOMJSON.switch.compatibility -->
<!-- UTSCOMJSON.switch.reference -->
<!-- UTSCOMJSON.text.name -->
<!-- UTSCOMJSON.text.description -->
在app-uvue和app-nvue中,文本只能写在text中,而不能写在view的text区域。
虽然app-uvue中写在view的text区域的文字,也会被编译器自动包裹一层text组件,看起来也可以使用。但这样会造成无法修改该text文字的样式,详见uvue的[样式不继承](../uni-app-x/css/readme.md#stylenoextends)章节
<!-- UTSCOMJSON.text.attrubute -->
<!-- UTSCOMJSON.text.compatibility -->
## 子组件
text组件在web浏览器渲染(含浏览器、小程序webview渲染模式、app-vue)和uvue中,可以并只能嵌套text组件。
在nvue中,text组件不能嵌套。
<!-- UTSCOMJSON.text.reference -->
<!-- UTSCOMJSON.textarea.name -->
<!-- UTSCOMJSON.textarea.description -->
<!-- UTSCOMJSON.textarea.attrubute -->
<!-- UTSCOMJSON.textarea.compatibility -->
<!-- UTSCOMJSON.textarea.reference -->
<!-- UTSCOMJSON.video.name -->
<!-- UTSCOMJSON.video.description -->
<!-- UTSCOMJSON.video.attrubute -->
<!-- UTSCOMJSON.video.compatibility -->
<!-- UTSCOMJSON.video.reference -->
## bug@tips
- 暂不支持全屏后放置子组件
- video组件的API目前只支持ref方式,详见[示例](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/master/pages/component/video/video.uvue)
\ No newline at end of file
<!-- UTSCOMJSON.view.name -->
<!-- UTSCOMJSON.view.description -->
<!-- UTSCOMJSON.view.attrubute -->
<!-- UTSCOMJSON.view.compatibility -->
<!-- UTSCOMJSON.view.reference -->
view是Drawable的组件,也就是可以在view上调用绘制API自绘内容。它类似canvas,但不需要单独的canvas组件,在view上就可以直接draw。[详见](../dom/drawablecontext.md)
\ No newline at end of file
<!-- UTSCOMJSON.web-view.name -->
<!-- UTSCOMJSON.web-view.description -->
<!-- UTSCOMJSON.web-view.attrubute -->
<!-- UTSCOMJSON.web-view.compatibility -->
<!-- UTSCOMJSON.web-view.reference -->
## letter-spacing
<!-- CSSJSON.letter-spacing.description -->
<!-- CSSJSON.letter-spacing.syntax -->
<!-- CSSJSON.letter-spacing.values -->
<!-- CSSJSON.letter-spacing.compatibility -->
<!-- CSSJSON.letter-spacing.reference -->
\ No newline at end of file
# UVUE DOM # UVUE DOM
App-uvue的每个页面,在内存中都有一个 DOM(文档对象模型)。它和浏览器的 [DOM规范](https://www.w3.org/DOM/?spm=a2c7j.-zh-docs-api-weex-variable.0.0.2a5537c6FrgbYp) 类似。 App-uvue的每个页面,在内存中都有一个 DOM(文档对象模型)。它和浏览器的 [DOM规范](https://www.w3.org/DOM/?spm=a2c7j.-zh-docs-api-weex-variable.0.0.2a5537c6FrgbYp) 类似。
DOM 是页面元素内容的结构数据。DOM 模型用一个逻辑树来表示一个页面文档,树的每个分支的终点都是一个节点,每个节点都对应一个节点对象(INode)。 DOM 是页面元素内容的结构数据。DOM 模型用一个逻辑树来表示一个页面文档,树的每个分支的终点都是一个节点,每个节点都对应一个节点对象(INode)。
实际上 app-uvue 的template、数据绑定,在底层调用的也是 DOM API。 实际上 app-uvue 的template、数据绑定,在底层调用的也是 DOM API。
在浏览器中,开发者一旦跳过vue框架直接操作dom,vue框架将无法管理相应dom,开发者需要注意两端的冲突。 在浏览器中,开发者一旦跳过vue框架直接操作dom,vue框架将无法管理相应dom,开发者需要注意两端的冲突。
在 App 端,为了减少冲突,目前不支持通过 DOM API 创建和删除 DOM 树中的元素。只支持获取元素INode。 在 App 端,为了减少冲突,目前不支持通过 DOM API 创建和删除 DOM 树中的元素。只支持获取元素INode。
## 使用场景 ## 使用场景
通常情况下,使用 uvue 框架的数据绑定来操作更新页面组件就可以。但有2个场景,需要使用 DOM API。 通常情况下,使用 uvue 框架的数据绑定来操作更新页面组件就可以。但有2个场景,需要使用 DOM API。
1. 跟手动效 1. 跟手动效
响应触屏事件更新组件的位置,要想不掉帧,需要保证16毫秒绘制一帧。 响应触屏事件更新组件的位置,要想不掉帧,需要保证16毫秒绘制一帧。
uvue的data更新,有一套diff机制,每次触发data更新,会多几毫秒的耗时。 uvue的data更新,有一套diff机制,每次触发data更新,会多几毫秒的耗时。
此时推荐通过 DOM API 跳过 vue 框架直接操作组件的样式。 此时推荐通过 DOM API 跳过 vue 框架直接操作组件的样式。
2. Draw API 2. Draw API
Android和iOS的原生view,有一些底层的高性能绘制能力,这些API的调用,需要先获取到INode对象,然后再调用其方法。 Android和iOS的原生view,有一些底层的高性能绘制能力,这些API的调用,需要先获取到INode对象,然后再调用其方法。
[性能](performance.md)章节,对这2个场景有详细的阐述。
## 获取DOM元素对象@getDomNode ## 获取DOM元素对象@getDomNode
app-uvue页面中可以通过 vue 框架中的组件实例对象 [$refs](https://uniapp.dcloud.net.cn/tutorial/vue3-api.html#%E5%AE%9E%E4%BE%8B-property) 获取 DOM 元素对象。 app-uvue页面中可以通过 vue 框架中的组件实例对象 [$refs](https://uniapp.dcloud.net.cn/tutorial/vue3-api.html#%E5%AE%9E%E4%BE%8B-property) 获取 DOM 元素对象。
首先需要为组件设置 ref 属性值,它类似于id: 首先需要为组件设置 ref 属性值,它类似于id:
...@@ -35,8 +37,8 @@ app-uvue页面中可以通过 vue 框架中的组件实例对象 [$refs](https:/ ...@@ -35,8 +37,8 @@ app-uvue页面中可以通过 vue 框架中的组件实例对象 [$refs](https:/
<view ref="myNode" class="container"> <view ref="myNode" class="container">
</view> </view>
``` ```
在页面生命周期 `onReady` 中(太早组件可能没有创建),通过 `$refs` 获取。如果长期使用,可以保存在vue的 data 中。 在页面`onReady` 后(太早组件可能没有创建),通过 `$refs` 获取。如果长期使用,可以保存在vue的 data 中。
```ts ```ts
export default { export default {
data() { data() {
...@@ -50,7 +52,7 @@ export default { ...@@ -50,7 +52,7 @@ export default {
}, },
} }
``` ```
通过INode对象的 style 属性更新组件的样式: 通过INode对象的 style 属性更新组件的样式:
```ts ```ts
this.myNode?.style?.setProperty('background-color', 'red'); this.myNode?.style?.setProperty('background-color', 'red');
...@@ -81,7 +83,7 @@ this.myNode?.style?.setProperty('background-color', 'red'); ...@@ -81,7 +83,7 @@ this.myNode?.style?.setProperty('background-color', 'red');
} }
}, },
onLoad() { onLoad() {
}, },
onReady() { onReady() {
// 获取组件对象 // 获取组件对象
this.myNode = $refs['myNode'] as INode; this.myNode = $refs['myNode'] as INode;
...@@ -97,7 +99,7 @@ this.myNode?.style?.setProperty('background-color', 'red'); ...@@ -97,7 +99,7 @@ this.myNode?.style?.setProperty('background-color', 'red');
<style> <style>
.container { .container {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: aquamarine; background-color: aquamarine;
width: 100%; width: 100%;
...@@ -105,11 +107,6 @@ this.myNode?.style?.setProperty('background-color', 'red'); ...@@ -105,11 +107,6 @@ this.myNode?.style?.setProperty('background-color', 'red');
} }
</style> </style>
``` ```
以上例子仅为演示DOM API的使用,实际上点击按钮修改背景色这种简单场景,使用数据绑定更简单,class绑定到一个data上,动态修改data即可。
## DOM接口 以上例子仅为演示DOM API的使用,实际上点击按钮修改背景色这种简单场景,使用数据绑定更简单,class绑定到一个data上,动态修改data即可。
- [INode](dom/inode.md)
- [CSSStyleDeclaration](dom/cssstyle.md)
- [DrawableContext](dom/drawablecontext.md)
## CSSStyleDeclaration
CSSStyleDeclaration表示一个CSS 声明块对象,它是一个 CSS 属性键值对的集合。它暴露了样式信息和各种与样式相关的方法和属性。
| 方法 | 说明 |
|-------------------------------------- |-------------------------- |
| [setProperty](#setProperty) | 设置CSS的某个样式值 |
| [getPropertyValue](#getPropertyValue) | 获取CSS的某个样式值 |
### setProperty(name, value)@setProperty
对CSS指定样式设置一个新值。
```ts
CSSStyleDeclaration.setProperty(name:string, value:any):void
```
**参数说明**
| 参数 | 类型 | 说明 |
|-------|-------- |------ |
| name | string | CSS样式名称|
| value | any | CSS样式值 |
**返回值**
### getPropertyValue(property)@getPropertyValue
获取CSS指定的样式值,如果指定的样式不存在则返回null。
```ts
CSSStyleDeclaration.getPropertyValue(property:string):any?
```
**参数说明**
| 参数 | 类型 | 说明 |
|---------------|-------- |------ |
| property | string | CSS样式名称|
**返回值**
| 类型 | 说明 |
|------ |---------- |
| any | CSS样式值,可能为null |
## DrawableContext ## DrawableContext
uni-app x 在 app 端提供 DrawableContext 绘制内容到 uvue 页面的`view`标签上。可用于绘制文本、形状等内容。
### 使用
#### 获取 DrawableContext 对象
DrawableContext 对象通过对象节点(INode)的`getDrawableContext()`方法获取
```vue
<template>
<view ref="drawable" style="width: 750rpx;height: 750rpx;">
</view>
</template>
<script>
export default {
onReady() {
var ctx = (this.$refs['drawable'] as INode).getDrawableContext()
}
}
</script>
```
#### 绘制内容
通过 DrawableContext 提供的 API 绘制文本、形状等内容
```ts
<script>
export default {
onReady() {
var ctx = (this.$refs['drawable'] as INode).getDrawableContext()
ctx.moveTo(50, 40);
ctx.lineTo(200, 40);
ctx.stroke();
}
}
</script>
```
#### 更新到画布
DrawableContext 在调用 API 之后不会主动更新到画布上,需要主动调用`update()`方法更新。
```ts
<script>
export default {
onReady() {
var ctx = (this.$refs['drawable'] as INode).getDrawableContext()
ctx.moveTo(50, 40);
ctx.lineTo(200, 40);
ctx.stroke();
ctx.update()
}
}
</script>
```
#### 清除画布内容
如果清除已经绘制的内容重新绘制,需要调用`reset()`方法清除内容再进行绘制。
```vue
<template>
<view ref="drawable" style="width: 750rpx;height: 750rpx;" @click="drawable">
</view>
</template>
<script>
export default {
data(){
return {
change:false
}
},
onReady() {
this.drawable()
},
methods:{
drawable(){
var ctx = (this.$refs['drawable'] as INode).getDrawableContext()
ctx.reset();
if(this.change) {
ctx.strokeStyle = "#33ff0000"
ctx.lineWidth = 10
}
this.change = !this.change
ctx.moveTo(50, 40);
ctx.lineTo(200, 40);
ctx.stroke();
ctx.update()
}
}
}
```
\ No newline at end of file
...@@ -26,7 +26,7 @@ node.style; ...@@ -26,7 +26,7 @@ node.style;
设置指定组件上的某个属性值。如果设置的属性已经存在,则更新该属性值;否则使用指定的名称和值添加一个新的属性。 设置指定组件上的某个属性值。如果设置的属性已经存在,则更新该属性值;否则使用指定的名称和值添加一个新的属性。
```ts ```ts
node.setAttribute("name", "helloButton"); INode.setAttribute(name:string, value:any|null):void
``` ```
**参数说明** **参数说明**
...@@ -34,7 +34,7 @@ node.setAttribute("name", "helloButton"); ...@@ -34,7 +34,7 @@ node.setAttribute("name", "helloButton");
| 参数 | 类型 | 说明 | | 参数 | 类型 | 说明 |
|-------|-------- |------ | |-------|-------- |------ |
| name | string | 属性名称 | | name | string | 属性名称 |
| value | Any | 属性的值 | | value | any | 属性的值 |
**返回值** **返回值**
...@@ -46,7 +46,7 @@ node.setAttribute("name", "helloButton"); ...@@ -46,7 +46,7 @@ node.setAttribute("name", "helloButton");
获取元素指定的属性值,如果指定的属性不存在则返回null。 获取元素指定的属性值,如果指定的属性不存在则返回null。
```ts ```ts
var attribute = node.getAttribute(attributeName); INode.getAttribute(attributeName:string):any?
``` ```
**参数说明** **参数说明**
...@@ -67,12 +67,12 @@ var attribute = node.getAttribute(attributeName); ...@@ -67,12 +67,12 @@ var attribute = node.getAttribute(attributeName);
获取组件的绘制对象,仅uvue页面中的 `view` 组件支持,其它组件不支持则返回null。 获取组件的绘制对象,仅uvue页面中的 `view` 组件支持,其它组件不支持则返回null。
```ts ```ts
var drawContext = node.getDrawableContext(); INode.getDrawableContext():DrawableContext|null
``` ```
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
|------ |---------- | |------ |---------- |
| [DrawableContext](drawablecontext.md)? | 绘制对象,可为null | | [DrawableContext](drawablecontext.md) | 绘制对象,可能为null |
...@@ -4,13 +4,13 @@ ...@@ -4,13 +4,13 @@
## 配置项列表 ## 配置项列表
|属性 |类型 |默认值 |描述 |最低版本 | |属性 |类型 |默认值 |描述 |最低版本 |
|:- |:- |:- |:- |:- | |:- |:- |:- |:- |:- |
|name |String |- |应用名称 | | |name |String |- |应用名称 |3.9.0 |
|appid |String |- |应用标识,新建项目时DCloud云端分配 | | |appid |String |- |应用标识,新建项目时DCloud云端分配 |3.9.0 |
|description|String |- |应用描述 | | |description|String |- |应用描述 |3.9.0 |
|versionName|String |- |版本名称,例如:1.0.0 | | |versionName|String |- |版本名称,例如:1.0.0 |3.9.0 |
|versionCode|String |- |版本号,仅包含数字字符,例如:100 | | |versionCode|String |- |版本号,仅包含数字字符,例如:100 |3.9.0 |
|uni-app-x |[UNI-APP-X配置](#uniappx) |- |uni-app x项目配置 | | |uni-app-x |[UNI-APP-X配置](#uniappx) |- |uni-app x项目配置 |3.9.0 |
|app |[APP配置](#app) |- |App项目(原生App端)配置 | | |app |[APP配置](#app) |- |App项目(原生App端)配置 |3.9.0 |
**注意** **注意**
- `appid` 由 DCloud 云端分配,主要用于 DCloud 相关的云服务,请勿自行修改。[详见](https://ask.dcloud.net.cn/article/35907) - `appid` 由 DCloud 云端分配,主要用于 DCloud 相关的云服务,请勿自行修改。[详见](https://ask.dcloud.net.cn/article/35907)
...@@ -22,8 +22,7 @@ ...@@ -22,8 +22,7 @@
|属性 |类型 |默认值 |描述 |最低版本 | |属性 |类型 |默认值 |描述 |最低版本 |
|:- |:- |:- |:- |:- | |:- |:- |:- |:- |:- |
|singleThread |Boolean |true |是否为单线程模式 | | |flex-direction |String |column |uvue页面默认flex排列方向,可取值:row:从左到右; row-reverse:从右到左;column:从上到下;column-reverse:与 column 相反|3.9.0 |
|flex-direction |String |column |uvue页面默认flex排列方向,可取值:row:从左到右; row-reverse:从右到左;column:从上到下;column-reverse:与 column 相反| |
### APP配置@app ### APP配置@app
...@@ -31,7 +30,7 @@ App端(原生App)配置 ...@@ -31,7 +30,7 @@ App端(原生App)配置
|属性 |类型 |默认值 |描述 |最低版本 | |属性 |类型 |默认值 |描述 |最低版本 |
|:- |:- |:- |:- |:- | |:- |:- |:- |:- |:- |
|distribute |[DISTRIBUTE配置](#distribute) |- |App端发布配置 | | |distribute |[DISTRIBUTE配置](#distribute) |- |App端发布配置 |3.9.0 |
### DISTRIBUTE配置@distribute ### DISTRIBUTE配置@distribute
...@@ -39,9 +38,9 @@ App端发布配置 ...@@ -39,9 +38,9 @@ App端发布配置
|属性 |类型 |默认值 |描述 |最低版本 | |属性 |类型 |默认值 |描述 |最低版本 |
|:- |:- |:- |:- |:- | |:- |:- |:- |:- |:- |
|syncDebug |Boolean |false |是否为自定义调试基座 | | |syncDebug |Boolean |false |是否为自定义调试基座 |3.9.0 |
|android |[ANDROID配置](#android) |- |App-Android端发布配置 | | |android |[ANDROID配置](#android) |- |App-Android端发布配置 |3.9.0 |
|ios |[IOS配置](#ios) |- |App-iOS端发布配置 | | |ios |[IOS配置](#ios) |- |App-iOS端发布配置 |3.9.0 |
### ANDROID配置@android ### ANDROID配置@android
...@@ -49,19 +48,20 @@ App-Android端发布配置 ...@@ -49,19 +48,20 @@ App-Android端发布配置
|属性 |类型 |默认值 |描述 |最低版本 | |属性 |类型 |默认值 |描述 |最低版本 |
|:- |:- |:- |:- |:- | |:- |:- |:- |:- |:- |
|packagename |String |- |Android包名 | | |packagename |String |- |Android包名 |3.9.0 |
|keystore |String |- |证书库文件路径,相对于.manifest目录 | | |keystore |String |- |证书库文件路径,相对于.manifest目录 |3.9.0 |
|storepwd |String |- |证书库文件密码 | | |storepwd |String |- |证书库文件密码 |3.9.0 |
|aliasname |String |- |证书别名 | | |aliasname |String |- |证书别名 |3.9.0 |
|keypwd |String |- |证书密码 | | |keypwd |String |- |证书密码 |3.9.0 |
|abiFilters |Array<String> |- |支持的CPU类型 | | |abiFilters |Array<String> |- |支持的CPU类型 |3.9.0 |
|minSdkVersion |String |- |最低Android版本(Android API Level)| | |minSdkVersion |String |- |最低Android版本(Android API Level)|3.9.0 |
|targetSdkVersion |String |- |目标版本(Android API Level) | | |targetSdkVersion |String |- |目标版本(Android API Level) |3.9.0 |
**注意** **注意**
- `minSdkVersion` 用于指定应用运行所需最低 API 级别的整数。如果系统的 API 级别低于该属性中指定的值,Android 系统将阻止用户安装应用。 - `minSdkVersion` 用于指定应用运行所需最低 API 级别的整数。如果系统的 API 级别低于该属性中指定的值,Android 系统将阻止用户安装应用。
- `targetSdkVersion` 一个用于指定应用的目标 API 级别的整数。如果未设置,其默认值与为 minSdkVersion 指定的值相等。该值用于通知系统,您已针对目标版本进行了测试,并且系统不应通过启用任何兼容性行为,以保持您的应用与目标版本的向前兼容性。 - `targetSdkVersion` 一个用于指定应用的目标 API 级别的整数。如果未设置,其默认值与为 minSdkVersion 指定的值相等。该值用于通知系统,您已针对目标版本进行了测试,并且系统不应通过启用任何兼容性行为,以保持您的应用与目标版本的向前兼容性。
- `minSdkVersion``targetSdkVersion` 设置的值是 API 级别(API Level),完整API级别信息请参考[Android API级别说明](https://developer.android.com/guide/topics/manifest/uses-sdk-element?hl=zh-cn#ApiLevels) - `minSdkVersion``targetSdkVersion` 设置的值是 API 级别(API Level),完整API级别信息请参考[Android API级别说明](https://developer.android.com/guide/topics/manifest/uses-sdk-element?hl=zh-cn#ApiLevels)
- `keystore``storepwd``aliasname``keypwd`为云端打包证书相关配置,在HBuilderX中提交云端打包时使用,不要手动修改
### IOS配置@ios ### IOS配置@ios
...@@ -69,7 +69,7 @@ App-iOS端发布配置 ...@@ -69,7 +69,7 @@ App-iOS端发布配置
|属性 |类型 |默认值 |描述 |最低版本 | |属性 |类型 |默认值 |描述 |最低版本 |
|:- |:- |:- |:- |:- | |:- |:- |:- |:- |:- |
|appid |String |- |iOS Bundle ID | | |appid |String |- |iOS Bundle ID |3.9.0 |
## 示例 ## 示例
...@@ -81,7 +81,7 @@ App-iOS端发布配置 ...@@ -81,7 +81,7 @@ App-iOS端发布配置
"versionName" : "1.0.0", "versionName" : "1.0.0",
"versionCode" : "100", "versionCode" : "100",
"uni-app-x":{ "uni-app-x":{
"enable": true "flex-direction": "column"
}, },
"vueVersion" : "3", "vueVersion" : "3",
"app": { "app": {
...@@ -89,10 +89,6 @@ App-iOS端发布配置 ...@@ -89,10 +89,6 @@ App-iOS端发布配置
"syncDebug": true, "syncDebug": true,
"android": { "android": {
"packagename": "Android包名", "packagename": "Android包名",
"keystore": "证书库文件路径",
"storepwd": "证书库密码",
"aliasname": "证书别名",
"keypwd": "证书密码",
"abiFilters": [ "abiFilters": [
"armeabi-v7a","arm64-v8a" "armeabi-v7a","arm64-v8a"
], ],
......
...@@ -112,6 +112,7 @@ uni-app x 一期,只包括基本的组件和API。 ...@@ -112,6 +112,7 @@ uni-app x 一期,只包括基本的组件和API。
- [x] switch - [x] switch
- [x] slider - [x] slider
- [x] picker-view - [x] picker-view
- [x] navigator
- [x] progress - [x] progress
- [x] webview - [x] webview
- [x] video 暂不支持全屏后放置子组件 - [x] video 暂不支持全屏后放置子组件
...@@ -231,7 +232,7 @@ uni-app js版的“App原生语言插件”无法在 uni-app x 中运行。 ...@@ -231,7 +232,7 @@ uni-app js版的“App原生语言插件”无法在 uni-app x 中运行。
前端插件里,可兼容uts前端插件、可兼容uvue组件,即script是uts,style符合uvue的css。 前端插件里,可兼容uts前端插件、可兼容uvue组件,即script是uts,style符合uvue的css。
# 自动化测试 ## 自动化测试
uni-app x 从源头重视产品质量,第一个版本就支持自动化测试。并为uni-app x产品编写了数万行自动化测试例代码。 uni-app x 从源头重视产品质量,第一个版本就支持自动化测试。并为uni-app x产品编写了数万行自动化测试例代码。
uni-app x 的自动化测试方案和 uni-app js版相同,自动化测试脚本使用js编写(注意不是uts)。整个自动化测试环境,运行在电脑端。 uni-app x 的自动化测试方案和 uni-app js版相同,自动化测试脚本使用js编写(注意不是uts)。整个自动化测试环境,运行在电脑端。
...@@ -240,7 +241,7 @@ uni-app x 的自动化测试方案和 uni-app js版相同,自动化测试脚 ...@@ -240,7 +241,7 @@ uni-app x 的自动化测试方案和 uni-app js版相同,自动化测试脚
uni-app 的自动化测试教程详见:[https://uniapp.dcloud.net.cn/worktile/auto/quick-start.html](https://uniapp.dcloud.net.cn/worktile/auto/quick-start.html) uni-app 的自动化测试教程详见:[https://uniapp.dcloud.net.cn/worktile/auto/quick-start.html](https://uniapp.dcloud.net.cn/worktile/auto/quick-start.html)
# 一期范围 ## 一期范围
除上述文档中声明已经完成的,还有如下需要注意: 除上述文档中声明已经完成的,还有如下需要注意:
...@@ -252,9 +253,9 @@ uni-app 的自动化测试教程详见:[https://uniapp.dcloud.net.cn/worktile/ ...@@ -252,9 +253,9 @@ uni-app 的自动化测试教程详见:[https://uniapp.dcloud.net.cn/worktile/
欢迎去[需求墙](https://vote.dcloud.net.cn/)投票,告诉我们你的需求优先级。 欢迎去[需求墙](https://vote.dcloud.net.cn/)投票,告诉我们你的需求优先级。
# 历史老项目兼容指南 ## 历史老项目兼容指南
## uni-app js版老项目迁移指南 ### uni-app js版老项目迁移指南
1. 首先检查你的老项目里使用的uni组件、api、三方插件、三方库,在uni-app x上是否支持。 1. 首先检查你的老项目里使用的uni组件、api、三方插件、三方库,在uni-app x上是否支持。
2. 对于不支持的,需要自己写uni-app x的插件或去插件市场找替代兼容插件。如果写调用原生的uts代码,需要你了解原生的api。 2. 对于不支持的,需要自己写uni-app x的插件或去插件市场找替代兼容插件。如果写调用原生的uts代码,需要你了解原生的api。
3. 对于css,如果你之前使用nvue的css,那边迁移到uni-app x在样式上改动很小。如果之前是vue的css,那么需要改为flex布局,以及仅使用uvue支持的css来布局界面。 3. 对于css,如果你之前使用nvue的css,那边迁移到uni-app x在样式上改动很小。如果之前是vue的css,那么需要改为flex布局,以及仅使用uvue支持的css来布局界面。
...@@ -265,7 +266,7 @@ uni-app 的自动化测试教程详见:[https://uniapp.dcloud.net.cn/worktile/ ...@@ -265,7 +266,7 @@ uni-app 的自动化测试教程详见:[https://uniapp.dcloud.net.cn/worktile/
官方近期会提供把[uni小程序sdk](https://nativesupport.dcloud.net.cn/#)集成到uni-app x的方案。届时你的uni-app js版老项目可以作为uni-app x新项目的一个小程序来使用。 官方近期会提供把[uni小程序sdk](https://nativesupport.dcloud.net.cn/#)集成到uni-app x的方案。届时你的uni-app js版老项目可以作为uni-app x新项目的一个小程序来使用。
## 原生/rn/flutter页面兼容指南 ### 原生/rn/flutter页面兼容指南
之前已经有原生/rn/flutter页面,希望渐进式的迁移到uni-app x架构,该怎么搞? 之前已经有原生/rn/flutter页面,希望渐进式的迁移到uni-app x架构,该怎么搞?
...@@ -273,7 +274,7 @@ uni-app x 毕竟是原生应用,内嵌flutter、rn这些没有任何问题, ...@@ -273,7 +274,7 @@ uni-app x 毕竟是原生应用,内嵌flutter、rn这些没有任何问题,
至于把 uni-app x 作为一个sdk内嵌到其他原生应用中,还在评估中。 至于把 uni-app x 作为一个sdk内嵌到其他原生应用中,还在评估中。
# FAQ ## FAQ
- uni-app x 支持uvue页面和vue页面混写吗? - uni-app x 支持uvue页面和vue页面混写吗?
仅支持uvue页面。后期考虑中。历史vue页面也可以通过 uni小程序sdk 嵌入到uni-app x中。 仅支持uvue页面。后期考虑中。历史vue页面也可以通过 uni小程序sdk 嵌入到uni-app x中。
......
# UniCloud
## UniCloud
<!-- UTSUNICLOUDAPIJSON.uniCloud_props.description -->
<!-- UTSUNICLOUDAPIJSON.uniCloud_props.param -->
<!-- UTSUNICLOUDAPIJSON.uniCloud_props.returnValue -->
<!-- UTSUNICLOUDAPIJSON.uniCloud_props.compatibility -->
<!-- UTSUNICLOUDAPIJSON.uniCloud_props.tutorial -->
## Constructor(options) @constructor-1
<!-- UTSUNICLOUDAPIJSON.Constructor.description -->
<!-- UTSUNICLOUDAPIJSON.Constructor.param -->
<!-- UTSUNICLOUDAPIJSON.Constructor.returnValue -->
<!-- UTSUNICLOUDAPIJSON.Constructor.compatibility -->
<!-- UTSUNICLOUDAPIJSON.Constructor.tutorial -->
## callFunction(options) @callfunction
<!-- UTSUNICLOUDAPIJSON.callFunction.description -->
<!-- UTSUNICLOUDAPIJSON.callFunction.param -->
<!-- UTSUNICLOUDAPIJSON.callFunction.returnValue -->
<!-- UTSUNICLOUDAPIJSON.callFunction.compatibility -->
<!-- UTSUNICLOUDAPIJSON.callFunction.tutorial -->
## uploadFile(options) @uploadfile
<!-- UTSUNICLOUDAPIJSON.uploadFile.description -->
<!-- UTSUNICLOUDAPIJSON.uploadFile.param -->
<!-- UTSUNICLOUDAPIJSON.uploadFile.returnValue -->
<!-- UTSUNICLOUDAPIJSON.uploadFile.compatibility -->
<!-- UTSUNICLOUDAPIJSON.uploadFile.tutorial -->
## getTempFileURL(options) @gettempfileurl
<!-- UTSUNICLOUDAPIJSON.getTempFileURL.description -->
<!-- UTSUNICLOUDAPIJSON.getTempFileURL.param -->
<!-- UTSUNICLOUDAPIJSON.getTempFileURL.returnValue -->
<!-- UTSUNICLOUDAPIJSON.getTempFileURL.compatibility -->
<!-- UTSUNICLOUDAPIJSON.getTempFileURL.tutorial -->
## importObject(objectName) @importobject
<!-- UTSUNICLOUDAPIJSON.importObject.description -->
<!-- UTSUNICLOUDAPIJSON.importObject.param -->
<!-- UTSUNICLOUDAPIJSON.importObject.returnValue -->
<!-- UTSUNICLOUDAPIJSON.importObject.compatibility -->
<!-- UTSUNICLOUDAPIJSON.importObject.tutorial -->
## onResponse(callback) @onresponse
<!-- UTSUNICLOUDAPIJSON.onResponse.description -->
<!-- UTSUNICLOUDAPIJSON.onResponse.param -->
<!-- UTSUNICLOUDAPIJSON.onResponse.returnValue -->
<!-- UTSUNICLOUDAPIJSON.onResponse.compatibility -->
<!-- UTSUNICLOUDAPIJSON.onResponse.tutorial -->
## offResponse(callback) @offresponse
<!-- UTSUNICLOUDAPIJSON.offResponse.description -->
<!-- UTSUNICLOUDAPIJSON.offResponse.param -->
<!-- UTSUNICLOUDAPIJSON.offResponse.returnValue -->
<!-- UTSUNICLOUDAPIJSON.offResponse.compatibility -->
<!-- UTSUNICLOUDAPIJSON.offResponse.tutorial -->
## onRefreshToken(callback) @onrefreshtoken
<!-- UTSUNICLOUDAPIJSON.onRefreshToken.description -->
<!-- UTSUNICLOUDAPIJSON.onRefreshToken.param -->
<!-- UTSUNICLOUDAPIJSON.onRefreshToken.returnValue -->
<!-- UTSUNICLOUDAPIJSON.onRefreshToken.compatibility -->
<!-- UTSUNICLOUDAPIJSON.onRefreshToken.tutorial -->
## offRefreshToken(callback) @offrefreshtoken
<!-- UTSUNICLOUDAPIJSON.offRefreshToken.description -->
<!-- UTSUNICLOUDAPIJSON.offRefreshToken.param -->
<!-- UTSUNICLOUDAPIJSON.offRefreshToken.returnValue -->
<!-- UTSUNICLOUDAPIJSON.offRefreshToken.compatibility -->
<!-- UTSUNICLOUDAPIJSON.offRefreshToken.tutorial -->
\ No newline at end of file
...@@ -19,7 +19,7 @@ uniCloud为每个开发者提供一个免费服务空间,让你也可以拥有 ...@@ -19,7 +19,7 @@ uniCloud为每个开发者提供一个免费服务空间,让你也可以拥有
### 看视频,只需25分钟,快速入门uniCloud ### 看视频,只需25分钟,快速入门uniCloud
<a target="_blank" href="https://www.bilibili.com/video/BV17p4y1a71x?p=1"> <a target="_blank" href="https://www.bilibili.com/video/BV17p4y1a71x?p=1">
<div style="height: 32vw;width: 50vw;background-image: url(https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/20210512183320.jpg);background-size: 100% 100%;"></div> <img style="max-height: 512px;max-width: 800px;" src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/20210512183320.jpg"></img>
</a> </a>
### uniCloud是什么和不是什么 ### uniCloud是什么和不是什么
...@@ -220,7 +220,6 @@ uni云端一体生态的内容太多,让我们抽丝剥茧、归纳分类, ...@@ -220,7 +220,6 @@ uni云端一体生态的内容太多,让我们抽丝剥茧、归纳分类,
上面的轮子,是与业务无关的通用轮子。除此之外,还有大量的云端一体的项目模板。 上面的轮子,是与业务无关的通用轮子。除此之外,还有大量的云端一体的项目模板。
使用这些现成的项目模板,那开发效率更是极大幅的提升。过去5、6人月的项目,现在几天就能搞定上线! 使用这些现成的项目模板,那开发效率更是极大幅的提升。过去5、6人月的项目,现在几天就能搞定上线!
| | | |
|-- |-- |-- | |-- |-- |-- |
|电商 |博客 |排班 | |电商 |博客 |排班 |
|网赚合成游戏 |社交 |预约预订 | |网赚合成游戏 |社交 |预约预订 |
......
...@@ -20,6 +20,7 @@ uni-admin 是开源的,遵循 MIT 协议,你可以从[Github](https://github ...@@ -20,6 +20,7 @@ uni-admin 是开源的,遵循 MIT 协议,你可以从[Github](https://github
<img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/20210826112813.jpg" alt="uni-admin视频教程" style="width: 60%;"> <img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/20210826112813.jpg" alt="uni-admin视频教程" style="width: 60%;">
</a> </a>
> 问题交流与反馈,请加入:[uni-admin交流群](https://im.dcloud.net.cn/#/?joinGroup=64e84353cf42a22d542b29ea)
## uni-admin 功能 ## uni-admin 功能
......
...@@ -1747,7 +1747,29 @@ let res = await db.collection('user').where({ ...@@ -1747,7 +1747,29 @@ let res = await db.collection('user').where({
geometry: line geometry: line
}) })
}).get() }).get()
``` ```
#### unicloud-map 云端一体组件
若想要在地图上展示自定义的POI信息,试试 `unicloud-map` 云端一体组件,该组件将前端地图组件与云端数据库无缝连接,只需写一个`<unicloud-map>`组件,即可从数据库中获取附近的POI信息并在地图上呈现。无论是静态还是动态的POI,甚至更多自定义功能,都轻松实现。让地图开发变得愉快又高效。
> 下载地址:[https://ext.dcloud.net.cn/plugin?name=unicloud-map](https://ext.dcloud.net.cn/plugin?name=unicloud-map)
> 文档地址:[https://uniapp.dcloud.net.cn/uniCloud/unicloud-map.html](https://uniapp.dcloud.net.cn/uniCloud/unicloud-map.html)
**渲染静态POI运行效果图**
通过从数据库获取POI数据,渲染到地图上
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/3707/409.png)
**渲染动态POI运行效果图**
通过从数据库获取POI数据,并通过 uni-id-common 内的路线规划API,计算路线、距离、时间
**运行效果图**
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/3707/408.png)
## 事务@transaction ## 事务@transaction
......
...@@ -708,7 +708,7 @@ uni-frv-external-co 只支持URL化方式访问,在调用之前需要在uniClo ...@@ -708,7 +708,7 @@ uni-frv-external-co 只支持URL化方式访问,在调用之前需要在uniClo
支持以下两种认证方式,根据业务需求选择不同的认证方式 支持以下两种认证方式,根据业务需求选择不同的认证方式
1. 携带connectCode认证;相比签名认证,省去了复杂的签名计算过程。 调用简单,但安全性较低,适合服务器与服务器之间调用[详见](/uniCloud/uni-cloud-s2s.md#code) 1. 携带connectCode认证;相比签名认证,省去了复杂的签名计算过程。 调用简单,但安全性较低。[详见](/uniCloud/uni-cloud-s2s.md#code)
2. 使用签名认证;调用接口时需要使用签名密钥对请求内容进行签名计算,并将签名添加至请求头传输给云函数进行签名验证,相比简易鉴权方式,安全性高,可防止接口参数被篡改。[详见](/uniCloud/uni-cloud-s2s.md#sign) 2. 使用签名认证;调用接口时需要使用签名密钥对请求内容进行签名计算,并将签名添加至请求头传输给云函数进行签名验证,相比简易鉴权方式,安全性高,可防止接口参数被篡改。[详见](/uniCloud/uni-cloud-s2s.md#sign)
如在您的业务也在uniCloud并且需要签名请求认证,可以使用`uni-cloud-s2s`提供的`getSecureHeaders`方法生成签名请求头 [详见](/uniCloud/uni-cloud-s2s.md#sign-method-of-server) 如在您的业务也在uniCloud并且需要签名请求认证,可以使用`uni-cloud-s2s`提供的`getSecureHeaders`方法生成签名请求头 [详见](/uniCloud/uni-cloud-s2s.md#sign-method-of-server)
......
...@@ -2667,6 +2667,28 @@ const res = await db.collection('geo-near').aggregate().geoNear({ ...@@ -2667,6 +2667,28 @@ const res = await db.collection('geo-near').aggregate().geoNear({
- 存在geoNear时其query参数将取代where/doc作为权限校验依据,即query匹配到的结果需要满足权限才可以查询 - 存在geoNear时其query参数将取代where/doc作为权限校验依据,即query匹配到的结果需要满足权限才可以查询
#### unicloud-map 云端一体组件
若想要在地图上展示自定义的POI信息,试试 `unicloud-map` 云端一体组件,该组件将前端地图组件与云端数据库无缝连接,只需写一个`<unicloud-map>`组件,即可从数据库中获取附近的POI信息并在地图上呈现。无论是静态还是动态的POI,甚至更多自定义功能,都轻松实现。让地图开发变得愉快又高效。
> 下载地址:[https://ext.dcloud.net.cn/plugin?name=unicloud-map](https://ext.dcloud.net.cn/plugin?name=unicloud-map)
> 文档地址:[https://uniapp.dcloud.net.cn/uniCloud/unicloud-map.html](https://uniapp.dcloud.net.cn/uniCloud/unicloud-map.html)
**渲染静态POI运行效果图**
通过从数据库获取POI数据,渲染到地图上
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/3707/409.png)
**渲染动态POI运行效果图**
通过从数据库获取POI数据,并通过 uni-id-common 内的路线规划API,计算路线、距离、时间
**运行效果图**
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/3707/408.png)
### 查询某字段和另一个表的字段相等的记录@enhanced-in ### 查询某字段和另一个表的字段相等的记录@enhanced-in
> 新增于 HBuilderX 3.7.12 > 新增于 HBuilderX 3.7.12
......
...@@ -41,20 +41,20 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。 ...@@ -41,20 +41,20 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。
|资源分类 |资源细项 |免费版 |基础版 |标准版 |专业版 |企业版 |旗舰版 | |资源分类 |资源细项 |免费版 |基础版 |标准版 |专业版 |企业版 |旗舰版 |
|:-: |:-: |:-: |:-: |:-: |:-: |:-: |:-: | |:-: |:-: |:-: |:-: |:-: |:-: |:-: |:-: |
|云函数 |资源使用量(GBs/月) |1000 |1万 |20万 |40万 |150万 |400万 | |云函数 |资源使用量(GBs/月) |1000 |1万 |20万 |40万 |150万 |400万 |
| |调用次数(万次/月) |1.5 |15 |300 |600 |2400 |6000 | |^^ |调用次数(万次/月) |1.5 |15 |300 |600 |2400 |6000 |
| |出网流量(GB/月) |1 |1 |20 |40 |160 |500 | |^^ |出网流量(GB/月) |1 |1 |20 |40 |160 |500 |
|云数据库 |容量(GB) |2 |2 |3 |5 |10 |10 | |云数据库 |容量(GB) |2 |2 |3 |5 |10 |10 |
| |读操作使用量(万RU/天)|0.05 |5 |25 |50 |150 |500 | |^^ |读操作使用量(万RU/天)|0.05 |5 |25 |50 |150 |500 |
| |写操作使用量(万WU/天)|0.03 |3 |15 |30 |100 |300 | |^^ |写操作使用量(万WU/天)|0.03 |3 |15 |30 |100 |300 |
| |集合数量 |100 |100 |100 |100 |100 |100 | |^^ |集合数量 |100 |100 |100 |100 |100 |100 |
| |索引数量 |400 |400 |400 |400 |400 |400 | |^^ |索引数量 |400 |400 |400 |400 |400 |400 |
|云存储 |容量(GB) |5 |8 |10 |50 |100 |500 | |云存储 |容量(GB) |5 |8 |10 |50 |100 |500 |
| |下载操作次数(万次/月)|0.2 |10 |200 |750 |1500 |3750 | |^^ |下载操作次数(万次/月)|0.2 |10 |200 |750 |1500 |3750 |
| |上传操作次数(万次/月)|0.1 |5 |100 |300 |600 |1500 | |^^ |上传操作次数(万次/月)|0.1 |5 |100 |300 |600 |1500 |
| |CDN流量(GB/月) |1 |2 |10 |50 |150 |500 | |^^ |CDN流量(GB/月) |1 |2 |10 |50 |150 |500 |
|前端网页托管 |容量(GB) |5 |8 |10 |50 |100 |500 | |前端网页托管 |容量(GB) |5 |8 |10 |50 |100 |500 |
| |CDN流量(GB/月) |1 |2 |10 |50 |150 |500 | |^^ |CDN流量(GB/月) |1 |2 |10 |50 |150 |500 |
|售价(元/月) |- |免费 |5 |24 |82 |316 |688 | |售价(元/月) ||免费 |5 |24 |82 |316 |688 |
- GBs、RU、WU等单位释义,[见下](#aliyun-quota-description) - GBs、RU、WU等单位释义,[见下](#aliyun-quota-description)
- 套餐中的资源超标后服务空间会停服,需要及时升配或转按量计费才能恢复。 - 套餐中的资源超标后服务空间会停服,需要及时升配或转按量计费才能恢复。
...@@ -84,17 +84,17 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。 ...@@ -84,17 +84,17 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。
|资源分类 |资源细项 |售价(元) | |资源分类 |资源细项 |售价(元) |
|:-: |:-: |:-: | |:-: |:-: |:-: |
|云函数 |资源使用量(GBs) |0.000110592| |云函数 |资源使用量(GBs) |0.000110592|
| |调用次数(万次) |0.0133 | |^^ |调用次数(万次) |0.0133 |
| |出网流量(GB) |0.8 | |^^ |出网流量(GB) |0.8 |
|云数据库 |容量(GB/天) |0.07 | |云数据库 |容量(GB/天) |0.07 |
| |读操作使用量(万RU) |0.015 | |^^ |读操作使用量(万RU) |0.015 |
| |写操作使用量(万RU) |0.05 | |^^ |写操作使用量(万RU) |0.05 |
|云存储 |容量(GB/天) |0.0043 | |云存储 |容量(GB/天) |0.0043 |
| |下载操作次数(万次) |0.01 | |^^ |下载操作次数(万次) |0.01 |
| |上传操作次数(万次) |0.01 | |^^ |上传操作次数(万次) |0.01 |
| |CDN 流量(GB) |0.18 | |^^ |CDN 流量(GB) |0.18 |
|前端网站托管 |容量(GB/天) |0.0043 | |前端网站托管 |容量(GB/天) |0.0043 |
| |流量(GB) |0.18 | |^^ |流量(GB)|0.18 |
**注意** **注意**
- GBs、RU、WU等单位释义,[见下](#aliyun-quota-description) - GBs、RU、WU等单位释义,[见下](#aliyun-quota-description)
...@@ -113,17 +113,17 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。 ...@@ -113,17 +113,17 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。
|资源分类 |资源细项 |最小值 |数据更新延迟时间 | |资源分类 |资源细项 |最小值 |数据更新延迟时间 |
|:-: |:-: |:-: |:-: | |:-: |:-: |:-: |:-: |
|云函数 |资源使用量 |1万GBs/日 |20分钟 | |云函数 |资源使用量 |1万GBs/日 |20分钟 |
| |调用次数 |1万次/日 |20分钟 | |^^ |调用次数 |1万次/日 |20分钟 |
| |出网流量 |1GB/日 |20分钟 | |^^ |出网流量 |1GB/日 |20分钟 |
|云数据库 |容量 |1GB |1小时 | |云数据库 |容量 |1GB |1小时 |
| |读操作使用量 |1万RU/日 |20分钟 | |^^ |读操作使用量 |1万RU/日 |20分钟 |
| |写操作使用量 |1万WU/日 |20分钟 | |^^ |写操作使用量 |1万WU/日 |20分钟 |
|云存储 |容量 |1GB |6小时 | |云存储 |容量 |1GB |6小时 |
| |下载操作次数 |1万次/日 |6小时 | |^^ |下载操作次数 |1万次/日 |6小时 |
| |上传操作次数 |1万次/日 |6小时 | |^^ |上传操作次数 |1万次/日 |6小时 |
| |CDN 流量 |1GB/日 |6小时 | |^^ |CDN 流量 |1GB/日 |6小时 |
|前端网站托管 |容量 |1GB |6小时 | |前端网站托管 |容量 |1GB |6小时 |
| |流量 |1GB/日 |6小时 | |^^|流量|1GB/日 |6小时 |
上述指标,容量是累计的,其他单位则是按日的。 上述指标,容量是累计的,其他单位则是按日的。
...@@ -138,17 +138,17 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。 ...@@ -138,17 +138,17 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。
|资源分类 |资源细项 |说明 |数据更新延迟时间 | |资源分类 |资源细项 |说明 |数据更新延迟时间 |
|:-: |:-: |:-: |:-: | |:-: |:-: |:-: |:-: |
|云函数 |资源使用量(GBs) |资源使用量GBs = 函数配置内存GB × 运行计费时长s。 例如,配置为256MB的函数,单次运行了1760ms,计费时长为1760ms,则单次运行的资源使用量为(256 / 1024) × (1760 / 1000) = 0.44GBs |20分钟 | |云函数 |资源使用量(GBs) |资源使用量GBs = 函数配置内存GB × 运行计费时长s。 例如,配置为256MB的函数,单次运行了1760ms,计费时长为1760ms,则单次运行的资源使用量为(256 / 1024) × (1760 / 1000) = 0.44GBs |20分钟 |
| |调用次数 | - |20分钟 | |^^ |调用次数 | - |20分钟 |
| |出网流量(GB) |在云函数中访问外网时产生的出网流量,包含请求三方服务器发送的数据和返回给客户端的数据。 |20分钟 | |^^ |出网流量(GB) |在云函数中访问外网时产生的出网流量,包含请求三方服务器发送的数据和返回给客户端的数据。 |20分钟 |
|云数据库 |容量(GB) | - |1小时 | |云数据库 |容量(GB) | - |1小时 |
| |读操作使用量(RU) |读操作使用量(Read Unit)= ceil(查询数据量KB / 4),即从数据表中读取一条4 KB数据(向上取整)计作1RU,例如读取7.6 KB的数据计作2RU。 |20分钟 | |^^ |读操作使用量(RU) |读操作使用量(Read Unit)= ceil(查询数据量KB / 4),即从数据表中读取一条4 KB数据(向上取整)计作1RU,例如读取7.6 KB的数据计作2RU。 |20分钟 |
| |写操作使用量(WU) |写操作使用量(Write Unit)= ceil(写入数据量KB / 1),即向数据表中写入一条1 KB数据(向上取整)计作1WU,例如写入1.8 KB的数据计作2WU。 |20分钟 | |^^ |写操作使用量(WU) |写操作使用量(Write Unit)= ceil(写入数据量KB / 1),即向数据表中写入一条1 KB数据(向上取整)计作1WU,例如写入1.8 KB的数据计作2WU。 |20分钟 |
|云存储 |容量(GB) | - |6小时 | |云存储 |容量(GB) | - |6小时 |
| |下载操作次数 |通过CDN加速访问的次数,回源次数暂不收费。 |6小时 | |^^ |下载操作次数 |通过CDN加速访问的次数,回源次数暂不收费。 |6小时 |
| |上传操作次数 | - |6小时 | |^^ |上传操作次数 | - |6小时 |
| |CDN 流量(GB) |通过CDN加速产生的流量,回源流量暂不收费。 |6小时 | |^^ |CDN 流量(GB) |通过CDN加速产生的流量,回源流量暂不收费。 |6小时 |
|前端网站托管 |容量(GB) | - |6小时 | |前端网站托管 |容量(GB) | - |6小时 |
| |CDN 流量(GB) |通过CDN加速产生的流量,回源流量暂不收费。 |6小时 | |^^ |CDN 流量(GB) |通过CDN加速产生的流量,回源流量暂不收费。 |6小时 |
**补充** **补充**
...@@ -165,33 +165,33 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。 ...@@ -165,33 +165,33 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。
|资源分类 |限制项 |限额 | |资源分类 |限制项 |限额 |
|--- |--- |--- | |--- |--- |--- |
|云函数 |callFunction请求QPS |1000 | |云函数 |callFunction请求QPS |1000 |
| |url化请求QPS(自定义域名) |1000 | |^^ |url化请求QPS(自定义域名) |1000 |
| |url化请求QPS(默认域名) |1000 | |^^ |url化请求QPS(默认域名) |1000 |
| |固定IP代理请求QPS |20 | |^^ |固定IP代理请求QPS |20 |
| |最大实例数 |300 | |^^ |最大实例数 |300 |
| |函数数量限制 |48 | |^^ |函数数量限制 |48 |
| |客户端请求最大超时时间 |60秒 | |^^ |客户端请求最大超时时间 |60秒 |
| |固定IP代理请求最大超时时间 |5秒 | |^^ |固定IP代理请求最大超时时间 |5秒 |
| |定时任务单次最大运行时间 |600秒| |^^ |定时任务单次最大运行时间 |600秒|
| |定时任务最小执行间隔 |1分钟| |^^ |定时任务最小执行间隔 |1分钟|
| |callFunction请求体最大限制 |6M | |^^ |callFunction请求体最大限制 |6M |
| |url化请求体最大限制 |1M | |^^ |url化请求体最大限制 |1M |
|数据库 |QPS |1000 | |数据库 |QPS |1000 |
| |并发执行数 |100 | |^^ |并发执行数 |100 |
| |单次请求超时时间 |5秒 | |^^ |单次请求超时时间 |5秒 |
| |集合数量 |100 | |^^ |集合数量 |100 |
| |索引数量 |400 | |^^ |索引数量 |400 |
| |单次请求获取的最大数据条数(limit) |1000 | |^^ |单次请求获取的最大数据条数(limit) |1000 |
| |事务超时时间(从事务开始到事务提交或回滚) |10秒 | |^^ |事务超时时间(从事务开始到事务提交或回滚) |10秒 |
|云存储 |上传QPS |300 | |云存储 |上传QPS |300 |
| |删除QPS |300 | |^^ |删除QPS |300 |
| |查询QPS |300 | |^^ |查询QPS |300 |
目前单个账号可创建20个正式版服务空间,如有更多需求需发邮件到service@dcloud.io申请。此外云函数数量限制、集合数量限制也可申请提升。邮件模板见下方:[申请解除限制邮件模板](#apply-email-template) 目前单个账号可创建20个正式版服务空间,如有更多需求需发邮件到service@dcloud.io申请。此外云函数数量限制、集合数量限制也可申请提升。邮件模板见下方:[申请解除限制邮件模板](#apply-email-template)
### 申请解除限制邮件模板@apply-email-template ### 申请解除限制邮件模板@apply-email-template
```text ```md
邮件标题:云函数数量限制提升申请 | 服务空间数量限制提升申请 | 集合数量限制提升申请 | 云函数域名代理需求申请 邮件标题:云函数数量限制提升申请 | 服务空间数量限制提升申请 | 集合数量限制提升申请 | 云函数域名代理需求申请
邮件内容: 邮件内容:
...@@ -289,13 +289,13 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。 ...@@ -289,13 +289,13 @@ uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。
| 计费项 |计费项 |定价 | | 计费项 |计费项 |定价 |
| --- | --- |--- | | --- | --- |--- |
|前端网页托管 |容量 |0.005元/GB/天 | |前端网页托管 |容量 |0.005元/GB/天 |
| |流量 |0.21元/GB | |^^ |流量 |0.21元/GB |
|日志服务 |标准索引存储 |0.0115元/GB/日 | |日志服务 |标准索引存储 |0.0115元/GB/日 |
| |标准日志存储 |0.0115元/GB/日 | |^^ |标准日志存储 |0.0115元/GB/日 |
| |标准索引流量 |0.35元/GB/日 | |^^ |标准索引流量 |0.35元/GB/日 |
| |写流量 |0.18元/GB/日 | |^^ |写流量 |0.18元/GB/日 |
| |请求次数 |0.15元/百万次/日 | |^^ |请求次数 |0.15元/百万次/日 |
| |分区数量 |0.04元/个/日 | |^^ |分区数量 |0.04元/个/日 |
- 在正式进行计费方式切换之日起,用户将不可继续续费或新购旧版套餐或按量计费服务空间。用户可选择是否切换新的计费方式,超时(2022.09.08)切换的服务空间将会停服释放。 - 在正式进行计费方式切换之日起,用户将不可继续续费或新购旧版套餐或按量计费服务空间。用户可选择是否切换新的计费方式,超时(2022.09.08)切换的服务空间将会停服释放。
- 新计费下腾讯云云函数日志保存时长为7天 - 新计费下腾讯云云函数日志保存时长为7天
......
...@@ -276,7 +276,7 @@ const payload = { ...@@ -276,7 +276,7 @@ const payload = {
const signKey = 'q0etb3cl0s8mrlfdqp33ist1ou0r97pg' const signKey = 'q0etb3cl0s8mrlfdqp33ist1ou0r97pg'
``` ```
1. 过滤payload内非简单类型数据,以key升序,生成payloadStr。`payloadStr = 'a=1&b=2'` 1. 过滤payload内非简单类型数据,以key升序,生成payloadStr。`payloadStr = 'a=1&b=2'`**注意:生成payloadStr时无需对其中字符进行encode**
2. 拼接签名串,hmac方法对应的签名串为`timestamp+'\n'+payloadStr`,hash方法对应的签名串为`timestamp+'\n'+payloadStr+'\n'+signKey` 2. 拼接签名串,hmac方法对应的签名串为`timestamp+'\n'+payloadStr`,hash方法对应的签名串为`timestamp+'\n'+payloadStr+'\n'+signKey`
3. 分别调用hmac方法、hash方法获取签名结果 3. 分别调用hmac方法、hash方法获取签名结果
......
...@@ -40,7 +40,7 @@ uni-im是云端一体的、全平台的、免费的、开源即时通讯系统 ...@@ -40,7 +40,7 @@ uni-im是云端一体的、全平台的、免费的、开源即时通讯系统
优先开发哪些,取决于开发者的反馈。同时也欢迎开发者共建这个开源项目。 优先开发哪些,取决于开发者的反馈。同时也欢迎开发者共建这个开源项目。
> uni-im相关功能建议或问题,可以加入由uni-im(本插件)搭建的交流群,[点此加入](https://im.dcloud.net.cn/#/?joinGroup=63ef49711d358337456f4d67),备用QQ群(当系统处于维护中使用)群号:[854520009](https://qm.qq.com/cgi-bin/qm/qr?k=DJNSajXAYHnYcr9pouOfxF9Rwwl1AJHc&jump_from=webapi&authKey=HZ1fG58Eudp3o0GCoyx1/UPMY9Fv1sGT5jdqYqPJlTGT0XVUip3Bk8E+UyToQOMo) > uni-im相关功能建议或问题,可以加入由uni-im(本插件)搭建的交流群,[点此加入](https://im.dcloud.net.cn/#/?joinGroup=63ef49711d358337456f4d67)
## 使用uniCloud产生的费用说明@cost ## 使用uniCloud产生的费用说明@cost
......
...@@ -245,7 +245,7 @@ export default { ...@@ -245,7 +245,7 @@ export default {
</style> </style>
``` ```
#### 渲染动态POII@dynamicspoi #### 渲染动态POI@dynamicspoi
通过从数据库获取POI数据,并通过 uni-id-common 内的路线规划API,计算路线、距离、时间 通过从数据库获取POI数据,并通过 uni-id-common 内的路线规划API,计算路线、距离、时间
......
...@@ -115,9 +115,9 @@ vue 选项式开发时,冒号被用于赋值,无法通过let、const和冒 ...@@ -115,9 +115,9 @@ vue 选项式开发时,冒号被用于赋值,无法通过let、const和冒
s1 : "abc", // 根据字面量推导为string s1 : "abc", // 根据字面量推导为string
n1 : 0 as number, // 这里其实可以根据字面量自动推导,as number写不写都行 n1 : 0 as number, // 这里其实可以根据字面量自动推导,as number写不写都行
n2, // 不合法,必须指定类型 n2, // 不合法,必须指定类型
n3 as number, // 不合法,uts不支持undefined,必须初始化 n3 as number, // 不合法,uts不支持undefined,必须通过冒号初始化赋值,哪怕赋值为null,见下
n4 : null as number | null // 合法。定义为可为null的数字,初始值是null,但在使用n4前必须为其赋值数字 n4 : null as number | null // 合法。定义为可为null的数字,初始值是null,但在使用n4前必须为其赋值数字。(number | null)是一个或的写法,前后顺序没有关系。uts的联合类型只支持 |null 。
year: date.getFullYear() as number, // 在data里,目前无法通过变量类型推导data项的类型,需使用 as 显式声明 year: date.getFullYear() as number, // 在data里,目前无法通过变量类型推导data项的类型,需使用 as 显式声明类型为number
} }
} }
} }
...@@ -168,6 +168,9 @@ let a1:Array<number> = [1,2,3,4] ...@@ -168,6 +168,9 @@ let a1:Array<number> = [1,2,3,4]
目前建议开发者,除了boolean和string外,其他包括数字和数组在内的类型,尽量不使用字面量自动类型推导,而是显式声明类型。避免 uts 统一自动类型推导时引发的向下兼容问题。 目前建议开发者,除了boolean和string外,其他包括数字和数组在内的类型,尽量不使用字面量自动类型推导,而是显式声明类型。避免 uts 统一自动类型推导时引发的向下兼容问题。
### 类型判断 ### 类型判断
> 注意:isArray 需要HX 3.9.0之后版本才会支持
判断类型,有好几种方案:typeof、instanceof、isArray。 判断类型,有好几种方案:typeof、instanceof、isArray。
使用 typeof 可以判断布尔值、数字、字符串、函数。 使用 typeof 可以判断布尔值、数字、字符串、函数。
......
## 类型@data-type # 类型@data-type
强类型语言的特点,是数据类型要求严格。它带来2个好处: 强类型语言的特点,是数据类型要求严格。它带来2个好处:
1. 高性能:明确的类型有更大的优化空间,在iOS和Android等os上可以节省内存、提高运算速度;web端由于仍编译为js,不具有类型性能优化。 1. 高性能:明确的类型有更大的优化空间,在iOS和Android等OS上可以节省内存、提高运算速度;web端由于仍编译为js,不具有类型性能优化。
2. 安全的代码:强类型代码编写虽然没有弱类型自由,但类型检查、非空检查...各种检查可以提升代码的健壮性。 2. 安全的代码:强类型代码编写虽然没有弱类型自由,但类型检查、非空检查...等各种检查可以提高代码的健壮性。
如果您是js开发者,那么需要一定的学习过程来掌握 UTS 的类型系统。总体原则是你将牺牲一些代码的灵活性,来换取代码的健壮性和高性能。 如果您是js开发者,那么需要一定的学习过程来掌握 UTS 的类型系统。总体原则是你将牺牲一些代码的灵活性,来换取代码的健壮性和高性能。
...@@ -11,15 +11,15 @@ ...@@ -11,15 +11,15 @@
比如 `"abc"``"你好"`,都属于字符串string,所有string类型有相同的方法、属性,比如`.length`属性获取字符串长度。 比如 `"abc"``"你好"`,都属于字符串string,所有string类型有相同的方法、属性,比如`.length`属性获取字符串长度。
UTS 的类型有: UTS 的类型有:
- 基础类型:boolean、number、string、any、null,都是小写,typeof返回类型名称 - 基础类型:boolean、number、string、any、null,都是小写。前3个typeof返回类型名称,null的typeof是object,any的typeof是运行时值的类型。
- 对象类型:Date、Array、Map、Set、USTJSONObject,首字母大写,typeof返回"object",判断准确类型需使用 instanceof - 对象类型:Date、Array、Map、Set、UTSJSONObject,首字母大写。typeof返回"object",判断准确类型需使用 instanceof
- 使用 type 来自定义类型 - 使用 type 来自定义类型
- 特殊类型:function、class、error。 - 特殊类型:function、class、error。
- 平台专有类型:Int、Float、Double、NSString、kotlin.Array...,typeof返回"object",判断准确类型需使用 instanceof - 平台专有类型:Int、Float、Double、NSString、kotlin.Array...
<!-- TODO map -->
除了特殊类型,其他类型都可以在变量后面通过`:`加类型名称来给这个变量声明类型。 除了特殊类型,其他类型都可以在变量后面通过`:`加类型名称来给这个变量声明类型。
### 布尔值(boolean) ## 布尔值(boolean)
布尔是简单的基础类型,只有2个值:`true``false` 布尔是简单的基础类型,只有2个值:`true``false`
...@@ -30,11 +30,11 @@ let c:boolean // 定义类型但定义时未赋值 ...@@ -30,11 +30,11 @@ let c:boolean // 定义类型但定义时未赋值
c = true // 后续为变量赋值字面量 c = true // 后续为变量赋值字面量
``` ```
注意: **注意:**
- 在js里,true == 1、 false == 0。但在其他强类型语言里,`1``0`是数字类型,无法和布尔类型相比较。 - 在js里,true == 1、 false == 0。但在其他强类型语言里,`1``0`是数字类型,无法和布尔类型相比较。
- 注意 boolean 不要简写成 bool - 注意 boolean 不要简写成 bool
### 数字(number) ## 数字(number)
在 ts 中,数字不区分整型和浮点,就是一个 number。但在 kotlin 和 swift 中,数字需要是一个确定类型,比如 Int、Float、Double,没有泛数字。 在 ts 中,数字不区分整型和浮点,就是一个 number。但在 kotlin 和 swift 中,数字需要是一个确定类型,比如 Int、Float、Double,没有泛数字。
...@@ -52,7 +52,7 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本 ...@@ -52,7 +52,7 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本
- 编译到kotlin平台时,number 利用 kotlin的 `Number`抽象类实现 - 编译到kotlin平台时,number 利用 kotlin的 `Number`抽象类实现
- 编译到swift平台时,number 利用 `NSNumber` 实现 - 编译到swift平台时,number 利用 `NSNumber` 实现
#### 平台专有数字类型 ### 平台专有数字类型
除了 number 类型,UTS 在 Android 和 iOS 设备上,也可以使用 kotlin 和 swift 的专有数字类型。 除了 number 类型,UTS 在 Android 和 iOS 设备上,也可以使用 kotlin 和 swift 的专有数字类型。
...@@ -61,7 +61,12 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本 ...@@ -61,7 +61,12 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本
1. 在 kotlin 和 swift 中,调用系统API或三方SDK的入参或返回值的类型,强制约定了平台专有数字类型。比如入参要求传入 Int,那么传入 number 会报错。比如方法返回了一个 Int,使用 number 类型的变量去接收,也会报错。 1. 在 kotlin 和 swift 中,调用系统API或三方SDK的入参或返回值的类型,强制约定了平台专有数字类型。比如入参要求传入 Int,那么传入 number 会报错。比如方法返回了一个 Int,使用 number 类型的变量去接收,也会报错。
2. number 作为泛数字,性能还是弱于Int。在普通计算中无法体现出差异,但在千万次运算后,累计会产生毫秒级速度差异。 2. number 作为泛数字,性能还是弱于Int。在普通计算中无法体现出差异,但在千万次运算后,累计会产生毫秒级速度差异。
##### Kotlin 专有数字类型 @Kotlin 请注意:
number本身的使用很简单,但混入了平台专有数字类型后,会引出很多细节需要学习。
- 如果您不调用原生API,初学uts时建议跳过本节,直接往下看string类型。
- 如果您是插件作者,那请务必仔细阅读本章节。
#### Kotlin 专有数字类型 @Kotlin
|类型名称|长度 |最小值 |最大值 |描述| |类型名称|长度 |最小值 |最大值 |描述|
|:-- |:--- |:--- |:--- |:-- | |:-- |:--- |:--- |:--- |:-- |
...@@ -80,7 +85,7 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本 ...@@ -80,7 +85,7 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本
如果涉及大量运算,建议开发者不要使用 number、Int? ,要明确使用 Int等类型 [详情](https://kotlinlang.org/docs/numbers.html#numbers-representation-on-the-jvm) 如果涉及大量运算,建议开发者不要使用 number、Int? ,要明确使用 Int等类型 [详情](https://kotlinlang.org/docs/numbers.html#numbers-representation-on-the-jvm)
##### Swift 专有的数字类型 @Swift #### Swift 专有的数字类型 @Swift
|类型名称 |长度 |最小值 |最大值 |描述| |类型名称 |长度 |最小值 |最大值 |描述|
|:-- |:--- |:--- |:--- |:-- | |:-- |:--- |:--- |:--- |:-- |
...@@ -103,14 +108,14 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本 ...@@ -103,14 +108,14 @@ let d = 3.14159 //注意:目前版本推导d为float类型,新版本
|Double |64bit |2.2250738585072014E-308 |1.7976931348623157E308 |双精度浮点型| |Double |64bit |2.2250738585072014E-308 |1.7976931348623157E308 |双精度浮点型|
- 注意: **注意:**
+ Swift 中 Int 类型是根据平台动态的,在 32 位设备下等同于 Int32, 在64位设备下等同于 Int64。因此建议整型使用 Int, 除非必要,且在保证不会溢出的场景下才使用 Int32、Int64。 - Swift 中 Int 类型是根据平台动态的,在 32 位设备下等同于 Int32, 在64位设备下等同于 Int64。因此建议整型使用 Int, 除非必要,且在保证不会溢出的场景下才使用 Int32、Int64。
+ 同样,Swift 中的 UInt 类型也是根据平台动态的,在 32 位设备下等同于 UInt32, 在64位设备下等同于 UInt64。建议使用 UInt,非必要不使用 UInt32、UInt64。 - 同样,Swift 中的 UInt 类型也是根据平台动态的,在 32 位设备下等同于 UInt32, 在64位设备下等同于 UInt64。建议使用 UInt,非必要不使用 UInt32、UInt64。
+ Float16 在 iOS14.0 及以上系统上才能使用,使用时注意做系统版本号判断。 - Float16 在 iOS14.0 及以上系统上才能使用,使用时注意做系统版本号判断。[参考](../plugin/uts-uni-api.md#设备)
+ Float32 是 Float 的 typealise, 两者等价。 - Float32 是 Float 的类型别名, 两者等价。
+ Float64 是 Double 的 typealise, 两者等价。 - Float64 是 Double 的类型别名, 两者等价。
##### 专有数字类型的定义方式 #### 专有数字类型的定义方式
使用下面的方法,虽然可能会被编辑器报语法错误(后续HBuilderX会修复这类误报),但编译到 kotlin 和 swift 运行是正常的。 使用下面的方法,虽然可能会被编辑器报语法错误(后续HBuilderX会修复这类误报),但编译到 kotlin 和 swift 运行是正常的。
...@@ -134,7 +139,7 @@ let d:Int8 = 1 // Int8是swift平台专有类型 ...@@ -134,7 +139,7 @@ let d:Int8 = 1 // Int8是swift平台专有类型
这些专有类型定义后,可以使用kotlin和swift为其提供的各种方法,具体参考kotlin和swift的文档。 这些专有类型定义后,可以使用kotlin和swift为其提供的各种方法,具体参考kotlin和swift的文档。
#### 字面量类型自动推导@autotypefornumber ### 字面量类型自动推导@autotypefornumber
具体值,比如`42``"abc"`,称之为[字面量](literal.md) 具体值,比如`42``"abc"`,称之为[字面量](literal.md)
...@@ -142,7 +147,7 @@ let d:Int8 = 1 // Int8是swift平台专有类型 ...@@ -142,7 +147,7 @@ let d:Int8 = 1 // Int8是swift平台专有类型
不管是 ts 、kotlin 还是 swift,都具备字面量自动推导类型的能力,为 a 自动推导合适的类型。 不管是 ts 、kotlin 还是 swift,都具备字面量自动推导类型的能力,为 a 自动推导合适的类型。
**目前版本中,在未显式声明类型的情况下使用数字字面量赋值、传参,由平台语言自动推导为相应的类型** **在HBuilderX 3.9版之前,在未显式声明类型的情况下使用数字字面量赋值、传参,由平台语言自动推导为相应的类型**
但不同平台,推导结果不一样。 但不同平台,推导结果不一样。
...@@ -154,76 +159,127 @@ let d:Int8 = 1 // Int8是swift平台专有类型 ...@@ -154,76 +159,127 @@ let d:Int8 = 1 // Int8是swift平台专有类型
a 会被自动推导成什么类型?是Int、double、还是number?值是0还是0.1?在不同平台的差异更大。 a 会被自动推导成什么类型?是Int、double、还是number?值是0还是0.1?在不同平台的差异更大。
在web端,a 的类型是 number,值是0.1,但在 kotlin 中,类型是 Int,值是0. 在web端,a 的类型是 number,值是0.1,但在 kotlin 中,类型是 Int,值是0。
**HBuilderX 3.9起 uts 提供了2条新的字面量类型推导规则:**
- 规则1. 在定义变量时,若没有显式声明变量类型,通过数字字面量以及数字字面量组成的运算表达式来给变量赋值,此时变量类型默认推导为 number类型
举例说明:
* HBuilderX3.9前,运行到App,由kotlin和swift编译器推导
```ts
let a = 1 // 类型为Int
let b = 1/10 // 类型为Int,值为0
```
**为了统一各平台对字面量的自动推导规则,后续 uts 将接管和统一字面量类型推导。所有数字字面量、以及数字字面量组成的运算表达式,均默认推导为 number类型。** * HBuilderX3.9起,运行到App,未显式声明类型的变量,需根据数字字面量推导变量类型,此时由 uts 编译器推导,变量类型默认为 number
```ts
let a = 1 // 类型为number
let b = 1/10 // 类型为number,值为0.1
```
未来,如您需要使用平台专有数字类型,需显式声明,如: 如您已经显式声明变量类型,无需自动推导,则不受上述规则变化影响。不管HBuilderX 3.9之前还是之后,以下代码都是一样的
```ts ```ts
let c:Int = 42 //显式声明为Int let a:Int = 1 // 类型为Int
```
`let a = 1`,a从Int变成number,这是一个**无法向下兼容的更新**,请开发者注意调整。
`let b:Int = 1/10` 会在 HBuilderX 3.9+起报错,原因见下面第二条规则。
再澄清下规则1:
* 如果定义变量时已经显式声明了类型,和规则1无关
* 如果不是定义变量,和规则1无关
也就是如下代码中,`60`这个字面量的处理,和规则1无关,不会把这个`60`改为number类型
```ts
function test(score: Int): boolean { function test(score: Int): boolean {
return (score>=60) return (score>=60)
} }
test(c) test(60) // 这个60可以正常传入,无论HBuilderX 3.9之前还是之后
``` ```
当您调用系统或三方SDK的方法时,如果这些方法的入参要求Int,您之前直接通过字面量赋值`let a = 42`,就是 Int,但未来会变成 number, - 规则2. 纯数字字面量的除法,其结果会变成number
导致类型不匹配报错。所以强烈建议您现在就更改代码写法,不依赖kotlin和swift的字面量自动推导,直接显式声明类型,改为`let a:Int = 42`
在HBuilderX 3.9以前,字面量除法也由kotlin和swift自动推导,kotlin下存在一个问题,看如下代码:
```ts
function test(score: number): boolean {
return (score>=60)
}
test(1/10) // 报错,类型不匹配。需要number而传入Int
```
#### 各种数字类型之间的转换 这个问题看着有点诡异,其实是由于kotlin推导字面量时,把1/10推导成了Int,且值为0。然后把Int类型的数字传给需要number入参的函数test时,就会报类型不匹配。
##### kotlin下转换数字类型 为了解决这个问题,从HBuilderX 3.9起引入了一条字面量除法规则:**纯数字字面量的除法,结果一定是number**
所有的 number 都支持下列方法进行转换(部分类库API使用java编写,其要求的java类型与下列kotlin类型完全一致,可以直接使用 引入这个规则后,上述代码就可以正常运行了。
- toByte(): Byte 这里的`纯数字字面量的除法`,指除法表达式中除了数字和运算符,不包括任何其他东西:
- toShort(): Short - 比如变量:`let a:Int=1;let b:Int= a/1`
- toInt(): Int - 比如使用 as 断言:`(1 as Int)/10`
- toLong(): Long 以上除法表达式,都不是“纯数字字面量的除法”,都不会被推导为number。
- toFloat(): Float
- toDouble(): Double
另外 number还具备下列函数进行整型的无符号转换,这部分API 在jvm上没有对应的原始数据类型,主要的使用场景是 色值处理等专业计算场景的`多平台拉齐` 但是这条规则,也会导致一个**向下兼容问题**
- toUByte(): UByte 下面的代码在HBuilderX 3.9之前是可以正常运行的,但在3.9起会报错,因为1.0/10被转为了number类型,传入需要Double的函数时就会类型不匹配。
- toUShort(): UShort ```ts
- toUInt(): UInt function test(score: Double): boolean {
- toULong(): ULong return (score>=60.0)
}
test(1.0/10)
```
在HBuilderX 3.9后,为了正确传入Double,要注意跳过规则2。避免纯数字字面量除法,所以正确的写法是:
```ts ```ts
let a:Int = 3 function test(score: Double): boolean {
a.toFloat() // 转换为 Float 类型,后续也将支持 new Float(a) 方式转换 return (score>=60.0)
a.toDouble() // 转换为 Double 类型,后续也将支持 new Double(a) 方式转换 }
test((1.0 as Double)/10) //表达式中任意一个数字as一下,都不会走规则2
``` ```
<!-- TODO:缺少如何把专有类型转为number @杜庆泉 --> 也就是,在纯字面量除法时,原生和js冲突了。uts选择了遵守js开发者的习惯,而原生开发者使用平台专有类型时则需注意使用`as`来规避。
##### swift下转换数字类型 ### 各种数字类型之间的转换
```ts
// number转成特定类型
let num = 2
num.toInt() //将number 变量 num 转换为 Int 类型
num.toFloat() //将number 变量 num 转换为 float 类型
num.toInt64() // 将number 变量 num 转换为 Int64 类型
// 特定类型转成number 对number类型的数字,使用to方法转换为平台专有类型。
let f: Float = 5.0
let n = Number(f)
let i = Number.from(3.14)
let j = Number.from(f)
// 特定类型转成其他的特定类型 而Number.from()方法传入一个平台专有类型的数字,则可以转换为number。
let a:Int = 3
let b = new Double(a) // 将整型变量 a 转换为 Double 类型
```
#### 从平台特有类型便捷创建 Number #### kotlin
为了将 kottlin 或者 Swift 平台专有的数字类型便捷的转成Number,我们提供了 Number.from() 的静态方法。该方法适用于上一章节中所列出的所有的专有数字类型。
所有的 number 都支持下列方法进行转换(部分类库API使用java编写,其要求的java类型与下列kotlin类型完全一致,可以直接使用
* toByte(): Byte
* toShort(): Short
* toInt(): Int
* toLong(): Long
* toFloat(): Float
* toDouble(): Double
另外 number 还具备下列函数进行整型的无符号转换,这部分API 在jvm上没有对应的原始数据类型,主要的使用场景是 色值处理等专业计算场景的`多平台拉齐`
* toUByte(): UByte
* toUShort(): UShort
* toUInt(): UInt
* toULong(): ULong
```ts
let a:number = 3
a.toInt() // 转换为 Int 类型
a.toFloat() // 转换为 Float 类型,后续也将支持 new Float(a) 方式转换
a.toDouble() // 转换为 Double 类型,后续也将支持 new Double(a) 方式转换
//平台专有类型之间,也可以使用to方法转换
let i:Int = 1
i.toDouble() // 转换为 Double 类型
```
把 kotlin 专有数字类型,转换为number,使用Number.from()方法
```ts ```ts
let a: Int = 1 let a: Int = 1
let a1 = Number.from(a) let a1 = Number.from(a) // Int转number
let b: Float = 3.14 let b: Float = 3.14
let b1 = Number.from(b) let b1 = Number.from(b)
...@@ -231,27 +287,55 @@ let b1 = Number.from(b) ...@@ -231,27 +287,55 @@ let b1 = Number.from(b)
let c: Double = 3.1414926 let c: Double = 3.1414926
let c1 = Number.from(c) let c1 = Number.from(c)
// Swift 专有
let d: Int64 = 12306
let d1 = Number.from(d)
// Kottlin 专有
let e: Long = 2147483649 let e: Long = 2147483649
let e1 = Number.from(e) let e1 = Number.from(e)
```
#### swift
swift与kotlin类似。使用to方法和Number.from方法互相转换。
```ts
// number转成平台特有类型
let a:number = 3
a.toInt() // 转换为 Int 类型
a.toFloat() // 转换为 float 类型
a.toInt64() // 转换为 Int64 类型
// 平台特有类型转成number
let f: Float = 5.0
let n = Number(f)
let i = Number.from(3.14)
let j = Number.from(f)
let d: Int64 = 12306
let d1 = Number.from(d)
// 特定类型转成其他的特定类型
let a:Int = 3
let b = new Double(a) // 将整型变量 a 转换为 Double 类型
``` ```
#### number的边界说明 ### number的边界说明
- 在不同平台上,数值的范围限制不同,超出限制会导致相应的错误或异常 - 在不同平台上,数值的范围限制不同,超出限制会导致相应的错误或异常
* 编译至 JavaScript 平台时,数值范围为 ±1.7976931348623157e+308,超出范围会返回 `Infinity``-Infinity` * 编译至 JavaScript 平台时,数值范围为 ±1.7976931348623157e+308,超出范围会返回 `Infinity``-Infinity`
* 编译至 Kotlin 平台时,整型的数值范围为 -9223372036854775808 到 9223372036854775807,超出范围会报错:`The value is out of range‌`。浮点型的数值范围为 ±1.7976931348623157e+308,超出范围会返回 `Infinity``-Infinity`。平台专有数字类型范围 [详见](#Kotlin) * 编译至 Kotlin 平台时,整型的数值范围为 -9223372036854775808 到 9223372036854775807,超出范围会报错:`The value is out of range‌`。浮点型的数值范围为 ±1.7976931348623157e+308,超出范围会返回 `Infinity``-Infinity`。平台专有数字类型范围 [详见](#Kotlin)
* 编译至 Swift 平台时,整型的数值范围为 -9223372036854775808 到 9223372036854775807,浮点型的数值范围为 ±1.7976931348623157e+308,超出范围会报错:`integer literal overflows when stored into 'NSNumber'`。平台专有数字类型范围 [详见](#Swift) * 编译至 Swift 平台时,整型的数值范围为 -9223372036854775808 到 9223372036854775807,浮点型的数值范围为 ±1.7976931348623157e+308,超出范围会报错:`integer literal overflows when stored into 'NSNumber'`。平台专有数字类型范围 [详见](#Swift)
#### 更多API ### 运算和比较
number内置对象有不少API,[详见](buildin-object-api/number.md)
既然数字类型有很多,就涉及跨类型的数字之间的运算和比较的问题。
跨类型数字的运算,比如加减乘除取余,是什么样的?Int+number可以吗?详见 [算数运算符](operator.md#arithmeticdifftype)
跨类型数字的比较,大于小于等于不等于的规则是什么样的?详见 [比较运算符](operator.md#comparisondifftype)
### 更多API
### 字符串(string) @string Number内置对象还有很多API,[详见](buildin-object-api/number.md)
## 字符串(string) @string
字符串是一串表示文本值的字符序列,例如:`"hello world"` 字符串是一串表示文本值的字符序列,例如:`"hello world"`
...@@ -264,7 +348,7 @@ let s3:string ...@@ -264,7 +348,7 @@ let s3:string
s3 = "abc" s3 = "abc"
``` ```
#### 平台专有字符串类型 ### 平台专有字符串类型
- iOS 的 NSString - iOS 的 NSString
...@@ -303,9 +387,10 @@ let str5 = nstr3 as string // 类型为string ...@@ -303,9 +387,10 @@ let str5 = nstr3 as string // 类型为string
* 编译至 Swift 平台时,最大长度也受系统内存的限制,超出限制目前没有返回信息。 * 编译至 Swift 平台时,最大长度也受系统内存的限制,超出限制目前没有返回信息。
### any类型 @any ## any类型 @any
有时会遇到在编程阶段还不清楚类型的变量。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 有时会遇到在编程阶段还不清楚类型的变量。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。
这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用 `any` 类型来标记这些变量: 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用 `any` 类型来标记这些变量:
```ts ```ts
...@@ -323,8 +408,7 @@ list[1] = 100; ...@@ -323,8 +408,7 @@ list[1] = 100;
- 注意:在 TS 中可以将 null 赋值给 any 类型的变量,但是在 Swift 和 Kottlin 中,any 类型属于非空类型,也就是不能将 null 赋值给 any 类型的变量。因此 在 UTS 中 也不能将 null 赋值给 any 类型,以免编译失败。 - 注意:在 TS 中可以将 null 赋值给 any 类型的变量,但是在 Swift 和 Kottlin 中,any 类型属于非空类型,也就是不能将 null 赋值给 any 类型的变量。因此 在 UTS 中 也不能将 null 赋值给 any 类型,以免编译失败。
## null类型 @null
### null类型 @null
一个表明 null 值的特殊关键字。 一个表明 null 值的特殊关键字。
...@@ -364,8 +448,7 @@ const l = b.length // 错误:变量“b”可能为空 ...@@ -364,8 +448,7 @@ const l = b.length // 错误:变量“b”可能为空
如何正确访问可能为null的对象的属性和方法?有几种方式可以做到。 如何正确访问可能为null的对象的属性和方法?有几种方式可以做到。
### 代码中判空后再使用
#### 代码中判空后再使用
如果你的代码已经判空,则编译器不会再告警。你可以显式检测 b 是否为 null,在不为 null 的情况下调用 b 的属性和方法。 如果你的代码已经判空,则编译器不会再告警。你可以显式检测 b 是否为 null,在不为 null 的情况下调用 b 的属性和方法。
...@@ -377,7 +460,7 @@ if (b != null) { ...@@ -377,7 +460,7 @@ if (b != null) {
编译器会跟踪所执行检测的信息,并允许你在 if 内部调用 length。 编译器会跟踪所执行检测的信息,并允许你在 if 内部调用 length。
#### 不判空,使用`?.`进行安全调用 ### 不判空,使用`?.`进行安全调用
访问可空变量的属性的第二种选择是使用安全调用操作符 `?.` 访问可空变量的属性的第二种选择是使用安全调用操作符 `?.`
...@@ -398,7 +481,7 @@ bob?.department?.head?.name ...@@ -398,7 +481,7 @@ bob?.department?.head?.name
如果任意一个属性(环节)为 null,这个链式调用就会返回 null。 如果任意一个属性(环节)为 null,这个链式调用就会返回 null。
#### 空值合并 ### 空值合并
空值合并运算符(??)是一个逻辑运算符,当左侧的操作数为 null 时,返回其右侧操作数,否则返回左侧操作数。 空值合并运算符(??)是一个逻辑运算符,当左侧的操作数为 null 时,返回其右侧操作数,否则返回左侧操作数。
...@@ -412,7 +495,7 @@ console.log(baz); ...@@ -412,7 +495,7 @@ console.log(baz);
// Expected output: 0 // Expected output: 0
``` ```
#### 非空断言 ### 非空断言
非空断言运算符(!)将任何值转换为非空类型。可以写 b! ,这会返回一个非空的 b 值(例如:在我们示例中的 string)或者如果 b 为 null,就会抛出一个异常。 非空断言运算符(!)将任何值转换为非空类型。可以写 b! ,这会返回一个非空的 b 值(例如:在我们示例中的 string)或者如果 b 为 null,就会抛出一个异常。
...@@ -420,7 +503,7 @@ console.log(baz); ...@@ -420,7 +503,7 @@ console.log(baz);
const l = b!.length const l = b!.length
``` ```
<!-- <!--
#### vue data中null的用法 ### vue data中null的用法
很多时候,data的数据需要通过script获取,而 uts 不支持 undefined,初始化时就只能赋null。 很多时候,data的数据需要通过script获取,而 uts 不支持 undefined,初始化时就只能赋null。
...@@ -450,7 +533,7 @@ const l = b!.length ...@@ -450,7 +533,7 @@ const l = b!.length
</script> </script>
``` ```
--> -->
### 日期(Date)@date ## 日期(Date)@date
日期对象表示日期,包括年月日时分秒等各种日期。 日期对象表示日期,包括年月日时分秒等各种日期。
...@@ -468,7 +551,7 @@ const year:number = myDate.getFullYear() ...@@ -468,7 +551,7 @@ const year:number = myDate.getFullYear()
Date对象还有很多方法属性,[详见](buildin-object-api/date.md) Date对象还有很多方法属性,[详见](buildin-object-api/date.md)
### 数组(Array)@array ## 数组(Array)@array
Array,即数组,支持在单个变量名下存储多个元素,并具有执行常见数组操作的成员。 Array,即数组,支持在单个变量名下存储多个元素,并具有执行常见数组操作的成员。
...@@ -484,7 +567,7 @@ Array,即数组,支持在单个变量名下存储多个元素,并具有执 ...@@ -484,7 +567,7 @@ Array,即数组,支持在单个变量名下存储多个元素,并具有执
1. 某些系统API或三方原生SDK的入参或返回值强制指定了kotlin的原生数组类型。 1. 某些系统API或三方原生SDK的入参或返回值强制指定了kotlin的原生数组类型。
2. uts新增的可动态变长的Array,在性能上不如固定length、不可变长的原始kotlin.Array。但也只有在巨大量的运算中才能体现出毫秒级的差异。 2. uts新增的可动态变长的Array,在性能上不如固定length、不可变长的原始kotlin.Array。但也只有在巨大量的运算中才能体现出毫秒级的差异。
#### 定义数组 ### 定义数组
`UTS` 中 Array 有多种创建方式,这些方式是等价的: `UTS` 中 Array 有多种创建方式,这些方式是等价的:
...@@ -550,7 +633,7 @@ const a1: Array(100); // [100], 当前数组长度为1 ...@@ -550,7 +633,7 @@ const a1: Array(100); // [100], 当前数组长度为1
``` ```
#### 遍历数组对象 ### 遍历数组对象
使用foreach来实现数组的遍历 使用foreach来实现数组的遍历
...@@ -563,9 +646,9 @@ array1.forEach((element:string, index:number) => { ...@@ -563,9 +646,9 @@ array1.forEach((element:string, index:number) => {
// 打印结果是 a a b b c c // 打印结果是 a a b b c c
``` ```
#### 平台专有数组类型 ### 平台专有数组类型
##### kotlin专有数组类型 #### kotlin专有数组类型
- 专有数组类型清单 - 专有数组类型清单
* kotlin.collections.List * kotlin.collections.List
...@@ -626,62 +709,64 @@ let kotlinArray = utsArr.toTypedArray() ...@@ -626,62 +709,64 @@ let kotlinArray = utsArr.toTypedArray()
``` ```
##### iOS 平台专有数组类型 #### iOS 平台专有数组类型
>UTS 中的 Array 对应到 Swift 中就是 Array, 方法是通用的,无需转换。一般情况下,使用 Array 即可。
>
>但是,某些系统或者三方库 API 可能会要求 OC 的 NSArray、NSMutableArray 类型的数组,这个时候就需要进行转换。
UTS 中的 Array 对应到 Swift 中就是 Array, 方法是通用的,无需转换。一般情况下,使用 Array 即可。
但是,某些系统或者三方库 API 可能会要求 OC 的 NSArray、NSMutableArray 类型的数组,这个时候就需要进行转换。
- 专有数组类型清单 - 专有数组类型清单
* NSArray * NSArray
* NSMutableArray * NSMutableArray
- 专有数组类型定义方式 - 专有数组类型定义方式
1. 创建 NSArray 1. 创建 NSArray
NSArray 是 OC 中的不可变数组,顾名思义,数组创建完成之后就不可以再添加或者删除元素。因此,创建 NSArray 对象时就应该完成数组的初始化。
可以通过以下方式创建 NSArray:
```ts
// 方式一: 创建一个空数组,注意数组创建后就不可改变,不能再添加或者删除元素,应避免使用该方式。
let a: NSArray = NSArray()
// 方式二: 用一个数组创建一个 NSArray, 推荐使用。同样,创建完成后数组不可变。
let b: NSArray = NSArray(array=[1, 2, 3, 4]) // 等价于 any[],注意:不是等价于 number[]
// 方式三: 用一个元素定义 NSArray, 不推荐使用
let c: NSArray = NSArray(object=1)
// 方式四:用不定长元素定义 NSArray, 可以使用
let d: NSArray = NSArray(objects=1, "2", false, "ok")
``` > NSArray 是 OC 中的不可变数组,顾名思义,数组创建完成之后就不可以再添加或者删除元素。因此,创建 NSArray 对象时就应该完成数组的初始化。可以通过以下方式创建 NSArray:
```ts
// 方式一: 创建一个空数组,注意数组创建后就不可改变,不能再添加或者删除元素,应避免使用该方式。
let a: NSArray = NSArray()
// 方式二: 用一个数组创建一个 NSArray, 推荐使用。同样,创建完成后数组不可变。
let b: NSArray = NSArray(array=[1, 2, 3, 4]) // 等价于 any[],注意:不是等价于 number[]
// 方式三: 用一个元素定义 NSArray, 不推荐使用
let c: NSArray = NSArray(object=1)
// 方式四:用不定长元素定义 NSArray, 可以使用
let d: NSArray = NSArray(objects=1, "2", false, "ok")
```
2. 创建 NSMutableArray 2. 创建 NSMutableArray
NSMutableArray 是 OC 中的可变数组,其是 NSArray 的子类,可变数组创建后可以增加或者删除元素。NSArray 的所有创建方式也都适用于 NSMutableArray
- NSMutableArray 是 OC 中的可变数组,其是 NSArray 的子类,可变数组创建后可以增加或者删除元素。NSArray 的所有创建方式也都适用于 NSMutableArray
```ts
// 方式一: 创建一个空数组,其类型等价于 any[] ```ts
let a: NSMutableArray = NSMutableArray() // 方式一: 创建一个空数组,其类型等价于 any[]
a.add(1) //添加一个元素 let a: NSMutableArray = NSMutableArray()
a.add("22") //添加一个元素 a.add(1) //添加一个元素
a.add(false) //添加一个元素 a.add("22") //添加一个元素
a.remove(1) //移除一个元素 a.add(false) //添加一个元素
a.removeObject(at=2) //移除一个指定下标的元素 a.remove(1) //移除一个元素
a.removeAllObjects() //移除全部元素 a.removeObject(at=2) //移除一个指定下标的元素
a.removeLastObject() //移除最后一个元素 a.removeAllObjects() //移除全部元素
a.removeLastObject() //移除最后一个元素
// 方式二: 用一个数组创建一个 NSMutableArray, 推荐使用。
let b: NSMutableArray = NSMutableArray(array=[1, 2, 3, 4]) // 等价于 any[],注意:不是等价于 number[] // 方式二: 用一个数组创建一个 NSMutableArray, 推荐使用。
let b: NSMutableArray = NSMutableArray(array=[1, 2, 3, 4]) // 等价于 any[],注意:不是等价于 number[]
// 方式三: 用一个元素定义 NSMutableArray
let c: NSMutableArray = NSMutableArray(object=1) // 方式三: 用一个元素定义 NSMutableArray
let c: NSMutableArray = NSMutableArray(object=1)
// 方式四:用不定长元素定义 NSMutableArray
let d: NSMutableArray = NSMutableArray(objects=1, "2", false, "ok") // 方式四:用不定长元素定义 NSMutableArray
let d: NSMutableArray = NSMutableArray(objects=1, "2", false, "ok")
```
```
- 专有数组类型 转 Array - 专有数组类型 转 Array
```ts ```ts
...@@ -714,30 +799,30 @@ let a3: NSMutableArray = NSMutableArray(array= a) ...@@ -714,30 +799,30 @@ let a3: NSMutableArray = NSMutableArray(array= a)
``` ```
- 注意: **注意:**
+ 无论是 NSArray 还是 NSMutableArray 对象创建后都等价于 any[] 类型的数组,此时 Swift 不再有类型推导,可以往可变数组中添加任意类型的非空元素。 + 无论是 NSArray 还是 NSMutableArray 对象创建后都等价于 any[] 类型的数组,此时 Swift 不再有类型推导,可以往可变数组中添加任意类型的非空元素。
+ NSArray 和 NSMutableArray 类型的数组不接受空值 null, 任何情况下不要往这两种类型中注入 null。 否则,在运行时可能会引起应用闪退。 + NSArray 和 NSMutableArray 类型的数组不接受空值 null, 任何情况下不要往这两种类型中注入 null。 否则,在运行时可能会引起应用闪退。
+ Array 类型不能通过 as 方式转换成 NSMutableArray 类型。 但是可以通过 as 方式 转换成 NSArray 类型。 + Array 类型不能通过 as 方式转换成 NSMutableArray 类型。 但是可以通过 as 方式 转换成 NSArray 类型。
+ Swift 中的 Array 是值类型,其和 TS 中 Array 的一点区别是 可以通 == 判断两个数组是否相等,只要两个数组的类型和元素一样,判等的结果就是 true。 + Swift 中的 Array 是值类型,其和 TS 中 Array 的一点区别是 可以通 == 判断两个数组是否相等,只要两个数组的类型和元素一样,判等的结果就是 true。
#### 更多API ### 更多API
Array作为内置对象,还有更多API,[详见](buildin-object-api/array.md) Array作为内置对象,还有更多API,[详见](buildin-object-api/array.md)
### Map ## Map
Map 是一种 key value 形式的数据类型。 Map 是一种 key value 形式的数据类型。
与二维数组相比,Map的key不能重复,并且读写的方式是get()、set()。与UTSJSONObject相比,Map的性能更高,但对数据格式有要求。 与二维数组相比,Map的key不能重复,并且读写的方式是get()、set()。与UTSJSONObject相比,Map的性能更高,但对数据格式有要求。
#### 定义 ### 定义
```ts ```ts
//定义一个map1,key为string类型,value也是string类型 //定义一个map1,key为string类型,value也是string类型
const map1: Map<string,string> = new Map(); const map1: Map<string,string> = new Map();
map1.set('key1', "abc"); map1.set('key1', "abc");
console.log(map1.get('key1') //返回 abc console.log(map1.get('key1')) //返回 abc
//定义一个map1,key为number类型,value是Map类型 //定义一个map1,key为number类型,value是Map类型
const map2: Map<number,Map<string,string>> = new Map(); const map2: Map<number,Map<string,string>> = new Map();
...@@ -748,7 +833,9 @@ console.log(map2.get(1)?.get("key1")); //返回 abc。因为名为1的key不一 ...@@ -748,7 +833,9 @@ console.log(map2.get(1)?.get("key1")); //返回 abc。因为名为1的key不一
注意在HBuilderX中console.log一个Map时,返回内容格式如下: 注意在HBuilderX中console.log一个Map时,返回内容格式如下:
```sh
[Object] Map(3) {"sex":0,"name":"zhangsan","age":12} at pages/index/index.uvue:60 [Object] Map(3) {"sex":0,"name":"zhangsan","age":12} at pages/index/index.uvue:60
```
开头的[Object]代表其typeof的类型,Map代表它的实际类型,(3)是map的size,{...} 是Map的内容。 开头的[Object]代表其typeof的类型,Map代表它的实际类型,(3)是map的size,{...} 是Map的内容。
...@@ -762,36 +849,36 @@ let userA = { ...@@ -762,36 +849,36 @@ let userA = {
let userMap = userA.toMap() //UTSJSONObject有toMap方法 let userMap = userA.toMap() //UTSJSONObject有toMap方法
``` ```
#### 验证类型 ### 验证类型
```ts ```ts
console.log(typeof map1); //返回 object console.log(typeof map1); //返回 object
console.log(map1 instanceof Map); //返回 true console.log(map1 instanceof Map); //返回 true
``` ```
#### 更多API ### 更多API
Map对象还有很多API,delete、clear等,[详见](buildin-object-api/map.md) Map对象还有很多API,delete、clear等,[详见](buildin-object-api/map.md)
### USTJSONObject@ustjsonobject ## UTSJSONObject@utsjsonobject
json 在 js 中并非一个独立的类型,对一个 json 对象 typeof 返回的是 object。 json 在 js 中并非一个独立的类型,对一个 json 对象 typeof 返回的是 object。
json 在 js 中用起来很自由,但在强类型语言中,不管kotlin、swift、dart...,都没有这么灵活。 json 在 js 中用起来很自由,但在强类型语言中,不管kotlin、swift、dart...,都没有这么灵活。
1. json对象里的每个属性,都需要定义类型 1. json对象里的每个属性,都需要定义类型
2. 每个可为空的属性,都需要加`?.`,才能安全读写 2. 每个可为空的属性,都需要加`?.`,才能安全读写
一般其他强类型语言的用法,是把json数据内容,转为class、interface或type。然后就可以`.`了。 一般其他强类型语言的用法,是把json数据内容,转为class、interface或type。然后就可以使用`.`来访问了。
在 uts 中使用 JSON,有3种方式: 在 uts 中使用 JSON,有3种方式:
1. 把 json数据转 type,变成一个自定义类型。这不是本章节的内容,详见 [type](type-aliases.md) 1. 把 json数据转 type,变成一个自定义类型。这不是本章节的内容,详见 [type](#type)
2. uts 新增了 UTSJSONObject 对象,可以把 json数据通过字面量赋值 或 JSON.parse()方式,赋值给 uts 内置的 UTSJSONObject 对象。 2. uts 新增了 UTSJSONObject 对象,可以把 json数据通过字面量赋值 或 JSON.parse()方式,赋值给 uts 内置的 UTSJSONObject 对象。
3. 由于 USTJSONObject有toMap()方法,所以也可以转为Map后使用json数据。 3. 由于 UTSJSONObject有toMap()方法,所以也可以转为Map后使用json数据。
UTSJSONObject,是一个类型,可以在变量的冒号后面使用,本节的重点就是介绍UTSJSONObject。 UTSJSONObject,是一个类型,可以在变量的冒号后面使用,本节的重点就是介绍UTSJSONObject。
#### 对象和数组 ### 对象和数组
首先,我们需要区分JSON对象,和由JSON对象组成的数组。 首先,我们需要区分JSON对象,和由JSON对象组成的数组。
...@@ -833,9 +920,9 @@ let jo = [{ ...@@ -833,9 +920,9 @@ let jo = [{
}] //正确,自动推断为 UTSJSONObject 数组 }] //正确,自动推断为 UTSJSONObject 数组
``` ```
#### 定义 UTSJSONObject ### 定义 UTSJSONObject
可以通过对象字面量的方式定义一个 UTSJSONObject 对象,编译器会根据字面量自动推导类型。 可以通过对象字面量的方式定义一个 UTSJSONObject 对象,编译器会根据字面量自动推导类型,此时无需显式声明`:UTSJSONObject`
```ts ```ts
let jo = { let jo = {
...@@ -849,7 +936,14 @@ let jo2 = { ...@@ -849,7 +936,14 @@ let jo2 = {
} }
``` ```
如果属性名包括`-`,则必须两侧加引号包围。尽管在 kotlin 中属性名称包含`$``_`等也需要转义,但是 UTS 中是无需特殊处理的,编译器会自动转换。 关于属性名是否需要使用引号包围的规则:
1. 如果是对象字面量赋值,普通属性名称无需使用引号包围,但使用也没问题
2. 如果是对象字面量赋值,且属性名包括特殊符号,如:`-`,则必须两侧加引号包围。
3. 如果是JSON.parse()方法入参需要的字符串,则属性名必须使用双引号包围(web端规则也是如此)
如果开发者不想搞明白这些细节,可以简单粗暴的都给属性名都加上引号。
尽管在 kotlin 中属性名称包含`$``_`等也需要转义,但是 UTS 中是无需特殊处理的,编译器会自动转换。
对于纯字面量,jo 后面的 `:UTSJSONObject` 可以省略,这些类型比较简单,可以自动推导类型。包括下面的多层嵌套,类型也不会推导出错。 对于纯字面量,jo 后面的 `:UTSJSONObject` 可以省略,这些类型比较简单,可以自动推导类型。包括下面的多层嵌套,类型也不会推导出错。
...@@ -865,14 +959,14 @@ let rect = { ...@@ -865,14 +959,14 @@ let rect = {
console.log(rect) console.log(rect)
``` ```
也就是对于形如`{x:samething}`的对象字面量,如果赋值时不指定类型,在 uts 中会被自动推导为 UTSJSONObject。如果你需要转 type,则需显式声明。 也就是对于形如`{x:something}`的对象字面量,如果赋值时不指定类型,在 uts 中会被自动推导为 UTSJSONObject。如果你需要转 type,则需显式声明。
除了字面量定义UTSJSONObject对象,经常用到的是通过 `JSON.parse()`,把一个 JSON 字符串转成UTSJSONObject对象。 除了字面量定义UTSJSONObject对象,经常用到的是通过 `JSON.parse()`,把一个 JSON 字符串转成UTSJSONObject对象。
uts 内置了大写的 `JSON` 对象,有parse()、stringify()等方法。注意`JSON``UTSJSONObject`不是一个对象。大写 `JSON` 内置对象,web端也是存在的。而 UTSJSONObject 是 uts 新增的。 uts 内置了大写的 `JSON` 对象,有parse()、stringify()等方法。注意`JSON``UTSJSONObject`不是一个对象。大写 `JSON` 内置对象,web端也是存在的。而 UTSJSONObject 是 uts 新增的。
```ts ```ts
let s = `{"result":true, "count":42}` // 常见场景中,这个字符串更多来自于网络或其他应用传输。 let s = `{"result":true, "count":42}` // 常见场景中,这个字符串更多来自于网络或其他应用传输。注意属性名称必须使用引号包围
let jo = JSON.parse(s) // 这个代码适用于HBuilderX 3.9以前 let jo = JSON.parse(s) // 这个代码适用于HBuilderX 3.9以前
``` ```
...@@ -900,13 +994,13 @@ let jr = JSON.parseArray(s) ...@@ -900,13 +994,13 @@ let jr = JSON.parseArray(s)
全局对象JSON,除了parse()、parseObject()、parseArray()外,还有stringify()来把json转为字符串。[详见](buildin-object-api/json.md) 全局对象JSON,除了parse()、parseObject()、parseArray()外,还有stringify()来把json转为字符串。[详见](buildin-object-api/json.md)
#### 验证类型 ### 验证类型
```ts ```ts
console.log(typeof jo); //返回 object console.log(typeof jo); //返回 object
console.log(jo instanceof UTSJSONObject); //返回 true console.log(jo instanceof UTSJSONObject); //返回 true
``` ```
#### 访问 UTSJSONObject 中的属性数据 ### 访问 UTSJSONObject 中的属性数据
```ts ```ts
let rect = { let rect = {
...@@ -921,14 +1015,14 @@ let rect = { ...@@ -921,14 +1015,14 @@ let rect = {
以上述 rect 为例,访问 UTSJSONObject 中的数据,有如下3种方式: 以上述 rect 为例,访问 UTSJSONObject 中的数据,有如下3种方式:
1. `.`操作符 1. `.` 操作符
`rect.x``rect.size.width` `rect.x``rect.size.width`
这种写法比较简单,和js习惯一致,但在 UTS 中限制较多。它的使用有如下前提: 这种写法比较简单,和js习惯一致,但在 UTS 中限制较多。它的使用有如下前提:
- 仅限于web和Android,在iOS上swift不支持`.`操作符。 - 仅限于web和Android,在iOS上swift不支持`.`操作符。
- 在Android上也只支持字面量定义json(因为类型可推导)。如果是`JSON.parse()`转换的,则不能使用。 - 在Android上也只支持字面量定义json(因为类型可推导)。如果是`JSON.parse()`转换的,则不能使用。
2. [""]下标属性 2. `[""]` 下标属性
`rect["x"]` `rect["x"]`
这是一种通用的方式,不管通过字面量定义的 UTSJSONObject,还是通过 `JSON.parse()`,不管是 web、Android、iOS 哪个平台,都可以使用下标方式访问 UTSJSONObject 属性。 这是一种通用的方式,不管通过字面量定义的 UTSJSONObject,还是通过 `JSON.parse()`,不管是 web、Android、iOS 哪个平台,都可以使用下标方式访问 UTSJSONObject 属性。
...@@ -976,17 +1070,19 @@ console.log(listArr[0]["title"]); //第一组 ...@@ -976,17 +1070,19 @@ console.log(listArr[0]["title"]); //第一组
多层级下标访问时需要使用 as 转换为 UTSJSONObject 多层级下标访问时需要使用 as 转换为 UTSJSONObject
```ts ```ts
var j = {"test":{ var j = {
"a-b": 1 "test":{
}} "a-b": 1
}
}
console.log((j['test'] as UTSJSONObject)['a-b']); console.log((j['test'] as UTSJSONObject)['a-b']);
``` ```
3. 通过 keyPath 访问 UTSJSONObject 数据 1. 通过 keyPath 访问 UTSJSONObject 数据
`HBuilderX` 3.9.0 之后的版本,UTSJSONObject 提供了另外一种属性访问方式,keyPath。如果你了解 XPath、JSONPath 的话,这个概念类似。 `HBuilderX` 3.9.0 之后的版本,UTSJSONObject 提供了另外一种属性访问方式,keyPath。如果你了解 XPath、JSONPath 的话,这个概念类似。
kyepath是把`.`操作符作为一个字符串传入了UTSJSONObject的一个方法中,比如`utsObj.getString("address.detailInfo.street")` keypath是把`.`操作符作为一个字符串传入了UTSJSONObject的一个方法中,比如`utsObj.getString("address.detailInfo.street")`
相对于受限制`.`和需要经常as的下标,更推荐使用keyPath方式来操作UTSJSONObject。 相对于受限制`.`和需要经常as的下标,更推荐使用keyPath方式来操作UTSJSONObject。
...@@ -1065,12 +1161,12 @@ let street = utsObj.getString("address.detailInfo.street") ...@@ -1065,12 +1161,12 @@ let street = utsObj.getString("address.detailInfo.street")
1. UTSJSONObject.toMap() 转为Map对象 [见下](#Map) 1. UTSJSONObject.toMap() 转为Map对象 [见下](#Map)
2. 把json字符串或对象字面量通过type转为自定义类型,这是ts里经常使用的方式 [详见](type-aliases.md) 2. 把json字符串或对象字面量通过type转为自定义类型,这是ts里经常使用的方式 [详见](type-aliases.md)
#### 更多API ### 更多API
UTSJSONObject对象还有很多API,[详见](buildin-object-api/utsjsonobject.md) UTSJSONObject对象还有很多API,[详见](buildin-object-api/utsjsonobject.md)
### type自定义类型@type ## type自定义类型@type
`type`是关键字,用于给一个类型起别名,方便在其他地方使用。 `type`是关键字,用于给一个类型起别名,方便在其他地方使用。
...@@ -1085,12 +1181,14 @@ let i:tn = 0 // 等同于 let i:number = 0 ...@@ -1085,12 +1181,14 @@ let i:tn = 0 // 等同于 let i:number = 0
上述简单的例子在实际开发中没有意义。 上述简单的例子在实际开发中没有意义。
在 ts 中常见的用途是给联合类型命名,方便后续简化使用。但 uts 在app端不支持联合类型,在 uts 中用的比较多的场景是[函数类型](./function.md#%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B)定义别名,以便在共享给其他模块使用。 在 ts 中常见的用途是给联合类型命名,方便后续简化使用。但 uts 在app端不支持联合类型,在 uts 中用的比较多的场景是
1.[函数类型](./function.md#%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B)定义别名,以便在共享给其他模块使用。
2. 用于json对象的定义,在编译为kotlin和swift时,会编译为class。
uts 中,type一般用于对象的定义,在编译为kotlin和swift时,会编译为class 本章节重点讲解如何把json数据转为type
#### 把json对象转为type ### 把json对象转为type
在 uts 中,type最常见的用途是把json数据转为自定义类型。也就是为json数据提供了一个类型描述。这样json数据就可以继续使用`.`操作符了。 在 uts 中,type最常见的用途是把json数据转为自定义类型。也就是为json数据提供了一个类型描述。这样json数据就可以继续使用`.`操作符了。
...@@ -1113,11 +1211,13 @@ console.log(person.name) //返回zhangsan ...@@ -1113,11 +1211,13 @@ console.log(person.name) //返回zhangsan
可以看到,变量person,和js里使用json没有任何区别了。支持`.`操作符,无需下标,可跨平台。 可以看到,变量person,和js里使用json没有任何区别了。支持`.`操作符,无需下标,可跨平台。
所以在ts开发中,很多开发者就会把缺少类型的json数据变成一个type,继续像js里那样使用这个json数据。 与UTSJSONObject相比,虽然多了一个type定义的过程,但使用体验更流畅,也可以在ide中自由的`.`,并且得到良好的提示。
所以在ts开发中,很多开发者就会把缺少类型的json数据变成一个type或interface,继续像js里那样使用这个json数据。
在uts中,由于interface的概念在kotlin和swift有其他用途,所以uts中推荐开发者把json转成一个type,而不是interface。 但在uts中,由于interface的概念在kotlin和swift有其他用途,所以uts中推荐开发者把json转成一个type,而不是interface。
#### 把json数组转为type ### 把json数组转为type
上面的例子中,数据是json对象,下面再来定义一个json数组。 上面的例子中,数据是json对象,下面再来定义一个json数组。
...@@ -1131,14 +1231,14 @@ console.log(personList[0].name); //返回zhangsan ...@@ -1131,14 +1231,14 @@ console.log(personList[0].name); //返回zhangsan
把一个json数组 as 成自定义类型的数组,就可以像在js中那样随便使用json数据了。 把一个json数组 as 成自定义类型的数组,就可以像在js中那样随便使用json数据了。
#### null的处理 ### null的处理
但是需要注意,json数据可能不规范,有些属性缺失,此时就需要在定义type时设可为空: 但是需要注意,json数据可能不规范,有些属性缺失,此时就需要在定义type时设可为空:
```ts ```ts
type PersonType = { type PersonType = {
id : number, id : number,
name : string, name : string,
age : number | null age : number | null //属性可为null
} }
let personList = [ let personList = [
...@@ -1149,17 +1249,18 @@ let personList = [ ...@@ -1149,17 +1249,18 @@ let personList = [
console.log(personList[1].age); //null console.log(personList[1].age); //null
``` ```
#### 嵌套 ### 嵌套
json对象往往有嵌套,即子对象。比如 json对象往往有嵌套,即子对象。比如
```json ```json
{ {
id: 1, "id": 1,
name: "zhangsan", "name": "zhangsan",
age: 18 "age": 18,
address: { "address": {
city: "beijing", "city": "beijing",
street: "dazhongsi road" "street": "dazhongsi road"
} }
} }
``` ```
...@@ -1169,9 +1270,9 @@ json对象往往有嵌套,即子对象。比如 ...@@ -1169,9 +1270,9 @@ json对象往往有嵌套,即子对象。比如
```ts ```ts
type PersonType = { type PersonType = {
id: number, id: number,
name: string, name: string,
age: number, age: number,
address: { // 错误,这里的address需要单独声明类型 address: { // 错误,这里的address需要单独声明类型
city : string, city : string,
street : string street : string
} }
...@@ -1182,14 +1283,14 @@ type PersonType = { ...@@ -1182,14 +1283,14 @@ type PersonType = {
```ts ```ts
type PersonAddressType = { type PersonAddressType = {
city: string, city: string,
street: string street: string
} }
type PersonType = { type PersonType = {
id: number, id: number,
name: string, name: string,
age: number, age: number,
address: PersonAddressType // 把address定义为PersonAddress类型 address: PersonAddressType // 把address定义为PersonAddress类型
} }
``` ```
...@@ -1198,14 +1299,14 @@ type PersonType = { ...@@ -1198,14 +1299,14 @@ type PersonType = {
那么嵌套的完整写法例子: 那么嵌套的完整写法例子:
```ts ```ts
type PersonAddressType = { type PersonAddressType = {
city: string, city: string,
street: string street: string
} }
type PersonType = { type PersonType = {
id: number, id: number,
name: string, name: string,
age: number, age: number,
address: PersonAddressType // 把address定义为PersonAddress类型 address: PersonAddressType // 把address定义为PersonAddress类型
} }
let person = { let person = {
id: 1, id: 1,
...@@ -1232,20 +1333,66 @@ let person = { ...@@ -1232,20 +1333,66 @@ let person = {
} as PersonType } as PersonType
``` ```
### 通过JSON.parse转type
HBuilderX 3.9+,支持JSON.parse传入泛型,把一段字符串解析为type。
```ts
type PersonType = {
id: number,
name: string
}
let jsonString:string = `{
"id": 1,
"name": "zhangsan"
}` // 注意属性必须使用引号包围,否则parse会解析失败返回null
let person = JSON.parse<PersonType>(jsonString) //这是一种泛型的写法,在方法名后面使用<>传入PersonType类型,就可以返回传入的类型。
console.log(person?.name); // 返回zhangsan。由于person可能为null,parse可能失败,所以需要通过?.来访问属性
```
注意上述代码中,如果`let person`时,想使用冒号定义类型,需要考虑parse失败的情况,要这么写:
```ts
type PersonType = {
id: number,
name: string
}
let person:PersonType|null = JSON.parse<PersonType>(jsonString)
console.log(person?.name); // 返回zhangsan
```
或者如果你确保jsonString的值一定是合法的、parse一定可以成功,那么也可以在定义的末尾!号断言,告诉编译器肯定没有问题,那么此后就可以不使用`?.`
```ts
type PersonType = {
id: number,
name: string
}
let person:PersonType = JSON.parse<PersonType>(jsonString)!
console.log(person.name); // 返回zhangsan
```
使用!断言,是强制编译器信任开发者的写法,编译器放过后,在运行期一旦person为null,调用`person.name`就会崩溃。而使用`person?.name`则不会崩溃,只会返回null。
#### json转type工具 #### json转type工具
如果json数据属性较多、嵌套较多,那么为json数据编写type类型定义,也是一件繁琐的事情。 如果json数据属性较多、嵌套较多,那么为json数据编写type类型定义,也是一件繁琐的事情。
HBuilderX 3.9起内置了一个json转type工具,在json编辑器中右键,选择json转type,即可根据json数据内容自动推导生成type定义。 HBuilderX 3.9起内置了一个json转type工具,在`json编辑器`中选择一段内容点右键,选择`json转type`,即可根据json数据内容自动推导生成type定义。
![](../uni-app-x/static/json2type.png)
把右侧生成的type复制到代码里即可,那个IRootType的名字自己按需修改。
#### 为vue的data中的json定义类型 注意json数据的属性名称需要引号包围。
### 为vue的data中的json定义类型
uvue文件中data中的json数据也涉及类型定义。此时注意:type定义必须放在`export default {}`前面。 uvue文件中data中的json数据也涉及类型定义。此时注意:type定义必须放在`export default {}`前面。
```ts ```html
<script> <script>
type PersonType = { type PersonType = {
id: number, id: number,
name: string name: string
} }
export default { export default {
data() { data() {
...@@ -1262,21 +1409,44 @@ uvue文件中data中的json数据也涉及类型定义。此时注意:type定 ...@@ -1262,21 +1409,44 @@ uvue文件中data中的json数据也涉及类型定义。此时注意:type定
} }
</script> </script>
``` ```
<!--
大多数情况下,data里的json数据是空的,联网从服务器取到一段json字符串,然后再赋值并转type。
```html 大多数情况下,data里的json数据是空的,联网从服务器取到一段json字符串,然后再赋值并转type。下面是一段示例。
```html
<template>
<text>{{person?.name}}</text>
</template>
<script>
// 注意给data定义type,要写在export default的上面
type PersonType = {
id: number,
name: string,
age: number,
}
export default {
data() {
return {
person: null as PersonType | null, // data初始时没有值,只能设为null,然后类型就需要 | null。
}
},
onLoad() {
let jsonString:string = `{
"id": 1,
"name": "zhangsan",
"age": 18
}` // 注意属性必须使用引号包围,否则parse会解析失败返回null
// 实际开发中,需写联网代码获取字符内容。
this.person = JSON.parse<PersonType>(jsonString) //这是一种泛型的写法,在方法名后面使用<>传入PersonType类型就可以返回传入的类型
console.log(this.person?.name); // 返回zhangsan。由于person可能为null,需要通过?.来访问属性
}
}
</script>
``` ```
TODO type自定义类型的方法 ## 其他
-->
### 其他
- 关于undefined - 关于undefined
js中的 undefined类型表示变量被定义,但是未赋值或初始化。 js中的 undefined类型表示变量被定义,但是未赋值或初始化。
uts 编译为kotlin和swift时不支持 undefined。即不允许变量未赋值。每个有类型的变量都需要初始化或赋值。 uts 编译为kotlin和swift时不支持 undefined。即不允许变量未赋值。每个有类型的变量都需要初始化或赋值。
...@@ -219,7 +219,7 @@ fn = function (x: string, y: string) { } // 错误,参数类型不匹配 ...@@ -219,7 +219,7 @@ fn = function (x: string, y: string) { } // 错误,参数类型不匹配
fn = function (x: string): string { return x } // 错误,返回类型不匹配 fn = function (x: string): string { return x } // 错误,返回类型不匹配
``` ```
## 函数默认参数 ## 默认参数
函数参数可以设默认值,当省略相应的参数时使用默认值。此时该参数也就成了可选参数。 函数参数可以设默认值,当省略相应的参数时使用默认值。此时该参数也就成了可选参数。
...@@ -249,7 +249,7 @@ class Persion { ...@@ -249,7 +249,7 @@ class Persion {
```ts ```ts
// 该变量会被编译成Swift或者Kottlin的闭包表达式,其不支持使用默认参数。 // 该变量会被编译成Swift或者Kottlin的闭包表达式,其不支持使用默认参数。
const test = function(msg: string | null) const test = function(msg: string | null) { }
``` ```
因为需要作为值进行传递,对象字面量中定义的方法会自动转换为函数表达式,所以也不支持默认参数 因为需要作为值进行传递,对象字面量中定义的方法会自动转换为函数表达式,所以也不支持默认参数
...@@ -265,3 +265,28 @@ export { ...@@ -265,3 +265,28 @@ export {
} }
``` ```
## 剩余参数
剩余参数语法允许我们将一个不定数量的参数表示为一个数组。
使用 `...` 操作符定义函数的最后一个参数为剩余参数。
```ts
function fn(str: string, ...args: string[]) {
console.log(str, args)
}
```
在这种情况下可以传递可变数量的参数给函数:
```ts
fn('a') // 'a' []
fn('a', 'b', 'c') // 'a' ['b', 'c']
```
也可以使用[展开语法](./operator.md#展开语法)传递一个数组值给函数的剩余参数(转到 swift 时未支持):
```ts
fn('a', ...['b', 'c']) // 'a' ['b', 'c']
```
...@@ -160,7 +160,7 @@ const coffees = ["French Roast", "Colombian", "Kona"] ...@@ -160,7 +160,7 @@ const coffees = ["French Roast", "Colombian", "Kona"]
在JS中,对象字面值是封闭在花括号对`{}`中的一个对象的零个或多个“属性名—值”对的(元素)列表。 在JS中,对象字面值是封闭在花括号对`{}`中的一个对象的零个或多个“属性名—值”对的(元素)列表。
在uts中,对象字面量赋值给变量,默认会被推导为[UTSJSONObject](data-type.md#USTJSONObject)类型。 在uts中,对象字面量赋值给变量,默认会被推导为[UTSJSONObject](data-type.md#UTSJSONObject)类型。
```ts ```ts
// 创建对象 // 创建对象
......
## 模块 # 模块
uts 支持将程序拆分为可按需导入的单独模块,模块中可以导入和导出各种类型的变量,如函数,字符串,数字,布尔值,类等。 uts 支持将程序拆分为可按需导入的单独模块,模块中可以导入和导出各种类型的变量,如函数,字符串,数字,布尔值,类等。
### 导出 ## 导出
export 语句可以将一个文件中的函数,类等导出。比如: export 语句可以将一个文件中的函数,类等导出。比如:
...@@ -17,7 +17,7 @@ export default class Canvas {} // default 关键词支持默认导出 ...@@ -17,7 +17,7 @@ export default class Canvas {} // default 关键词支持默认导出
- 在一个文件中,export、import 可以有多个,export default 仅有一个。 - 在一个文件中,export、import 可以有多个,export default 仅有一个。
- 通过 export 方式导出,在导入时要加{ },export default 则不需要。 - 通过 export 方式导出,在导入时要加{ },export default 则不需要。
### 导入 ## 导入
import 语句可以将另一个文件中的函数,类等导入到当前文件。比如: import 语句可以将另一个文件中的函数,类等导入到当前文件。比如:
...@@ -52,7 +52,16 @@ const test = new Test() ...@@ -52,7 +52,16 @@ const test = new Test()
test.test() test.test()
``` ```
### 数据共享和复用 ### 指定别名
使用 `as` 关键字可以为导入的值指定别名
```ts
import { name as testName } from './test.uts'
import * as testModule from './test.uts'
```
## 数据共享和复用
可以使用 export 语句将变量或函数导出,以便其他模块可以访问和使用它们。导出的变量可以在模块内共享,并在其他模块中导入和复用。 可以使用 export 语句将变量或函数导出,以便其他模块可以访问和使用它们。导出的变量可以在模块内共享,并在其他模块中导入和复用。
......
## 操作符@operator # 操作符@operator
### 赋值运算符(Assignment operators)@Assignment-operators ## 赋值运算符(Assignment operators)@Assignment-operators
| 名字 | 简写的操作符 | 含义 | | 名字 | 简写的操作符 | 含义 |
| ------------------------------------------------- | ------------ | ----------- | | ------------------------------------------------- | ------------ | ----------- |
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
| 按位异或赋值(Bitwise XOR assignment) | x ^= y | x = x ^ y | | 按位异或赋值(Bitwise XOR assignment) | x ^= y | x = x ^ y |
| 按位或赋值(Bitwise OR assignment) | x \|= y | x = x \| y | | 按位或赋值(Bitwise OR assignment) | x \|= y | x = x \| y |
### 比较运算符(Comparison operators)@Comparison-operators ## 比较运算符(comparison operators)@Comparison-operators
| 运算符 | 描述 | 返回 true 的示例 | | 运算符 | 描述 | 返回 true 的示例 |
| ----------------------------------- | ------------------------------------------- | ---------------- | | ----------------------------------- | ------------------------------------------- | ---------------- |
...@@ -30,15 +30,19 @@ ...@@ -30,15 +30,19 @@
| 小于 Less than (<) | 左边的操作数小于右边的操作数返回 true | var1<var2 | | 小于 Less than (<) | 左边的操作数小于右边的操作数返回 true | var1<var2 |
| 小于等于 Less than or equal (<=) | 左边的操作数小于或等于右边的操作数返回 true | var1<=var2 | | 小于等于 Less than or equal (<=) | 左边的操作数小于或等于右边的操作数返回 true | var1<=var2 |
### 算数运算符(Arithmetic operators)@Arithmetic-operators ## 算数运算符(Arithmetic operators)@Arithmetic-operators
| 运算符 | 范例 | 描述 | | 运算符 | 范例 | 描述 |
| -------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------- | | -------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 求余(%) | | 二元运算符. 返回相除之后的余数. | | 求余(%) | | 二元运算符. 返回相除之后的余数. |
| 自增(++) | | 一元运算符. 将操作数的值加一. 如果放在操作数前面 (++x), 则返回加一后的值; 如果放在操作数后面 (x++), 则返回操作数原值,然后再将操作数加一. | | 自增(++) | | 一元运算符. 将操作数的值加一. 如果放在操作数前面 (++x), 则返回加一后的值; 如果放在操作数后面 (x++), 则返回操作数原值,然后再将操作数加一. |
| 自减(--) | | 一元运算符. 将操作数的值减一. 前后缀两种用法的返回值类似自增运算符. | | 自减(--) | | 一元运算符. 将操作数的值减一. 前后缀两种用法的返回值类似自增运算符.
| 加(+) | | 二元运算符. 将两个数相加. |
| 减(-) | | 二元运算符. 将两个数相减. |
| 乘(*) | | 二元运算符. 将两个数相乘. |
| 除(/) | | 二元运算符. 将两个数相除. |
### 位运算符(Bitwise operators)@Bitwise-operators ## 位运算符(Bitwise operators)@Bitwise-operators
| Operator | Usage | Description | | Operator | Usage | Description |
| ------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------- | | ------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
...@@ -50,7 +54,7 @@ ...@@ -50,7 +54,7 @@
| 算术右移 | a >> b | 把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位.(译注:算术右移左边空出的位是根据最高位是 0 和 1 来进行填充的) | | 算术右移 | a >> b | 把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位.(译注:算术右移左边空出的位是根据最高位是 0 和 1 来进行填充的) |
| 无符号右移(左边空出位用 0 填充) | a >>> b | 把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位,并把左边空出的位都填充为 0 | | 无符号右移(左边空出位用 0 填充) | a >>> b | 把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位,并把左边空出的位都填充为 0 |
### 逻辑运算符(Logical operators)@Logical-operators ## 逻辑运算符(Logical operators)@Logical-operators
| 运算符 | 范例 | 描述 | | 运算符 | 范例 | 描述 |
| ------------ | ---------------- | -------- | | ------------ | ---------------- | -------- |
...@@ -58,7 +62,7 @@ ...@@ -58,7 +62,7 @@
| 逻辑或(\|\|) | expr1 \|\| expr2 | (逻辑或) | | 逻辑或(\|\|) | expr1 \|\| expr2 | (逻辑或) |
| 逻辑非(!) | !expr | (逻辑非) | | 逻辑非(!) | !expr | (逻辑非) |
### 字符串运算符(String operators)@String-operators ## 字符串运算符(String operators)@String-operators
除了比较操作符,它可以在字符串值中使用,连接操作符(+)连接两个字符串值相连接,返回另一个字符串,它是两个操作数串的结合。 除了比较操作符,它可以在字符串值中使用,连接操作符(+)连接两个字符串值相连接,返回另一个字符串,它是两个操作数串的结合。
...@@ -69,7 +73,7 @@ console.log("my " + "string"); // console logs the string "my string". ...@@ -69,7 +73,7 @@ console.log("my " + "string"); // console logs the string "my string".
在iOS平台,连接操作符(+)目前仅支持字符串的连接,即+操作符前后都必须是字符串类型。 在iOS平台,连接操作符(+)目前仅支持字符串的连接,即+操作符前后都必须是字符串类型。
### 条件(三元)运算符(Conditional operator) @Conditional-operator ## 条件(三元)运算符(Conditional operator) @Conditional-operator
条件运算符是 uts 中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。语法为: 条件运算符是 uts 中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。语法为:
...@@ -79,7 +83,7 @@ console.log("my " + "string"); // console logs the string "my string". ...@@ -79,7 +83,7 @@ console.log("my " + "string"); // console logs the string "my string".
const status = age >= 18 ? "adult" : "minor"; const status = age >= 18 ? "adult" : "minor";
``` ```
### 操作符列表 ## 操作符列表
- `+` - `+`
* 相加运算符 (+) 用于对两个操作数进行相加运算。 * 相加运算符 (+) 用于对两个操作数进行相加运算。
...@@ -155,3 +159,321 @@ const status = age >= 18 ? "adult" : "minor"; ...@@ -155,3 +159,321 @@ const status = age >= 18 ? "adult" : "minor";
* 无符号右移运算符(>>>)(零填充右移)将第一个操作数向右移动指定(二进制)位数。 * 无符号右移运算符(>>>)(零填充右移)将第一个操作数向右移动指定(二进制)位数。
- `>>>=` - `>>>=`
## 算数运算符的跨数字类型注意@arithmeticdifftype
uts 中算数运算符在大部分场景下和 ts 中的行为一致,但是在有字面量或者是平台专有数字类型参与运算时,不同平台可能会有不同的表现。
算数运算符 + - * / % 行为一致,下表以 + 和 / 为例列出了各种场景下的详细差异。
- 其中 number 是指 number 类型的变量,字面量是指数字字面量,变量是指平台专有数字类型的变量
- 运算符 / 在 字面量 / 字面量场景下, 结果为 number.
| 场景 | 示例 | Kottlin 结果 | Swift 结果 |
| ----------------------------------- | ------------------------------------------- | ------------------------------ |------------------------------------------|
| number + number | number + number | 结果为 number |结果为 number |
| number + 字面量 | number + 1 | 结果为 number |结果为 number |
| ^^ | number + 3.14 | 结果为 number |结果为 number |
| number + 变量 | let a: Int = 1; number + a | 结果为 number |结果为 number |
| ^^ | let b: Double = 1;  number + b | 结果为 number |结果为 number |
| ^^ | let c: Long = 1; number + c | 结果为 number |Swift 中无 Long |
| ^^ | let d: Int64 = 1; number+ d | kottlin 中无 Int64 |结果为 number |
| 字面量 + number | 1 + number | 结果为 number |结果为 number |
| ^^ | 3.14 + number | 结果为 number |结果为 number |
| 变量 + number | let a: Int = 1; a + number | 结果为 number |编译失败,需要用 (a as number) + number |
| ^^ | let b: Double = 1; b + number | 结果为 number |编译失败,需要用 (b as number) + number |
| ^^ | let c: Long = 1;  c + number | 结果为 number |Swift 中无 Long |
| ^^ | let d: Int64 = 1; d + number | kottlin 中无 Int64 |编译失败,需要用 (d as number) + number |
| 字面量 + 字面量 | 1 + 1 | 结果为 2 Int |结果为2 Int |
| ^^ | 1 + 3.14 | 结果为4.14 Double |结果为4.14 Double |
| ^^ | 1.0 + 3.14 | 结果为4.14 Double |结果为4.14 Double |
| 字面量 / 字面量 | 1 / 10 | 无明确类型时为 0.1 number,有类型时遵守类型约定|无明确类型时为 0.1 number,有类型时遵守类型约定|
| 专有类型变量 / 字面量 | let a: Int = 2; a / 10 | 结果为 0 Int |结果为0 Int |
| ^^ | let a: Int = 2; a / 10.0 | 结果为 0.2 Double |编译失败,Int / Double 不合法 需使用 a / Int(10.0) |
| 专有类型变量 + 字面量 | let a: Int = 2; a + 10 | 结果为 12 Int |结果为12 Int |
| ^^ | let a: Int = 2; a + 3.14 | 结果为 5.14 Double |编译失败, 需要 a + Int(3.14) = 5 |
| 相同的专有类型变量相加 | let a: Int = 1; let b: Int = 2; a + b | 结果为 3 Int |结果为3 Int |
| ^^ | let a: Double = 1.0; let b: Double = 2.0; a + b | 结果为 3.0 Double |结果为 3.0 Double |
| 不同的专有类型变量相加 | let a: Int = 1; let b: Float = 3.14.toFloat(); a + b | 结果为4.14, Float |编译失败,不同类型变量不能操作 |
| ^^ | let a: Float = 1.0.toFloat(); let b: Double = 3.14; a + b| 结果为4.14,Double |编译失败,不同类型变量不能操作 |
## 比较运算符的跨数字类型注意@comparisondifftype
uts 中比较运算符在大部分场景下和 ts 中的行为一致,但是在有字面量或者是平台专有数字类型参与比较操作时,不同平台可能会有不同的表现。
### 比较运算符 > >= < <=
比较运算符 > >= < <= 行为一致下表以 > 为例列出了各种场景下的详细差异。
- 其中 number 是指 number 类型的变量,字面量是指数字字面量,变量是指平台专有数字类型的变量
| 场景 | 示例 | Kottlin 结果 | Swift 结果 |
| ----------------------------------- | ------------------------------------------- | ------------------------------ |-----------------------------------------|
| number > number | number > number | 结果为 true or false |结果为 true or false |
| number > 字面量 | number > 1 | 结果为 true or false |结果为 true or false |
| number > 变量 | let a: Int = 1; number > a | 结果为 true or false |结果为 true or false |
| 字面量 > number | 3.14 > number | 结果为 true or false |结果为 true or false |
| 变量 > number | let a: Int = 1; a > number | 结果为 true or false |结果为 true or false |
| 字面量 > 字面量 | 3.14 > 1 | 结果为 true |结果为 true |
| 专有类型变量 > 字面量 | let a: Int = 2; a > 3.14 | 结果为 false |结果为 false |
| 相同的专有类型变量比较 | let a: Int = 2; let b: Int = 1; a > b | 结果为 true |结果为 true |
| 不同的专有类型变量比较 | let a: Int = 1; let b: Float = 3.14.toFloat(); a > b | 结果为false |编译失败,不同类型变量不能比较 |
### 比较运算符 == != === !==
| 场景 | 示例 | Kottlin 结果 | Swift 结果 |
| ------------------------------------ | ------------------------------------------- | ------------------------------ |------------------------------------------|
| number == number (!= === !== 行为相同) | number == number | 值相同就true |值相同就true |
| number == 字面量 (!= === !== 行为相同) | number == 1 | 值相同就true |值相同就true |
| number == 变量 (!= === !== 行为相同) | let a: Int = 1; number == a | 值相同就true |值相同就true |
| 字面量 == number (!= === !== 行为相同) | 1 == number | 值相同就true |值相同就true |
| 变量 == number (!= === !== 行为相同) | let a: Int = 1; a == number | 值相同就true |值相同就true |
| 字面量 == 字面量 (!= 行为相同) | 1 == 1 (相同类型) | 值相同就true |值相同就true |
| | 1 == 3.14 (不同类型) | 编译失败,不支持比较 |值相同就为true |
| 字面量 === 字面量 (!== 行为相同) | 1 === 1 (相同类型) | 值相同就true |编译失败,=== 和 !== 只能用于引用类型比较 |
| | 1 === 3.14 (不同类型) | 编译失败,不支持比较 |编译失败,=== 和 !== 只能用于引用类型比较 |
| 专有类型变量 == 字面量 (!= 行为相同) | let a: Int = 2; a == 10 (相同类型) | 值相同就true |值相同就true |
| | let a: Int = 2; a == 3.14 (不同类型) | 编译失败,不支持比较 |值相同就true |
| 专有类型变量 === 字面量 (!== 行为相同) | let a: Int = 2; a === 10 (相同类型) | 值相同就true |编译失败,=== 和 !== 只能用于引用类型比较 |
| | let a: Int = 2; a === 3.14 (不同类型) | 编译失败,不支持比较 |编译失败,=== 和 !== 只能用于引用类型比较 |
| String == String (!= 行为相同) | "a" == "a" | 结果为 true |结果为 true |
| String === String (!=== 行为相同) | "a" === "a" | 结果为 true |编译失败,不能比较 |
| Array == Array (!= 行为相同) | [1] == [1] | 结果为 false |结果为 true,数组类型相同,元素相同就为true |
| Array === Array (!=== 行为相同) | [1] === [1] | 结果为 false |编译失败,不能比较 |
## 展开语法...
> HBuilderX 3.9+
展开语法可以在函数调用/数组构造时,将数组表达式在语法层面展开。展开语法使用 `...` 操作符表示。
### 构造字面量数组
没有展开语法的时候,只能组合使用 push, splice, concat 等方法,来将已有数组元素变成新数组的一部分。有了展开语法,通过字面量方式,构造新数组会变得更简单、更优雅:
```ts
const array1 = ['a', 'b']
const array2 = ['c', ...array1, 'd'] //把array1的内容组合赋值给array2
```
### 在函数调用时使用展开语法
如果想将数组元素迭代为函数[剩余参数](./function.md#剩余参数),也可以使用 `...` 操作符。
```ts
fn('a', ...['b', 'c'])
```
尤其是列表加载场景,从服务器取到一批新数组,就可以使用`...`快捷的追加到之前的data数组中。
假使uvue的data中定义了一个dataList数组,服务器返回了res,res.data是合法的数组,那么就可以把新数组快捷的追加到dataList数组中。
```ts
this.dataList.push(...res.data)
```
### 剩余参数
剩余语法 (Rest syntax) 看起来和展开语法完全相同,不同点在于,剩余参数用于解构数组和对象。
从某种意义上说,剩余语法与展开语法是相反的:展开语法将数组展开为其中的各个元素,而剩余语法则是将多个元素收集起来并“凝聚”为单个元素。请参考:[剩余参数](./function.md#剩余参数)
## 类型断言as@as
类型可能不明确、不唯一时,可以使用类型断言操作符 `as` 来为值指定类型。
常见于 any 类型的明确、字面量的明确,也可以用于可为空 `|null` 类型的明确。
```ts
const a: any = 'a'
a as string // as之后a就可以当做string直接使用了
const a: string | null = 'a'
a as string // 正常
```
当一个字面量可能成为多种类型时,可以通过as来明确具体类型。
```ts
// 数字字面量可以被指定为任何相容的数字类型
1.0 as Double
1.0 as number
// 对象字面量也可以as为USTJSONObject或某个type
{"id":1} as UTSJSONObject
type t = {
id:number
}
{"id":1} as t
```
只允许将类型as为具体或更不具体的类型,不能强制转换两个不可能兼容的类型:
```ts
const a: string = 'a'
a as any // 正确
a as string // 正确
a as number // 错误
```
USTJSONObject和type不相容,无法互相as。应该在初始的字面量或JSON.parse环节就决定好类型。
类型断言会在运行时进行,如果无法强制转换,类型断言运算符as会引发异常:
```ts
const a: string | null = 'a'
a as string // 正常
a = null
a as string null // 正常
a as string // 异常
```
当 as 操作符的左侧为[对象字面量](./literal.md#object-literal)时,编译器会进行[特殊处理](./object.md#实例化):自动创建类型对应的实例。
```ts
{ name: 'Tom', printName: function () { } } as Person
```
另外:当 `as` 用在[模块](./module.md)导入时,它和类型断言无关,其功能为[指定别名](./module.md#指定别名)
## typeof实例类型获取@typeof
使用 `typeof` 运算符获取操作数的类型,返回一个表示类型的字符串。
| 类型 | 结果 |
| ------------------------------------------------------ | ---------------- |
| null | "object" |
| boolean | "boolean" |
| number | "number" |
| string | "string" |
| function | "function" |
| 平台专有数字类型: Int, Float, Double, Long ... | "Int","Float","Double","Long" ... |
| 其他任何对象(包含但不限于:Date, Array, Map, UTSJSONObject) | "object" |
用法示例:
```ts
// number
let a = 10.0
let b: Double = 3.14
let c: Int = 2
typeof a == "number" //true
typeof b == "Double" //true
typeof c == "Int" //true
// string
let str = "hello uts"
typeof str == "string" //true
//boolean
let ret = true
typeof ret == "boolean" //true
//function
function fn(obj: string) {
if (obj instanceof String) {
// ...
}
}
typeof fn == "function" //true
typeof Math.sign == "function" //true
//object
let obj = {
"x": 1,
"y": 2
}
typeof obj == "object" // true
typeof null == "object" //true
typeof [1, 2, 3] == "object" //true
```
将 number 类型赋值给 any 类型变量时,在安卓平台上存在一些特殊,会根据数值将类型转变为实际平台专有数字类型,使用 typeof 获取此 any 类型变量将会返回实际平台专有数字类型。
```ts
// number
let a = 10.0
let b: Double = 3.14
let c: any = a
let d: any = b
typeof a == "number" //true
typeof b == "Double" //true
typeof d == "Double" //true
// 在 iOS 平台上
typeof c == "number" //true
// 在安卓平台上变量c会根据数据实际数值转换为平台专有数字类型Doubel
typeof c == "number" //false 真实返回的是 "Double"
```
## instanceof实例类型判断@instanceof
使用 `instanceof` 运算符执行运行时检查,以标识对象是否符合给定类型。
| 类型 | 结果 |
| ------------------------------------------------------------------------------------ | ---------------- |
| Boolean | 编译报错,不支持 |
| Number | 编译报错,不支持 |
| String | 编译报错,不支持 |
| 平台专有数字类型: Int, Float, Double, Long ... | true or false |
| typeof 结果为 "object" 的类型(包含但不限于:Date, Array, Map, UTSJSONObject, 自定义类型) | true or false |
对于 Boolean, Number, String 类型的实例判断,请使用 `typeof` .
```ts
function fn(obj: any) {
if (obj instanceof Date) {
// ...
}
}
```
包含泛型的类型,不能缺省泛型信息。如不需要判断具体的泛型类型,可以使用 `*` 表示任意泛型类型:
```ts
function fn(obj: any) {
if (obj instanceof Map<*, *>) {
// ...
}
}
```
已经可以明确判断类型兼容性时无需使用 `instanceof` 在运行时进行判断,编译阶段会检查出这种情况会报错或者警告:
```ts
function fn(obj: Date) {
if (obj instanceof Date) {
// ...
}
}
```
对于数字类型,`instanceof` 细化了判断逻辑,除了能判断是否是 number, 还能判断是否是 Int Float Double Int64 Long ... 等所有平台专有数字类型。
```ts
let a: Double = 3.14
let b: Int = 2
a instanceof Double //true
b instanceof Int //true
```
# type(Type Aliases) # 类型别名(Type Aliases)
使用类型别名可以为任何类型命名。类型别名不支持在局部作用域内定义。 使用类型别名可以为任何类型命名。类型别名不支持在局部作用域内定义。
......
...@@ -1134,78 +1134,78 @@ video 组件必须设置了 id 才能使用。 ...@@ -1134,78 +1134,78 @@ video 组件必须设置了 id 才能使用。
### program(全局对象) ### program(全局对象)
|方法 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |说明 | |方法 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |uni-app x |说明 |
|-- |-- |-- |-- |-- |-- |-- | |-- |-- |-- |-- |-- |-- |-- |-- |
|pageStack |√ |√ |√ |√ |√ |获取小程序页面堆栈 | |pageStack |√ |√ |√ |√ |√ |√ |获取小程序页面堆栈 |
|navigateTo |√ |√ |√ |√ |√ |保留当前页面,跳转到应用内的某个页面,同`uni.navigateTo` | |navigateTo |√ |√ |√ |√ |√ |√ |保留当前页面,跳转到应用内的某个页面,同`uni.navigateTo` |
|redirectTo |√ |√ |√ |√ |√ |关闭当前页面,跳转到应用内的某个页面,同`uni.redirectTo` | |redirectTo |√ |√ |√ |√ |√ |√ |关闭当前页面,跳转到应用内的某个页面,同`uni.redirectTo` |
|navigateBack |√ |√ |√ |√ |√ |关闭当前页面,返回上一页面,同`uni.navigateBack` | |navigateBack |√ |√ |√ |√ |√ |√ |关闭当前页面,返回上一页面,同`uni.navigateBack` |
|reLaunch |√ |√ |√ |√ |√ |关闭所有页面,打开到应用内的某个页面,同`uni.reLaunch` | |reLaunch |√ |√ |√ |√ |√ |√ |关闭所有页面,打开到应用内的某个页面,同`uni.reLaunch` |
|switchTab |√ |√ |√ |√ |√ |跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,同`uni.switchTab`| |switchTab |√ |√ |√ |√ |√ |√ |跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,同`uni.switchTab`|
|currentPage |√ |√ |√ |√ |√ |获取当前页面 | |currentPage |√ |√ |√ |√ |√ |√ |获取当前页面 |
|systemInfo |√ |√ |√ |√ |√ |获取系统信息,同`uni.getSystemInfo` | |systemInfo |√ |√ |√ |√ |√ |√ |获取系统信息,同`uni.getSystemInfo` |
|pageScrollTo |x |√ |√ |√ |√ |将页面滚动到目标位置,同`uni.pageScrollTo` | |pageScrollTo |x |√ |√ |√ |√ |√ |将页面滚动到目标位置,同`uni.pageScrollTo` |
|callUniMethod |√ |√ |√ |√ |√ |调用 uni 对象上的指定方法 | |callUniMethod |√ |√ |√ |√ |√ |√ |调用 uni 对象上的指定方法 |
|screenshot |√ |√ |√ |√ |x |对当前页面截图,目前只有开发者工具模拟器支持,客户端无法使用 | |screenshot |√ |√ |√ |√ |x |√ |对当前页面截图,目前只有开发者工具模拟器支持,客户端无法使用 |
|mockUniMethod |√ |√ |√ |√ |√ |覆盖 uni 对象上指定方法的调用结果 | |mockUniMethod |√ |√ |√ |√ |√ |x |覆盖 uni 对象上指定方法的调用结果 |
|restoreUniMethod |√ |√ |√ |√ |√ |重置 uni 指定方法,消除 mockUniMethod 调用的影响 | |restoreUniMethod |√ |√ |√ |√ |√ |x |重置 uni 指定方法,消除 mockUniMethod 调用的影响 |
|testAccounts |x |x |x |√ |x |获取多账号调试中已添加的用户列表 | |testAccounts |x |x |x |√ |x |x |获取多账号调试中已添加的用户列表 |
|evaluate |x |x |x |√ |x |注入代码片段并返回执行结果 | |evaluate |x |x |x |√ |x |x |注入代码片段并返回执行结果 |
|exposeFunction |x |x |x |√ |x |在全局暴露方法,供小程序侧调用测试脚本中的方法 | |exposeFunction |x |x |x |√ |x |x |在全局暴露方法,供小程序侧调用测试脚本中的方法 |
### Page ### Page
|属性 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |说明 | |属性 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |uni-app x |说明 |
|-- |-- |-- |-- |-- |-- |-- | |-- |-- |-- |-- |-- |-- |-- |-- |
|path |√ |√ |√ |√ |√ |页面路径 | |path |√ |√ |√ |√ |√ |√ |页面路径 |
|query|√ |√ |√ |√ |√ |页面参数 | |query|√ |√ |√ |√ |√ |√ |页面参数 |
|方法 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |说明 | |方法 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |uni-app x |说明 |
|-- |-- |-- |-- |-- |-- |-- | |-- |-- |-- |-- |-- |-- |-- |-- |
|$ |√ |√ |√ |√ |√ |获取页面元素 | |$ |√ |√ |√ |√ |√ |√ |获取页面元素 |
|$$ |√ |√ |√ |√ |√ |获取页面元素数组 | |$$ |√ |√ |√ |√ |√ |√ |获取页面元素数组 |
|waitFor |√ |√ |√ |√ |√ |等待直到指定条件成立 | |waitFor |√ |√ |√ |√ |√ |√ |等待直到指定条件成立 |
|data |√ |√ |√ |√ |√ |获取页面渲染数据 | |data |√ |√ |√ |√ |√ |√ |获取页面渲染数据 |
|setData |√ |√ |√ |√ |√ |设置页面渲染数据 | |setData |√ |√ |√ |√ |√ |√ |设置页面渲染数据 |
|size |√ |√ |√ |√ |√ |获取页面大小(width,height) | |size |√ |√ |√ |√ |√ |√ |获取页面大小(width,height) |
|scrollTop |√ |√ |√ |√ |√ |获取页面滚动位置 | |scrollTop |√ |√ |√ |√ |√ |√ |获取页面滚动位置 |
|callMethod |√ |√ |√ |√ |√ |调用页面指定方法 | |callMethod |√ |√ |√ |√ |√ |√ |调用页面指定方法,uni-app x args 仅支持一个参数 |
### Element ### Element
|属性 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |说明 | |属性 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |uni-app x |说明 |
|-- |-- |-- |-- |-- |-- |-- | |-- |-- |-- |-- |-- |-- |-- |-- |
|tagName|√ |√ |√ |√ |√ |标签名,小写 | |tagName|√ |√ |√ |√ |√ |√ |标签名,小写 |
|方法 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |说明 | |方法 |APP-NVUE |APP-VUE|H5 |微信小程序 |百度小程序 |uni-app x |说明 |
|-- |-- |-- |-- |-- |-- |-- | |-- |-- |-- |-- |-- |-- |-- |-- |
|$ |√ |√ |√ |√ |√ |在元素范围内获取元素 | |$ |√ |√ |√ |√ |√ |√ |在元素范围内获取元素 |
|$$ |√ |√ |√ |√ |√ |在元素范围内获取元素数组 | |$$ |√ |√ |√ |√ |√ |√ |在元素范围内获取元素数组 |
|size |√ |√ |√ |√ |√ |获取元素大小(width,height) | |size |√ |√ |√ |√ |√ |√ |获取元素大小(width,height) |
|offset |√ |√ |√ |√ |√ |获取元素绝对位置(left,top) | |offset |√ |√ |√ |√ |√ |√ |获取元素绝对位置(left,top) |
|text |√ |√ |√ |√ |√ |获取元素文本 | |text |√ |√ |√ |√ |√ |√ |获取元素文本 |
|attribute |√ |√ |√ |√ |√ |获取元素特性 | |attribute |√ |√ |√ |√ |√ |√ |获取元素特性 |
|style |√ |√ |√ |√ |√ |获取元素样式值 | |style |√ |√ |√ |√ |√ |√ |获取元素样式值 |
|tap |√ |√ |√ |√ |√ |点击元素 | |tap |√ |√ |√ |√ |√ |√ |点击元素 |
|value |√ |√ |√ |√ |√ |获取元素值 | |value |√ |√ |√ |√ |√ |√ |获取元素值 |
|callMethod |√ |√ |√ |√ |√ |调用组件实例指定方法,仅自定义组件可以使用 | |callMethod |√ |√ |√ |√ |√ |√ |调用组件实例指定方法,仅自定义组件可以使用,uni-app x args 仅支持一个参数|
|html |√ |√ |√ |√ |√ |获取元素 HTML | |html |√ |√ |√ |√ |√ |x |获取元素 HTML |
|outerHtml |√ |√ |√ |√ |√ |同 html,只是会获取到元素本身 | |outerHtml |√ |√ |√ |√ |√ |x |同 html,只是会获取到元素本身 |
|data |√ |√ |√ |√ |√ |获取组件实例渲染数据,仅自定义组件可以使用 | |data |√ |√ |√ |√ |√ |√ |获取组件实例渲染数据,仅自定义组件可以使用,uni-app x 暂不支持 path|
|setData |√ |√ |√ |√ |√ |设置组件实例渲染数据,仅自定义组件可以使用 | |setData |√ |√ |√ |√ |√ |√ |设置组件实例渲染数据,仅自定义组件可以使用 |
|property |√ |√ |√ |√ |x |获取元素属性 | |property |√ |√ |√ |√ |x |√ |获取元素属性 |
|touchstart |√ |√ |√ |√ |x |手指开始触摸元素 | |touchstart |√ |√ |√ |√ |x |√ |手指开始触摸元素 |
|touchmove |√ |√ |√ |√ |x |手指触摸元素后移动 | |touchmove |√ |√ |√ |√ |x |√ |手指触摸元素后移动 |
|touchend |√ |√ |√ |√ |x |手指结束触摸元素 | |touchend |√ |√ |√ |√ |x |√ |手指结束触摸元素 |
|longpress |√ |√ |√ |√ |x |长按 | |longpress |√ |√ |√ |√ |x |√ |长按 |
|trigger |√ |√ |√ |√ |x |触发元素事件 | |trigger |√ |√ |√ |√ |x |x |触发元素事件 |
|input |√ |√ |√ |√ |x |输入文本,仅 input、textarea 组件可以使用 | |input |√ |√ |√ |√ |x |√ |输入文本,仅 input、textarea 组件可以使用 |
|callContextMethod|x |x |x |√ |x |调用上下文 Context 对象方法,仅 video 组件可以使用 | |callContextMethod|x |x |x |√ |x |x |调用上下文 Context 对象方法,仅 video 组件可以使用 |
|scrollWidth |x |√ |√ |√ |x |获取滚动宽度,仅 scroll-view 组件可以使用 | |scrollWidth |x |√ |√ |√ |x |x |获取滚动宽度,仅 scroll-view 组件可以使用 |
|scrollHeight |x |√ |√ |√ |x |获取滚动高度,仅 scroll-view 组件可以使用 | |scrollHeight |x |√ |√ |√ |x |x |获取滚动高度,仅 scroll-view 组件可以使用 |
|scrollTo |x |√ |√ |√ |x |滚动到指定位置,仅 scroll-view 组件可以使用 | |scrollTo |x |√ |√ |√ |x |√ |滚动到指定位置,仅 scroll-view 组件可以使用 |
|swipeTo |√ |√ |√ |√ |x |滑动到指定滑块,仅 swiper 组件可以使用 | |swipeTo |√ |√ |√ |√ |x |x |滑动到指定滑块,仅 swiper 组件可以使用 |
|moveTo |√ |√ |√ |√ |x |移动视图容器,仅 movable-view 组件可以使用 | |moveTo |√ |√ |√ |√ |x |x |移动视图容器,仅 movable-view 组件可以使用 |
|slideTo |√ |√ |√ |√ |x |滑动到指定数值,仅 slider 组件可以使用 | |slideTo |√ |√ |√ |√ |x |x |滑动到指定数值,仅 slider 组件可以使用 |
### 测试平台判断 ### 测试平台判断
......
...@@ -6489,6 +6489,11 @@ markdown-it-emoji@^1.4.0: ...@@ -6489,6 +6489,11 @@ markdown-it-emoji@^1.4.0:
resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc" resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc"
integrity sha1-m+4OmpkKljupbfaYDE/dsF37Tcw= integrity sha1-m+4OmpkKljupbfaYDE/dsF37Tcw=
markdown-it-multimd-table@^4.2.3:
version "4.2.3"
resolved "https://registry.npmmirror.com/markdown-it-multimd-table/-/markdown-it-multimd-table-4.2.3.tgz#b81ac1f6c26482ddf0504c9e25583ad126c03dec"
integrity sha512-KepCr2OMJqm7IT6sOIbuqHGe+NERhgy66XMrc5lo6dHW7oaPzMDtYwR1EGwK16/blb6mCSg4jqityOe0o/H7HA==
markdown-it-table-of-contents@^0.4.0: markdown-it-table-of-contents@^0.4.0:
version "0.4.4" version "0.4.4"
resolved "https://registry.yarnpkg.com/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz#3dc7ce8b8fc17e5981c77cc398d1782319f37fbc" resolved "https://registry.yarnpkg.com/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz#3dc7ce8b8fc17e5981c77cc398d1782319f37fbc"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册