容器

视图(view)

view 组件是所有其他组件的父容器。详见:view

属性说明

属性名 类型 默认值 说明
hover-class String none 指定按下去的样式类。当 hover-class=”none” 时,没有点击态效果
hover-stop-propagation Boolean false 指定是否阻止本节点的祖先节点出现点击态
hover-start-time Number 50 按住后多久出现点击态,单位毫秒
hover-stay-time Number 400 手指松开后点击态保留时间,单位毫秒

注意:

  • 使用 div 组件编译时会被转换为 view

滚动视图(scroll-view)

可滚动视图区域。用于区域滚动。

属性说明

属性名 类型 默认值 说明 平台差异说明
scroll-x Boolean false 允许横向滚动
scroll-y Boolean false 允许纵向滚动
upper-threshold Number 50 距顶部/左边多远时(单位px),触发 scrolltoupper 事件
lower-threshold Number 50 距底部/右边多远时(单位px),触发 scrolltolower 事件
scroll-top Number 设置竖向滚动条位置
scroll-left Number 设置横向滚动条位置
scroll-into-view String 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
scroll-with-animation Boolean false 在设置滚动条位置时使用动画过渡
enable-back-to-top Boolean false iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向 微信小程序
show-scrollbar Boolean false 控制是否出现滚动条 App-nvue 2.1.5+
refresher-enabled Boolean false 开启自定义下拉刷新 app-vue 2.5.12+,微信小程序基础库2.10.1+
refresher-threshold number 45 设置自定义下拉刷新阈值 app-vue 2.5.12+,微信小程序基础库2.10.1+
refresher-default-style string “black” 设置自定义下拉刷新默认样式,支持设置 black,white,none,none 表示不使用默认样式 app-vue 2.5.12+,微信小程序基础库2.10.1+
refresher-background string “#FFF” 设置自定义下拉刷新区域背景颜色 app-vue 2.5.12+,微信小程序基础库2.10.1+
refresher-triggered boolean false 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发 app-vue 2.5.12+,微信小程序基础库2.10.1+
enable-flex boolean false 启用 flexbox 布局。开启后,当前节点声明了 display: flex 就会成为 flex container,并作用于其孩子节点。 微信小程序 2.7.3
scroll-anchoring boolean false 开启 scroll anchoring 特性,即控制滚动位置不随内容变化而抖动,仅在 iOS 下生效,安卓下可参考 CSS overflow-anchor 属性。 微信小程序 2.8.2
@scrolltoupper EventHandle 滚动到顶部/左边,会触发 scrolltoupper 事件
@scrolltolower EventHandle 滚动到底部/右边,会触发 scrolltolower 事件
@scroll EventHandle 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
@refresherpulling EventHandle 自定义下拉刷新控件被下拉 app-vue 2.5.12+,微信小程序基础库2.10.1+
@refresherrefresh EventHandle 自定义下拉刷新被触发 app-vue 2.5.12+,微信小程序基础库2.10.1+
@refresherrestore EventHandle 自定义下拉刷新被复位 app-vue 2.5.12+,微信小程序基础库2.10.1+
@refresherabort EventHandle 自定义下拉刷新被中止 app-vue 2.5.12+,微信小程序基础库2.10.1+

配合 scroll-view 的加载更多示例:Load_More,详见:scroll-view

滑动视图(swiper)

  1. <swiper
  2. indicator-dots="true"
  3. autoplay="true"
  4. circular="true"
  5. interval="2000"
  6. duration="1000"
  7. >
  8. <swiper-item v-for="item in ['item1', 'item2', 'item3']" :key="item">
  9. <text>{{item}}</text>
  10. </swiper-item>
  11. </swiper>

