微信小程序> 小程序中所有组件学习

小程序中所有组件学习

浏览量:5156 时间: 来源:weixin_34199405

视图容器

view

视图容器

属性名类型默认值说明最低版本
hover-classStringnone指定按下去的样式类。当 hover-class="none" 时,没有点击态效果
hover-stop-propagationBooleanfalse指定是否阻止本节点的祖先节点出现点击态1.5.0
hover-start-timeNumber50按住后多久出现点击态,单位毫秒
hover-stay-timeNumber400手指松开后点击态保留时间,单位毫秒
<view class="section">  <view class="section__title">flex-direction: row</view>  <view class="flex-wrp" style="flex-direction:row;">    <view class="flex-item bc_green">1</view>    <view class="flex-item bc_red">2</view>    <view class="flex-item bc_blue">3</view>  </view></view><view class="section">  <view class="section__title">flex-direction: column</view>  <view class="flex-wrp" style="height: 300px;flex-direction:column;">    <view class="flex-item bc_green">1</view>    <view class="flex-item bc_red">2</view>    <view class="flex-item bc_blue">3</view>  </view></view>

tip: 如果需要使用滚动视图,请使用 scroll-view

scroll-view

可滚动视图区域

属性名类型默认值说明
scroll-xBooleanfalse允许横向滚动
scroll-yBooleanfalse允许纵向滚动
upper-thresholdNumber50距顶部/左边多远时(单位px),触发 scrolltoupper 事件
lower-thresholdNumber50距底部/右边多远时(单位px),触发 scrolltolower 事件
scroll-topNumber 设置竖向滚动条位置
scroll-leftNumber 设置横向滚动条位置
scroll-into-viewString 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
scroll-with-animationBooleanfalse在设置滚动条位置时使用动画过渡
enable-back-to-topBooleanfalseiOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向
bindscrolltoupperEventHandle 滚动到顶部/左边,会触发 scrolltoupper 事件
bindscrolltolowerEventHandle 滚动到底部/右边,会触发 scrolltolower 事件
bindscrollEventHandle 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

使用竖向滚动时,需要给<scroll-view/>一个固定高度,通过 WXSS 设置 height。

tip:

1.请勿在 scroll-view 中使用 textarea、map、canvas、video 组件

2.scroll-into-view 的优先级高于 scroll-top

3.在滚动 scroll-view 时会阻止页面回弹,所以在 scroll-view 中滚动,是无法触发 onPullDownRefresh

4.若要使用下拉刷新,请使用页面的滚动,而不是 scroll-view ,这样也能通过点击顶部状态栏回到页面顶部

swiper

滑块视图容器

属性名类型默认值说明最低版本
indicator-dotsBooleanfalse是否显示面板指示点
indicator-colorColorrgba(0, 0, 0, .3)指示点颜色1.1.0
indicator-active-colorColor#000000当前选中的指示点颜色1.1.0
autoplayBooleanfalse是否自动切换
currentNumber0当前所在滑块的 index
current-item-idString""当前所在滑块的 item-id ,不能与 current 被同时指定1.9.0
intervalNumber5000自动切换时间间隔
durationNumber500滑动动画时长
circularBooleanfalse是否采用衔接滑动
verticalBooleanfalse滑动方向是否为纵向1.1.0
previous-marginString"0px"前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值1.9.0
next-marginString"0px"后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值1.9.0
display-multiple-itemsNumber1同时显示的滑块数量1.9.0
skip-hidden-item-layoutBooleanfalse是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息1.9.0
bindchangeEventHandle current 改变时会触发 change 事件,event.detail = {current: current, source: source}
bindanimationfinishEventHandle 动画结束时会触发 animationfinish 事件,event.detail 同上1.9.0

从 1.4.0 开始,change事件返回detail中包含一个source字段,表示导致变更的原因,可能值如下:

1.autoplay 自动播放导致swiper变化;

2.touch 用户划动引起swiper变化;

3.其他原因将用空字符串表示。

注意:其中只可放置<swiper-item/>组件,否则会导致未定义的行为。

swiper-item

仅可放置在<swiper/>组件中,宽高自动设置为100%

