小程序的常见内置组件

544 阅读5分钟

小程序中有很多组件,例如表单组件、媒体组件、导航组件等,组件及详细属性可以参考 官方文档,下面介绍几种常用的组件。

1、Text 组件

Text 组件用于显示文本,类似于 html 中的 span 标签,是行内元素,下面是 Text 组件的属性和基本使用。官方文档

属性类型默认值必填说明最低版本
selectablebooleanfalse文本是否可选1.1.0
spacestringnbsp:根据字体设置的空格大小(默认值)ensp:中文字符空格一半大小emsp:中文字符空格大小显示连续空格1.4.0
decodebooleanfalse是否解码1.4.0
<!--text组件的基本使用-->
<text>Hello world\n</text>    <!--行内元素,不会独占一行,可以通过\n换行-->

<!--selectable属性:决定文本是否可被选中-->
<text selectable='true'>你好小程序\n</text>      <!--文本默认是不可选中的,可以设置selectable属性使可被选中-->
<text selectable='true'>你好小程序\n</text>      <!--一个属性如果设置在为true可以直接写属性,不想写属性值-->

<!--space属性:决定文本空格的大小-->
<text>Hello world\n</text>                 <!--显示:Hello world-->
<text space='nbsp'>Hello world\n</text>    <!--显示:Hello world-->    <!--nbsp是默认值-->
<text space='ensp'>Hello world\n</text>    <!--显示:Hello  world-->   <!--ensp是半个中文字符大小-->
<text space='emsp'>Hello world\n</text>    <!--显示:Hello   world-->  <!--emsp是一个中文字符大小-->

<!--decode属性:是否解码文本-->
<text>5 &gt; 3</text>           <!--显示:5 &gt; 3-->
<text decode>5 &gt; 3</text>    <!--显示:5 > 3-->

注意:(1)tip:decode可以解析的有&nbsp;&lt;&gt;&amp;&apos;&ensp;&emsp;(2)tip:各个操作系统的空格标准并不一致。(3)tip:text 组件内只支持text嵌套。(4)tip:除了文本节点以外的其他节点都无法长按选中。(5)bug:基础库版本低于 2.1.0 时,text 组件内嵌的 text style 设置可能不会生效。

2、Button 组件

Button 按钮组件的属性比较多,下面简单说几个常用的属性及其组件的基本使用,具体的属性可以参考 官方文档

属性类型默认值必填说明最低版本
sizestringdefault按钮的大小1.0.0
typestringdefault按钮的样式类型1.0.0
plainbooleanfalse按钮是否镂空,背景色透明1.0.0
disabledbooleanfalse是否禁用1.0.0
loadingbooleanfalse名称前是否带 loading图标1.0.0
hover-classstingbutton-hover指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果1.1.0
open-typestring官方文档微信开放能力,比如:open-type='getUserInfo' 获取用户信息1.1.0
form-typesting 用于 fom 组件,点击分别会触发 fom 组件的 submit/reset 事件1.1.0
<!--1.button 的基本使用-->
<button>按钮</button>    <!--默认按钮很大,而且会独占一行,是块级 block 元素-->

<!--2.size属性:mini-->
<button size='mini'>按钮</button>    <!--按钮变小,inline-block 元素,不会独占一行-->
<button size='mini'>按钮</button>    <!--按钮变小,inline-block 元素,不会独占一行-->

<!--3.type属性:primary、default、warn-->
<button size='mini'type='primary'>按钮</button>    <!--按钮显示绿色-->
<button size='mini'type='default'>按钮</button>    <!--按钮显示白色-->
<button size='mini'type='warn'>按钮</button>       <!--按钮显示红色-->

<!--4.plain:镂空效果-->
<button size='mini' plain>按钮</button>        <!--按钮显示镂空样式-->
<!--5.disable:不可用-->
<button size='mini' disabled>按钮</button>     <!--按钮变灰,不可点击-->

<!--6.loading:加载效果,值可以设置一个变量,比如当网络请求结束时让变量为true-->
<button size='mini' loading="isLoading">按钮</button>      <!--按钮前显示加载小圆圈-->

<!--7.hover-class:鼠标点击按钮显示的样式-->
<button hover-class='pressed'>按钮</button>      <!--可以到wxss中给pressed类名设置样式-->

