Button 按钮

该组件内部实现以uni-appbutton组件为基础,进行二次封装,主要区别在于:

  • 按钮type值有更多的主题颜色
  • 有可选的按钮点击水波纹效果
  • 按钮size值有更多的尺寸可选

注意

此组件内部使用uni-appbutton组件为基础,除了开头中所说的增加的功能,另外暴露出来的props属性和官方组件的属性完全一致, uni-appbutton组件比较特殊,因为它有一些其他小程序平台的特定能力,请参考文档后面的参数列表,更详细说明请参uni-app方文档:
uni-app方button组件Button 按钮 - 图1

平台差异说明

AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序

基本使用

文字内容通过slot传入

  1. <u-button>月落</u-button>

设置按钮的主题

type值可选的有default(默认)、primarysuccessinfowarningerror

  1. <u-button >默认按钮</u-button>
  2. <u-button type="primary">主要按钮</u-button>
  3. <u-button type="success">成功按钮</u-button>
  4. <u-button type="info">信息按钮</u-button>
  5. <u-button type="warning">警告按钮</u-button>
  6. <u-button type="error">危险按钮</u-button>

设置按钮为半圆形

shape默认值为square(按钮为圆角矩形),设置为circle,则按钮两边为半圆形

  1. <u-button shape="square">乌啼</u-button>

设置尺寸

button组件的size(可选值为default(默认),mini(小尺寸)和medium(中等尺寸))

  1. <u-button size="default">江湖</u-button>
  2. <u-button size="medium">夜雨</u-button>
  3. <u-button size="mini">十年灯</u-button>

设置按钮的镂空状态

镂空状态按钮背景为白色,边框和文字同色,通过plain来设置

  1. <u-button plain>披荆</u-button>
  2. <!-- 或者显式设置为true -->
  3. <u-button :plain="true">斩棘</u-button>

设置点击按钮的水波纹效果

该效果通过给按钮绝对定位形式覆盖一个view,点击时改变viewscaleopacity样式属性,形成扩散再消失的水波纹效果。

  1. <u-button :ripple="true">十年</u-button>
  2. <!-- 通过rippleBgColor设置水波纹的背景颜色 -->
  3. <u-button :ripple="true" ripple-bg-color="#909399">之约</u-button>

如何修改按钮的样式

  1. 针对非微信小程序平台,组件的根元素就是uni-appbutton组件,所以修改按钮的样式很容易,直接给组件定义类名或者嵌入内联样式即可。
  2. 如果是微信小程序,编译后页面会有组件同名的元素存在,导致样式传递有问题。
  3. 如果是为了修改按钮与其他元素之间的距离或者宽度等,可以给按钮外面套一个view元素,控制这个view与其他元素的距离或者宽度,即可达到同等效果。

所以:我们提供了一个custom-style参数,推荐用户可以用对象形式传递样式给组件内部,注意驼峰命名。

  1. /* 以下形式在微信小程序会无效,APP和H5有效 */
  2. <u-button class="custom-style">雪月夜</u-button>
  3. <style scoped>
  4. .custom-style {
  5. color: #606266;
  6. width: 400rpx;
  7. }
  8. </style>
  9. /* 推荐如下 */
  10. <u-button :custom-style="customStyle">雪月夜</u-button>
  11. <script>
  12. customStyle: {
  13. marginTop: '20px', // 注意驼峰命名,并且值必须用引号包括,因为这是对象
  14. color: 'red'
  15. }
  16. </script>

各家小程序开放能力的对接

uView已对接uni-app档关于uni-app方button组件](https:uni-app.dcloud.io/component/button)的所有开放能力(截止2020-04-14)uni-app-app文档说明使用即可,如果有发现遗漏的地方,请加群反馈。

API

Props

属性名说明类型默认值可选值平台差异说明
size按钮的大小Stringdefaultmedium / mini-
ripple是否开启点击水波纹效果Booleanfalsetrue-
ripple-bg-color水波纹的背景色,ripple为true时有效Stringrgba(0, 0, 0, 0.15)--
type按钮的样式类型Stringdefaultprimary / success / info/ warning / error-
plain按钮是否镂空,背景色透明Booleanfalsetrue-
disabled是否禁用Booleanfalsetrue-
hair-line是否显示按钮的细边框Booleantruefalse-
shape按钮外观形状,见上方说明Stringsquarecircle-
loading按钮名称前是否带 loading 图标BooleanfalsetrueApp-nvue 平台,在 ios 上为雪花,Android上为圆圈
form-type用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件String-submit / reset-
open-type开放能力String请参考uni-app方文档--
hover-class指定按钮按下去的样式类。当 hover-class=”none” 时,没有点击态效果Stringbutton-hover-App-nvue 平台暂不支持
hover-start-time按住后多久出现点击态,单位毫秒Number20--
hover-stay-time手指松开后点击态保留时间,单位毫秒Number70--
custom-style对按钮的自定义样式,对象形式,见上方说明Object---
app-parameter指定是否阻止本节点的祖先节点出现点击态Booleanfalsetrue微信小程序、QQ小程序
hover-stop-propagation打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效Booleanfalsetrue微信小程序
lang指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文Stringenzh_CN \ zh_TW微信小程序
session-from会话来源,open-type=”contact”时有效String--微信小程序
send-message-title会话内消息卡片标题,open-type=”contact”时有效String当前标题-微信小程序
send-message-path会话内消息卡片点击跳转小程序路径,open-type=”contact”时有效String当前分享路径-微信小程序
send-message-img会话内消息卡片图片,open-type=”contact”时有效String当前页面截图-微信小程序
show-message-card是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示”可能要发送的小程序”提示,用户点击后可以快速发送小程序消息,open-type=”contact”时有效String--微信小程序

Events

说明:目前经测试(Hbuilder X 2.6.8),在H5,APP,微信小程序,可以直接对组件监听tap事件,等同组件内部发出的click事件效果。

属性名说明类型默认值可选值平台差异说明
click按钮点击,请勿使用@tap点击事件,微信小程序无效Handler-
getphonenumberopen-type=”getPhoneNumber”时有效Handler微信小程序
getuserinfo用户点击该按钮时,会返回获取到的用户信息,从返回参数的detail中获取到的值同uni.getUserInfoHandler微信小程序
error当使用开放能力时,发生错误的回调Handler微信小程序
opensetting在打开授权设置页并关闭后回调Handler微信小程序
launchapp打开 APP 成功的回调Handler微信小程序