属性名类型默认值说明最低版本
item-idString""该 swiper-item 的标识符1.9.0
<swiper indicator-dots="{{indicatorDots}}"  autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">  <block wx:for="{{imgUrls}}">    <swiper-item>      <image src="{{item}}" class="slide-image" width="355" height="150"/>    </swiper-item>  </block></swiper><button bindtap="changeIndicatorDots"> indicator-dots </button><button bindtap="changeAutoplay"> autoplay </button><slider bindchange="intervalChange" show-value min="500" max="2000"/> interval<slider bindchange="durationChange" show-value min="1000" max="10000"/> durationPage({  data: {    imgUrls: [      'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',      'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',      'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg'    ],    indicatorDots: false,    autoplay: false,    interval: 5000,    duration: 1000  },  changeIndicatorDots: function(e) {    this.setData({      indicatorDots: !this.data.indicatorDots    })  },  changeAutoplay: function(e) {    this.setData({      autoplay: !this.data.autoplay    })  },  intervalChange: function(e) {    this.setData({      interval: e.detail.value    })  },  durationChange: function(e) {    this.setData({      duration: e.detail.value    })  }})

tip: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起

movable-view

movable-area

movable-view 的可移动区域; 基础库 1.2.0 开始支持,低版本需做兼容处理

属性名类型默认值说明最低版本
scale-areaBooleanfalse当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个movable-area1.9.90

注意:movable-area 必须设置width和height属性,不设置默认为10px

movable-view

可移动的视图容器,在页面中可以拖拽滑动; 基础库 1.2.0 开始支持,低版本需做兼容处理

属性名类型默认值说明最低版本
directionStringnonemovable-view的移动方向,属性值有all、vertical、horizontal、none
inertiaBooleanfalsemovable-view是否带有惯性
out-of-boundsBooleanfalse超过可移动区域后,movable-view是否还可以移动
xNumber / String 定义x轴方向的偏移,如果x的值不在可移动范围内,会自动移动到可移动范围;改变x的值会触发动画
yNumber / String 定义y轴方向的偏移,如果y的值不在可移动范围内,会自动移动到可移动范围;改变y的值会触发动画
dampingNumber20阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快
frictionNumber2摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值
disabledBooleanfalse是否禁用1.9.90
scaleBooleanfalse是否支持双指缩放,默认缩放手势生效区域是在movable-view内1.9.90
scale-minNumber0.5定义缩放倍数最小值1.9.90
scale-maxNumber10定义缩放倍数最大值1.9.90
scale-valueNumber1定义缩放倍数,取值范围为 0.5 - 101.9.90
animationBooleantrue是否使用动画2.1.0
bindchangeEventHandle 拖动过程中触发的事件,event.detail = {x: x, y: y, source: source},其中source表示产生移动的原因,值可为touch(拖动)、touch-out-of-bounds(超出移动范围)、out-of-bounds(超出移动范围后的回弹)、friction(惯性)和空字符串(setData)1.9.90
bindscaleEventHandle 缩放过程中触发的事件,event.detail = {x: x, y: y, scale: scale},其中x和y字段在2.1.0之后开始支持返回1.9.90

除了基本事件外,movable-view提供了两个特殊事件

类型触发条件最低版本
htouchmove初次手指触摸后移动为横向的移动,如果catch此事件,则意味着touchmove事件也被catch1.9.90
vtouchmove初次手指触摸后移动为纵向的移动,如果catch此事件,则意味着touchmove事件也被catch1.9.90

movable-view 必须设置width和height属性,不设置默认为10px

movable-view 默认为绝对定位,top和left属性为0px

当movable-view小于movable-area时,movable-view的移动范围是在movable-area内;当movable-view大于movable-area时,movable-view的移动范围必须包含movable-area(x轴方向和y轴方向分开考虑)

注意:movable-view必须在<movable-area/>组件中,并且必须是直接子节点,否则不能移动

cover-view

覆盖在原生组件之上的文本视图,可覆盖的原生组件包括map、video、canvas、camera、live-player、live-pusher,只支持嵌套cover-view、cover-image,可在cover-view中使用button

属性名类型默认值说明最低版本
scroll-topNumber 设置顶部滚动偏移量,仅在设置了 overflow-y: scroll 成为滚动元素后生效2.1.0

cover-image

覆盖在原生组件之上的图片视图,可覆盖的原生组件同cover-view,支持嵌套在cover-view里。基础库 1.4.0 开始支持,低版本需做兼容处理

属性名类型默认值说明最低版本
srcString 图标路径,支持临时路径、网络地址(1.6.0起支持)、云文件ID(2.2.3起支持)。暂不支持base64格式
bindloadEventHandle 图片加载成功时触发
binderrorEventHandle 图片加载失败时触发

tip:

1.基础库 2.1.0 起支持设置 scale rotate 的css样式,包括transition动画