<!--8.open-type:微信开发能力,将 open-type 改成 getUserlnfo,并且绑定 bindgetuserinfo 事件去获取用户信息-->
<button size='mini' open-type='getUserInfo' bindgetuserinfo='handleGetUserInfo'>获取授权</button>

3、View 组件

View 视图组件(块级元素独占一行,通常用作容器组件),相当于 html 中的 div,下面是 View 组件的属性和基本使用 官方文档

属性类型默认值必填说明最低版本
hover-classstringnone指定按下去的样式类。当 hover-class="none" 时,没有点击态效果1.0.0
hover-stop-propagationbooleanfalse指定是否阻止本节点的祖先节点出现点击态1.5.0
hover-start-timenumber50按住后多久出现点击态,单位毫秒1.0.0
hover-stay-timenumber400手指松开后点击态保留时间,单位毫秒1.0.0
<!--1.view的基本使用-->
<view class='box'>哈哈哈</view>         <!--可以到wxss给类名设置样式,注意view是块级元素-->
<view><text>你是一只小二哈</text></view> <!--view中还可以嵌套使用text、button等组件-->

<!--2.hover-class:当用户点击按下组件时,显示样式-->
<view class='box1' hover-class='hover-view' hover-stay-time="{{0}}">box1</view>

<!--3.hover-stop-propagation:可以阻止本节点的祖先节点出现点击态-->
<view class='box2'>
    <view class='boxl' hover-class='hover-view' hover-stop-propagation>box1</view>
</view>

4、Image 组件

Image 组件用于显示图片,下面说几个常用的属性及其组件的基本使用,具体的属性可以参考 官方文档

属性类型默认值必填说明最低版本
srcstring 图片资源地址1.0.0
modestringscaleToFill图片裁剪、缩放的模式1.0.0
webpbooleanfalse默认不解析 webP 格式,只支持网络资源2.9.0
lazy-loadbooleanfalse图片懒加载,在即将进入一定范围(上下三屏)时才开始加载1.5.0
show-menu-by-longpressbooleanfalse开启长按图片显示识别小程序码菜单2.7.0
binderroreventhandle 当错误发生时触发,event.detail = {errMsg}1.0.0
bindloadeventhandle 当图片载入完毕时触发,event.detail = {height, width}1.0.0
<!--1.image的基本使用-->
<image/>            <!--单标签-->
<image></image>     <!--双标签-->


<!--2.src:本地地址(相对路径/绝对路径)/远程地址-->
<image src='../../assets/home/picture.jpg'/>    <!--相对路径-->
<image src='/assets/home/picture.jpg'/>         <!--绝对路径:/ 代表根目录-->
<image src='https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg'/>        <!--图片远程地址-->

<!--3.显示用户在相册中选择的图片-->
<button bindtap="handleChooseAlbum"></button>    <!--wxml中的代码-->
<image src="{{imagePath}}"></image>              <!--将用户选中的图片显示出来-->
Page({                          <!--js中的代码-->
  data:{
    imagePath:''                <!--保存选中的照片的路径-->
  },
  handleChooseAlbum(){
    wx.chooseImage({            <!--系统API,让用户在相册中选择图片(或者拍照)-->
      success:(res) => (        <!--要保证下面的this可以指向data中的数据,必须使用箭头函数-->
        console.log(res);       <!--可以打印图片的路径及图片的大小等信息-->
        const path = res.tempFilePaths[0];    <!--取出图片的路径-->
        this.setData({                        <!--设置imagePath,为了保证响应式,必须使用setData()方法-->
          imagePath:path;
        })
      },
    })
  }
})

<!--4.bindload:监听图片加载完成-->
<image src="/assets/home/picture.jpg" bindload='handlemageLoad'/>    <!--可以到js中写handlemageLoad()方法-->

<!--5.lazy-load:图片的懒加载->在即将进入一定范围(上下三屏)时才开始加载-->
<image wx:for="{{10}}" src="/assets/home/picture.jpg" bindload='handlemageLoad' lazy-load/>

<!--6.show-menu-by-longpress:长按图片出现识别小序码-->
<image show-menu-by-longpress src="/assets/home/picture.jpg"/>

注意:(1)image 组件可以写成单标签,也可以修成双标签,因为它里面不需要包裹内容,单标签:( <imag/> ),双标签:(<image></image>)(2)image 组件默认有自己的大小:320×248。(3)image 组件时一个行内块级元素(inline-block)