参数包括:

  • indicator-dots ** **Boolean 是否显示面板指示点,默认false
  • indicator-color Color 指示点颜色,默认rgba(0, 0, 0, .3)
  • indicator-active-color Color 当前选中的指示点颜色,默认#000000
  • autoplay Boolean 是否自动切换,默认false
  • current Number 当前所在滑块的 index,默认0
  • current-item-id String 当前所在滑块的 item-id ,不能与 current 被同时指定
  • interval Number 自动切换时间间隔,默认500
  • duration Number 滑动动画时长
  • circular Boolean 是否采用衔接滑动
  • vertical Boolean 滑动方向是否为纵向

覆盖视图

  • cover-view 为覆盖在原生组件上的文本视图。
  • cover-image 为覆盖在原生组件上的图片视图。

tip:

  • 可覆盖的原生组件有:video、map。
  • 支持的事件:click。
  • 暂不支持 cover-view、cover-image 组件之间的嵌套。
  • 微信小程序平台下,可以使用条件编译,完全按照其规范开发。

完整的例子:

  1. <template>
  2. <view class="page">
  3. <video class="video" id="demoVideo" :controls="disable" :show-fullscreen-btn="disable" :show-play-btn="disable"
  4. :show-center-play-btn="disable" :enable-progress-gesture="disable" @fullscreenchange="fullscreenchange" src="https://www.dcloud.io/uniapp/wap2appvsnative.mp4">
  5. <cover-view class="controls-title">简单的自定义 controls</cover-view>
  6. <cover-image class="controls-play img" @click="play" src="/static/imgs/play.png"></cover-image>
  7. <cover-image class="controls-pause img" @click="pause" src="/static/imgs/pause.png"></cover-image>
  8. </video>
  9. </view>
  10. </template>
  11. <script>
  12. export default {
  13. data() {
  14. return {
  15. videoCtx: null,
  16. disable: false
  17. }
  18. },
  19. mounted() {
  20. this.videoCtx = uni.createVideoContext('demoVideo')
  21. },
  22. methods: {
  23. play(event) {
  24. this.videoCtx.play();
  25. uni.showToast({
  26. title: '开始播放',
  27. icon: 'none'
  28. });
  29. },
  30. pause(event) {
  31. this.videoCtx.pause();
  32. uni.showToast({
  33. title: '暂停播放',
  34. icon: 'none'
  35. });
  36. }
  37. }
  38. }
  39. </script>
  40. <style>
  41. .page {
  42. display: flex;
  43. justify-content: center;
  44. }
  45. .video {
  46. position: relative;
  47. }
  48. cover-view,
  49. cover-image {
  50. display: inline-block;
  51. }
  52. .img {
  53. position: absolute;
  54. width: 100upx;
  55. height: 100upx;
  56. top: 50%;
  57. margin-top: -50upx;
  58. }
  59. .controls-play {
  60. left: 50upx;
  61. }
  62. .controls-pause {
  63. right: 50upx;
  64. }
  65. .controls-title {
  66. width: 100%;
  67. text-align: center;
  68. color: #FFFFFF;
  69. }
  70. </style>

003.webp

内容

文本(text)

text 组件由如下属性:

  • selectable Boolean 默认值 false,文本是否可选
  • space String 显示连续空格,可选 ensp、emsp、nbsp
  • decode Boolean 默认值 false,是否解码

注意:

  • 使用 span 组件编译时会被转换为 text
  • decode 可以解析的有   < > & '    
  • text 组件内只支持 text 嵌套
  • 支持 \n 方式换行

富文本(rich-text)

rich-text 用法如下:

  1. <rich-text :nodes="nodes" @tap="tap"></rich-text>

其中 nodes 是富文本内容,可以是 String 或 Array。详见:rich-text

进度条(progress)

progress 用法如下:

  1. <progress percent="20" stroke-width="12" activeColor="pink" backgroundColor="black" active show-info />

属性如下:

  • percent Float 百分比0~100
  • stroke-width Number 进度条线的宽度,单位px
  • activeColor Color 已选择的进度条的颜色
  • backgroundColor Color 未选择的进度条的颜色
  • active Boolean 进度条从左往右的动画
  • show-info Boolean 在进度条右侧显示百分比
  • active-mode String 默认 backwards,可选 backwards: 动画从头播;forwards:动画从上次结束点接着播