2.基础库 1.9.90 起 cover-view 支持 overflow: scroll,但不支持动态更新 overflow

3.基础库 1.9.90 起最外层 cover-view 支持 position: fixed

4.基础库 1.9.0 起支持插在 view 等标签下。在此之前只可嵌套在原生组件map、video、canvas、camera内,避免嵌套在其他组件内。

5.基础库 1.6.0 起支持css transition动画,transition-property只支持transform (translateX, translateY)与opacity。

6.基础库 1.6.0 起支持css opacity。

7.事件模型遵循冒泡模型,但不会冒泡到原生组件。

8.文本建议都套上cover-view标签,避免排版错误。

9.只支持基本的定位、布局、文本样式。不支持设置单边的border、background-image、shadow、overflow: visible等。

10.建议子节点不要溢出父节点

11.默认设置的样式有:white-space: nowrap; line-height: 1.2; display: block;

12.自定义组件嵌套 cover-view 时,自定义组件的 slot 及其父节点暂不支持通过 wx:if 控制显隐,否则会导致 cover-view 不显示

基本内容

icon

图标

属性名类型默认值说明
typeString icon的类型,有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear
sizeNumber23icon的大小,单位px
colorColor icon的颜色,同css的color

text

文本

属性名类型默认值说明最低版本
selectableBooleanfalse文本是否可选1.1.0
spaceStringfalse显示连续空格1.4.0
decodeBooleanfalse是否解码1.4.0

space 有效值:

说明
ensp中文字符空格一半大小
emsp中文字符空格大小
nbsp根据字体设置的空格大小

Tips

1.decode可以解析的有   < > & '    

2.各个操作系统的空格标准并不一致。

3.<text/> 组件内只支持 <text/> 嵌套。

4.除了文本节点以外的其他节点都无法长按选中

bug : 基础库版本低于 2.1.0 时, <text/> 组件内嵌的 <text/> style 设置可能不会生效

rich-text

富文本

基础库 1.4.0 开始支持,低版本需做兼容处理

属性名类型默认值说明最低版本
nodesArray / String[]节点列表 / HTML String1.4.0

支持默认事件,包括:tap、touchstart、touchmove、touchcancel、touchend和longtap

nodes 属性推荐使用 Array 类型,由于组件会将 String 类型转换为 Array 类型,因而性能会有所下降

nodes

现支持两种节点,通过type来区分,分别是元素节点和文本节点,默认是元素节点,在富文本区域里显示的HTML节点

1.元素节点:type = node

属性类型必填说明备注
nameString标签名支持部分受信任的HTML节点
attrsObject属性支持部分受信任的属性,遵循Pascal命名法
childrenArray子节点列表结构和nodes一致

2.元素节点:type = node

属性类型必填说明备注
textString文本支持entities

受信任的HTML节点及属性;全局支持class和style属性,不支持id属性

节点属性
a
abbr
b
blockquote
br
code
colspan,width
colgroupspan,width
dd
del
div
dl
dt
em
fieldset
h1
h2
h3
h4
h5
h6
hr
i
imgalt,src,height,width
ins
label
legend
li
ol
p
q
span
strong
sub
sup
tablewidth
tbody
tdcolspan,height,rowspan,width
tfoot
thcolspan,height,rowspan,width
thead
tr
ul

tip:

1.nodes 不推荐使用 String 类型,性能会有所下降。

2.rich-text 组件内屏蔽所有节点的事件。

3.attrs 属性不支持 id ,支持 class 。

4.name 属性大小写不敏感。

5.如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除。

6.img 标签仅支持网络图片。

7.如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 wxss 样式对 rich-text 中的 class 生效

progress

进度条

属性名类型默认值说明最低版本
percentFloat百分比0~100
show-infoBooleanfalse在进度条右侧显示百分比
stroke-widthNumber6进度条线的宽度,单位px
colorcolor#09BB07进度条颜色 (请使用 activeColor)
activeColorColor 已选择的进度条的颜色
backgroundColorColor 未选择的进度条的颜色
activeBooleanfalse进度条从左往右的动画
active-modeStringbackwardsbackwards: 动画从头播;forwards:动画从上次结束点接着播1.7.0

表单组件

button

按钮