5、Input组件

Input 组件用于接收用户的输入信息,也是开发中非常常见的,下面是 Input 组件的一些属性和基本使用 官方文档 。

属性类型默认值必填说明最低版本
valuestring 输入框的初始内容1.0.0
typestringtextinput 的类型1.0.0
passwordbooleanfalse是否是密码类型1.0.0
placeholderstring 输入框为空时占位符1.0.0
bindinputeventhandle 键盘输入时触发,event.detail = {value, cursor, keyCode},keyCode 为键值,2.1.0 起支持,处理函数可以直接 return 一个字符串,将替换输入框的内容。1.0.0
bindfocuseventhandle 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度,在基础库 1.9.90 起支持1.0.0
bindblureventhandle 输入框失去焦点时触发,event.detail = {value: value}1.0.0
bindconfirmeventhandle 点击完成按钮时触发,event.detail = {value: value}1.0.0
更多属性,请参考小程序的 Input 官方文档
<!--1.input的基本使用-->
<input/>    <!--注意:input框默认情况下是没有任何样式和边框的,需要手动wxss设置-->

<!--2.value,input中的默认值-->
<input value='你是一只小二哈'/>

<!--3.type:决定弹出键盘类型(文本输入键盘/数字/身份证)-->
<input type='number'/>

<!--4.password:暗文-->
<input password/>

<!--5.placeholder:占位文字-->
<input placeholder='请输入内容'/>

<!--6.input绑定事件-->
<input bindinput='handleInput' bindfccus='handleFocus' bindblur='handleBlur'/>
Page({             <!--js中的代码-->
  data:{
  },
  bindinput(event){
    console.log('input家取结向:',event);
  },
  handleFocus(event){
    console.log('input家取结向:',event);    <!--event中可以查看输入的信息值-->
  },
  handleBlur(event){
    console.log('input失去然点:',event);
  }
})

6、scroll-view 组件

小程序中页面的滚动是自动的,scroll-view 组件是实现局部滚动,下面是 scroll-view 组件的一些属性和基本使用 官方文档 。

属性类型默认值必填说明最低版本
scroll-xbooleanfalse允许横向滚动1.0.0
scroll-ybooleanfalse允许纵向滚动1.0.0
upper-thresholdnumber/string50距顶部/左边多远时,触发 scrolltoupper 事件1.0.0
lower-thresholdnumber/string50距底部/右边多远时,触发 scrolltolower 事件1.0.0
scroll-topnumber/string 设置竖向滚动条位置1.0.0
scroll-leftnumber/string 设置横向滚动条位置1.0.0
bindscrolltouppereventhandle 滚动到顶部/左边时触发1.0.0
bindscrolltolowereventhandle 滚动到底部/右边时触发1.0.0
<!--1.水平滚动:scroll-x-->
<scroll-view class='container1' scroll-x>  <!--设置view的inline-block之后,还要给父组件设 white-space:nowrap;-->
  <view wx:for="{{10}}" class='item1'>{{item}}</view>  <!--view是块元素,要水平显示需要设置样式为inline-block-->
</scroll-view>

<!--2.重直滚动:scroll-y-->
<scroll-view class='container2' scroll-y>    <!--设置垂直滚动需要给父组件设置固定高度height样式-->
  <view wx:for="{{10}}" class='item2'>{{item}}</view>
</scroll-view>

<!--3.其他补充-->
<scroll-view class='container2' scroll-y bindscroll="handleScroll">
  <view wx:for="{{10}}" class='item2'>{{item}}</view>
</scroll-view>
Page({             <!--js中的代码-->
  handleScroll(){
    console.log('正在滚动”,event);    <!--可以通过打印的对象.detail看滚动的距离-->
  }
})

7、组件的共同属性

所有 wxml 标签(组件)都支持的属性称之为共同属性,有如下共同属性:

属性名类型描述注解
idString组件的唯一标识整个页面唯一
classString组件的样式类在对应的 wxss 中定义的样式类
styleString组件的内联样式可以动态设置的内联样式
hiddenBoolean组件是否显示所有组件默认显示
data-*Any自定义属性组件上触发的事件时,会发送给事件处理函数
bind*/catch*EventHandler组件的事件