表单

按钮(button)

  1. <button @tap="setPlain">button</button>

属性包括:

  • size String 默认default,按钮的大小,可选 default、mini
  • type String 默认default,按钮的样式类型,可选 primary、default、warn
  • plain Boolean 默认false,按钮是否镂空,背景色透明
  • disabled Boolean 默认false,是否禁用
  • loading Boolean 默认false,名称前是否带 loading 图标
  • form-type String 用于
    组件,点击分别会触发 组件的 submit/reset 事件,可选 submit、reset
  • open-type String 微信开放能力,可选 share、getUserInfo
  • hover-class String 默认button-hover,指定按钮按下去的样式类。当 hover-class=”none” 时,没有点击态效果
  • hover-start-time Number 默认20,按住后多久出现点击态,单位毫秒
  • hover-stay-time Number 默认70,手指松开后点击态保留时间,单位毫秒

除了通用事件外,button 还包括以下事件

  • getuserinfo 用户点击该按钮时,会返回获取到的用户信息,从返回参数的detail中获取到的值同 uni.getUserInfoopen-type="getUserInfo"

标签(label)

用来改进表单组件的可用性,使用for属性找到对应的id,或者将控件放在该标签下,当点击时,就会触发对应的控件。

表单(form)

将组件内的用户输入的 switch、input、checkbox、slider、radio、picker 提交。

当点击 form 表单中 formType 为 submit 的 button 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。

  • submit 携带 form 中的数据触发 submit 事件,event.detail = {value : {'name': 'value'} , formId: ''}
  • reset 表单重置时会触发 reset 事件

示例:

  1. <template>
  2. <view>
  3. <form @submit="formSubmit" @reset="formReset">
  4. <view class="section section_gap">
  5. <view class="section__title">switch</view>
  6. <switch name="switch" />
  7. </view>
  8. <view class="section section_gap">
  9. <view class="section__title">slider</view>
  10. <slider name="slider" show-value></slider>
  11. </view>
  12. <view class="section">
  13. <view class="section__title">input</view>
  14. <input name="input" placeholder="please input here" />
  15. </view>
  16. <view class="section section_gap">
  17. <view class="section__title">radio</view>
  18. <radio-group name="radio-group">
  19. <label><radio value="radio1" />radio1</label>
  20. <label><radio value="radio2" />radio2</label>
  21. </radio-group>
  22. </view>
  23. <view class="section section_gap">
  24. <view class="section__title">checkbox</view>
  25. <checkbox-group name="checkbox">
  26. <label><checkbox value="checkbox1" />checkbox1</label>
  27. <label><checkbox value="checkbox2" />checkbox2</label>
  28. </checkbox-group>
  29. </view>
  30. <view class="btn-area">
  31. <button formType="submit">Submit</button>
  32. <button formType="reset">Reset</button>
  33. </view>
  34. </form>
  35. </view>
  36. </template>
  37. <script>
  38. export default {
  39. methods: {
  40. formSubmit: function (e) {
  41. console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value))
  42. },
  43. formReset: function () {
  44. console.log('form发生了reset事件')
  45. }
  46. }
  47. }
  48. </script>

复选框(checkbox)

  • checkbox-group 多项选择器,内部由多个 checkbox 组成。选中项发生改变是触发 change 事件,detail = {value:[选中的checkbox的value的数组]}
  • checkbox 多选项目。

checkbox 的属性有:

  • value String checkbox 标识,选中时触发 checkbox-group 的 change 事件,并携带 checkbox 的 value。
  • disabled Boolean 默认false,是否禁用
  • checked Boolean 默认false,当前是否选中,可用来设置默认选中
  • color Color checkbox 的颜色,同css的color
  1. <checkbox-group @change="checkboxChange">
  2. <label class="checkbox" v-for="item in items" :key="item.value">
  3. <checkbox :value="item.name" :checked="item.checked" />{{item.value}}
  4. </label>
  5. </checkbox-group>