属性名类型默认值说明生效时机最低版本
sizeStringdefault按钮的大小
typeStringdefault按钮的样式类型
plainBooleanfalse按钮是否镂空,背景色透明
disabledBooleanfalse是否禁用
loadingBooleanfals名称前是否带 loading 图标
form-typeString 用于  组件,点击分别会触发  组件的 submit/reset 事件 1.1.0
open-typeString 微信开放能力
hover-classStringbutton-hover指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果
hover-stop-propagationBooleanfalse指定是否阻止本节点的祖先节点出现点击态 1.5.0
hover-start-timeNumber20按住后多久出现点击态,单位毫秒
hover-stay-timeNumber70手指松开后点击态保留时间,单位毫秒
langStringen指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文open-type="getUserInfo"1.3.0
bindgetuserinfoHandler 用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致open-type="getUserInfo"1.3.0
session-fromString 会话来源open-type="contact"1.4.0
send-message-titleString当前标题会话内消息卡片标题open-type="contact"1.5.0
send-message-pathString当前分享路径会话内消息卡片点击跳转小程序路径open-type="contact"1.5.0
send-message-imgString截图会话内消息卡片图片open-type="contact"1.5.0
show-message-cardBooleanfalse显示会话内消息卡片open-type="contact"1.5.0
bindcontactHandler 客服消息回调open-type="contact"1.5.0
bindgetphonenumberHandler 获取用户手机号回调open-type="getPhoneNumber"1.2.0
app-parameterString 打开 APP 时,向 APP 传递的参数open-type="launchApp"1.9.5
binderrorHandler 当使用开放能力时,发生错误的回调open-type="launchApp"1.9.5
bindopensettingHandler 在打开授权设置页后回调open-type="openSetting"2.0.7

注:

1.button-hover 默认为{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}

2.bindgetphonenumber 从1.2.0 开始支持,但是在1.5.3以下版本中无法使用wx.canIUse进行检测,建议使用基础库版本进行判断。

3.在bindgetphonenumber 等返回加密信息的回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

4.从 2.1.0 起,button 可作为原生组件的子节点嵌入,以便在原生组件上使用 open-type 的能力

size 有效值

说明
default默认大小
mini小尺寸

type 有效值

说明
primary绿色
default白色
warn红色

form-type 有效值

说明
submit提交表单
reset重置表单

open-type 有效值

说明最低版本
contact打开客服会话1.1.0
share触发用户转发1.2.0
getUserInfo获取用户信息,可以从bindgetuserinfo回调中获取到用户信息1.3.0
getPhoneNumber获取用户手机号,可以从bindgetphonenumber回调中获取到用户信息1.2.0
launchApp打开APP,可以通过app-parameter属性设定向APP传的参数1.9.5
openSetting打开授权设置页2.0.7
feedback打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容2.1.0
/** wxss **//** 修改button默认的点击态样式类**/.button-hover {  background-color: red;}/** 添加自定义button点击态样式类**/.other-button-hover {  background-color: blue;}<button type="default" size="{{defaultSize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="default" hover-class="other-button-hover"> default </button><button type="primary" size="{{primarySize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="primary"> primary </button><button type="warn" size="{{warnSize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="warn"> warn </button><button bindtap="setDisabled">点击设置以上按钮disabled属性</button><button bindtap="setPlain">点击设置以上按钮plain属性</button><button bindtap="setLoading">点击设置以上按钮loading属性</button><button open-type="contact">进入客服会话</button><button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">获取用户信息</button><button open-type="openSetting">打开授权设置页</button>var types = ['default', 'primary', 'warn']var pageObject = {  data: {    defaultSize: 'default',    primarySize: 'default',    warnSize: 'default',    disabled: false,    plain: false,    loading: false  },  setDisabled: function(e) {    this.setData({      disabled: !this.data.disabled    })  },  setPlain: function(e) {    this.setData({      plain: !this.data.plain    })  },  setLoading: function(e) {    this.setData({      loading: !this.data.loading    })  },  onGotUserInfo: function(e) {    console.log(e.detail.errMsg)    console.log(e.detail.userInfo)    console.log(e.detail.rawData)  },}for (var i = 0; i < types.length; ++i) {  (function(type) {    pageObject[type] = function(e) {      var key = type + 'Size'      var changedData = {}      changedData[key] =        this.data[key] === 'default' ? 'mini' : 'default'      this.setData(changedData)    }  })(types[i])}Page(pageObject)

checkbox

checkbox-group

多项选择器,内部由多个checkbox组成

属性名类型默认值说明
bindchangeEventHandle 中选中项发生改变是触发 change 事件,detail = {value:[选中的checkbox的value的数组]}

checkbox

多选项目

属性名类型默认值说明
valueString 标识,选中时触发的 change 事件,并携带  的 value

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