# 内置组件
> 官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/
## 视图容器
### view
基础视图容器,类似 HTML 的 `
`。
```xml
内容
```
| 属性 | 类型 | 说明 |
|------|------|------|
| hover-class | string | 按下去的样式类,none 为不设置 |
| hover-stop-propagation | boolean | 阻止祖先节点出现点击态 |
| hover-start-time | number | 按住后多久出现点击态(ms),默认 50 |
| hover-stay-time | number | 松开后点击态保留时间(ms),默认 400 |
### scroll-view
可滚动视图区域。
```xml
A
B
C
```
| 属性 | 类型 | 说明 |
|------|------|------|
| scroll-x | boolean | 允许横向滚动 |
| scroll-y | boolean | 允许纵向滚动 |
| upper-threshold | number | 距顶部/左边多远时触发 scrolltoupper(px),默认 50 |
| lower-threshold | number | 距底部/右边多远时触发 scrolltolower(px),默认 50 |
| scroll-top | number | 设置竖向滚动条位置 |
| scroll-into-view | string | 滚动到某子元素(id) |
| scroll-with-animation | boolean | 滚动动画过渡 |
| enable-back-to-top | boolean | iOS 点击状态栏回到顶部 |
| refresher-enabled | boolean | 开启自定义下拉刷新(2.10.1+) |
| refresher-triggered | boolean | 设置刷新状态 |
| enhanced | boolean | 增强模式(2.12.0+,支持 scroll-into-view 动画等) |
### swiper / swiper-item
滑块视图容器(轮播图)。
```xml
```
### movable-area / movable-view
可拖拽区域。
```xml
text
```
### cover-view / cover-image
覆盖在原生组件(map、video、canvas、camera、live-player、live-pusher)之上的视图。
## 基础内容
### text
```xml
Hello World
```
- `selectable`:文本是否可选
- `space`:显示连续空格(ensp/emsp/nbsp)
- `decode`:是否解码(` ` `<` 等)
- **注意**:`
` 组件内只支持嵌套 ``
### rich-text
```xml
```
```javascript
data: {
htmlNodes: ''
// 也支持 nodes 数组格式
}
```
### icon
```xml
```
type 可选:success, success_no_circle, info, warn, waiting, cancel, download, search, clear
### progress
```xml
```
## 表单组件
### button
```xml
```
| open-type | 说明 |
|-----------|------|
| contact | 打开客服会话 |
| share | 触发转发 |
| getPhoneNumber | 获取手机号(需配合 bindgetphonenumber) |
| getUserInfo | 已废弃(2.27.1+) |
| launchApp | 打开 APP |
| openSetting | 打开授权设置页 |
| chooseAvatar | 获取用户头像(基础库 2.21.2+) |
| agreePrivacyAuthorization | 同意隐私协议(2.33.2+) |
### input
```xml
```
| type | 说明 |
|------|------|
| text | 文本 |
| number | 数字 |
| idcard | 身份证 |
| digit | 带小数点数字 |
| nickname | 昵称输入(基础库 2.21.2+) |
| safe-password | 密码安全输入 |
### textarea
```xml
```
### picker
```xml
当前选择:{{array[index]}}
{{multiArray[0][multiIndex[0]]}} - {{multiArray[1][multiIndex[1]]}}
{{time}}
{{date}}
{{region[0]}} - {{region[1]}} - {{region[2]}}
```
### form
```xml
```
```javascript
formSubmit(e) {
e.detail.value // { username: '...', agree: true, age: 50 }
}
```
### 其他表单组件
- `checkbox-group` + `checkbox`
- `radio-group` + `radio`
- `slider`
- `switch`
- `label`(绑定表单控件)
## 导航
### navigator
```xml
跳转到详情
切换到首页 Tab
返回上一页
```
## 媒体组件
### image
```xml
```
| mode | 说明 |
|------|------|
| scaleToFill | 不保持比例缩放,填满 |
| aspectFit | 保持比例,完整显示(可能留白) |
| aspectFill | 保持比例,填满(可能裁剪) |
| widthFix | 宽度不变,高度自适应 |
| heightFix | 高度不变,宽度自适应(2.10.3+) |
| top/bottom/center/left/right | 不缩放,显示对应区域 |
**注意**:image 默认宽 320px、高 240px。
### video
```xml
```
### camera
```xml
```
## 地图
### map
```xml
```
## 画布
### canvas
```xml
```
```javascript
const query = wx.createSelectorQuery()
query.select('#myCanvas')
.fields({ node: true, size: true })
.exec((res) => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
const dpr = wx.getWindowInfo().pixelRatio
canvas.width = res[0].width * dpr
canvas.height = res[0].height * dpr
ctx.scale(dpr, dpr)
ctx.fillRect(0, 0, 100, 100)
})
```
## 开放能力组件
### web-view
```xml
```
- 需要在小程序管理后台配置业务域名
- 个人类型小程序暂不支持
### open-data(已限制)
```xml
```
## 在线查询
组件文档非常详细,如需查看某个具体组件的完整属性和事件,可抓取:
- 组件总览:https://developers.weixin.qq.com/miniprogram/dev/component/
- 具体组件:`https://developers.weixin.qq.com/miniprogram/dev/component/{组件名}.html`
例如:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html