单选框(radio)

  • radio-group 单项选择器,内部由多个 radio 组成。选中项发生改变是触发 change 事件,detail = {value:选中项radio的value}
  • radio 单选项目。

radio 的属性有:

  • value String radio 标识,选中时触发 radio-group 的 change 事件,并携带 radio 的 value。
  • disabled Boolean 默认false,是否禁用
  • checked Boolean 默认false,当前是否选中,可用来设置默认选中
  • color Color radio 的颜色,同css的color
  1. <radio-group class="radio-group" @change="radioChange">
  2. <label class="radio" v-for="item in items" :key="item">
  3. <radio :value="item.name" :checked="item.checked" />{{item.value}}
  4. </label>
  5. </radio-group>

开关(switch)

switch 的属性有:

  • checked Boolean 默认false,是否选中
  • disabled Boolean 默认false,是否禁用
  • type String switch 样式,有效值:switch, checkbox
  • color Color switch 的颜色,同 css 的 color

事件包括:

  • change EventHandle checked 改变时触发 change 事件,event.detail={ value:checked}
  1. <switch checked @change="switch1Change" />
  2. <switch @change="switch2Change" />

滑块(slider)

slider 的属性有:

  • min Number 默认0,最小值
  • max Number 默认100,最大值
  • step Number 默认1,步长,取值必须大于 0,并且可被(max - min)整除
  • disabled Boolean 默认false,是否禁用
  • value Number 默认0,当前取值
  • activeColor Color 默认#1aad19,已选择的颜色
  • backgroundColor Color 默认#e9e9e9,背景条的颜色
  • block-size Number 默认28,滑块的大小,取值范围为 12 - 28
  • block-color Color 默认#ffffff,滑块的颜色
  • show-value Boolean 默认false,是否显示当前 value

事件包括:

  • change 完成一次拖动后触发的事件,event.detail = {value: value}
  • changing 拖动过程中触发的事件,event.detail = {value: value}
  1. <slider @change="sliderChange" min="50" max="200" show-value/>

输入框(input)

input 的属性有:

  • value String 输入框的初始内容
  • type String input 的类型,text(文本输入键盘)、number(数字输入键盘)、idcard(身份证输入键盘)、digit(带小数点的数字键盘)
  • password Boolean 默认false,是否是密码类型
  • placeholder String 输入框为空时占位符
  • placeholder-style String 指定 placeholder 的样式
  • placeholder-class String 指定 placeholder 的样式类
  • disabled Boolean 默认false,是否禁用
  • maxlength Number 默认140,最大输入长度,设置为 -1 的时候不限制最大长度
  • cursor-spacing Number 默认0,指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离
  • focus Boolean 默认false,获取焦点
  • confirm-type String 默认done,设置键盘右下角按钮的文字。可选 send(发送)、search(搜索)、next(下一个)、go(前往)、done(完成)
  • confirm-hold Boolean 微信小程序 默认false,点击键盘右下角按钮时是否保持键盘不收起
  • cursor Number 微信小程序 指定focus时的光标位置
  • selection-start Number 微信小程序 默认-1,光标起始位置,自动聚集时有效,需与selection-end搭配使用
  • selection-end Number 微信小程序 默认-1,光标结束位置,自动聚集时有效,需与selection-start搭配使用
  • adjust-position Number 微信小程序 默认true,键盘弹起时,是否自动上推页面

事件包括:

  • input 当键盘输入时,触发input事件,event.detail = {value, cursor}。input 事件处理函数可以直接 return 一个字符串,将替换输入框的内容。仅微信小程序支持。
  • focus 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度。
  • blur 输入框失去焦点时触发,event.detail = {value: value}
  • confirm 点击完成按钮时触发,event.detail = {value: value}
  1. <input @input="KeyInput" placeholder="placeholder" />