标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
文章目录
🚀前言
在微信小程序的开发过程中,用户交互功能的实现是提升用户体验的关键。而微信小程序提供了一系列强大的组件,专门用于增强用户与应用之间的互动。这些组件不仅丰富了小程序的功能,也为开发者提供了灵活的工具,以满足不同场景下的交互需求。
本篇文章将深入探讨微信小程序中主要的用户交互组件,包括按钮、表单、滑动条、对话框等。我们将详细分析每个组件的特性、使用方法以及最佳实践,帮助你更好地理解如何通过这些组件来提升用户体验。
无论你是小程序开发的新手,还是希望优化现有应用的资深开发者,这篇文章都将为你提供实用的见解和技巧。让我们一起探索微信小程序提供的用户交互功能组件,创造出更加引人入胜的小程序体验吧!
🚀一、提供用户交互功能的组件
🔎1.button(按钮)组件及应用
按钮是页面开发中最常用的交互组件之一。小程序框架提供的 button
组件可配置的属性众多,可以通过实际代码演示来体验这些属性的效果。
🦋1.1 示例:在 buttonDemo
页面中使用按钮组件
- 在
buttonDemo.wxml
文件中编写如下代码:
<!-- pages/buttonDemo/buttonDemo.wxml -->
<view>
<button type="primary">Normal</button>
<button type="primary" loading="true">Loading</button>
<button type="primary" disabled="true">Disabled</button>
<button type="default">default</button>
<button type="warn">Warn</button>
<button type="primary" plain="true">Plain</button>
<button type="primary" disabled="true" plain="true">Plain Disabled</button>
<button class="mini-btn" type="primary" size="mini">Mini Primary</button>
</view>
- 在
buttonDemo.wxss
文件中为button
组件添加边距样式:
/* pages/buttonDemo/buttonDemo.wxss */
button {
margin: 20px;
}
运行代码后,效果如图所示。可以看到,默认的按钮组件样式简洁美观,很多时候,我们的小程序风格应尽量与微信应用程序整体风格保持协调,使用框架默认的样式是一个不错的选择。
🦋1.2 button 组件可配置的属性
button
组件支持以下可配置的属性:
属性名 | 类型 | 意义 |
---|---|---|
size | 字符串 | 设置按钮的尺寸类型,可选值为: |
- default : 默认大小 |
||
- mini : 小尺寸 |
||
type | 字符串 | 设置按钮样式类型,可选值为: |
- primary : 主题色调按钮(绿色) |
||
- default : 默认色调按钮(白色) |
||
- warn : 警告色调按钮(红色) |
||
plain | 布尔值 | 设置是否为空的描边按钮 |
disabled | 布尔值 | 设置是否禁用按钮 |
loading | 布尔值 | 设置是否带 loading 状态 |
form-type | 字符串 | 用于表单组件内,点击会触发表单的 submit 事件 |
open-type | 字符串 | 关联的微信开放能力,可选值为: |
- contact : 打开客服会话 |
||
- share : 触发用户转发 |
||
- getPhoneNumber : 获取用户手机号 |
||
- getUserInfo : 获取用户信息 |
||
- launchApp : 打开 App |
||
- openSetting : 打开授权设置页 |
||
- feedback : 打开意见反馈页面 |
||
- chooseAvatar : 获取用户头像 |
||
hover-stop-propagation | 布尔值 | 设置是否阻止本节点的祖先节点出现点击状态 |
hover-class | 字符串 | 设置按钮按下时亮起的样式类 |
hover-start-time | 数值 | 设置按钮按住后出现点击态的延迟时间,默认值为 20ms |
hover-stay-time | 数值 | 设置点击态消失后的延迟时间,默认值为 70ms |
lang | 字符串 | 指定返回用户信息的语言,可选值为: |
- en : 英文 |
||
- zh_CN : 简体中文 |
||
- zh_TW : 繁体中文 |
||
session-from | 字符串 | 设置会话来源 |
send-message-title | 字符串 | 设置发送消息卡片标题,当 open-type 为 contact 时有效 |
send-message-path | 字符串 | 设置发送消息卡片点击后跳转小程序路径,当 open-type 为 contact 时有效 |
send-message-img | 字符串 | 设置发送消息卡片图片,当 open-type 为 contact 时有效 |
app-parameter | 字符串 | 设置打开 APP 时传递的参数,当 open-type 为 launchApp 时有效 |
show-message-card | 布尔值 | 设置是否显示会话消息卡片,当 open-type 为 getUserInfo 时有效 |
bindgetuserinfo | 函数 | 获取用户信息的回调,当 open-type 为 getUserInfo 时有效 |
bindcontact | 函数 | 客服消息回调,当 open-type 为 contact 时有效 |
bindgetphonenumber | 函数 | 获取用户手机号的回调,当 open-type 为 getPhoneNumber 时有效 |
binderror | 函数 | 使用开放能力时失败的回调调,适用于所有 open-type |
bindopensetting | 函数 | 打开授权设置页的回调,当 open-type 为 openSetting 时有效 |
bindlaunchapp | 函数 | 打开 APP 完成后的回调,当 open-type 为 launchApp 时有效 |
bindchooseavatar | 函数 | 获取用户头像的回调,当 open-type 为 chooseAvatar 时有效 |
示例:按钮集成微信分享能力
例如,要接入微信的分享能力,只需设置 open-type="share"
:
<button class="mini-btn" type="primary" size="mini" open-type="share">Mini Primary</button>
🔎2.switch(开关)组件及应用
switch
组件是一类特殊的按钮,它有开启和关闭两种状态。在很多应用的设置页面,都有类似的开关,比如控制是否有消息提示音,是否接收推送消息等。在 pages
文件夹下新建一组名为 switchDemo
的页面文件,在 switchDemo.wxml
文件中编写如下代码:
<!-- pages/switchDemo/switchDemo.wxml -->
<view>
<switch checked="{
{switchData}}" bindchange="switchChange"/> 开关按钮
</view>
<view style="margin: 20px;"></view>
<view>
<switch type="checkbox" checked="{
{checkData}}" bindchange="checkChange"/> 选择框按钮
</view>
上述代码中,使用了两个 switch
组件,其中一个设置为开关类型,另一个设置为选择按钮类型。在 switchDemo.js
文件中编写与之匹配的代码:
// pages/switchDemo/switchDemo.js
Page({
data: {
switchData: false,
checkData: false
},
switchChange: function(data) {
console.log(data.detail);
},
checkChange: function(data) {
console.log(data.detail);
}
});
当用户切换了开关按钮的状态时,会触发绑定的回调函数,传递进来的参数中的 detail
属性表示当前开关的状态。
运行上述代码,效果如图所示。
switch 组件的属性
属性名 | 类型 | 意义 |
---|---|---|
checked | 布尔值 | 当前开关是否开启或选中 |
disabled | 布尔值 | 设置按钮是否禁用 |
type | 字符串 | 设置按钮的类型,可选值为: |
- switch : 开关类型 |
||
- checkbox : 选择框类型 |
||
color | 字符串 | 设置按钮的颜色 |
bindchange | 函数 | 设置开关状态改变时的回调函数 |
🔎3.checkbox 组件与 checkbox-group 组件及应用
当 switch
组件的 type
属性设置为 checkbox
时,其会渲染出一个选择框样式的按钮。其实在小程序开发框架中,专门提供了 checkbox
与 checkbox-group
组件来处理需要使用选择框的场景。checkbox
组件和 checkbox-group
组件内部可以定义一组 checkbox
组件,我们只需要在 checkbox-group
组件上绑定用户选择状态改变的事件即可。
在 pages
文件夹下新建一组名为 checkboxDemo
的页面文件,在 checkboxDemo.wxml
文件中编写如下代码:
<!-- pages/checkboxDemo/checkboxDemo.wxml -->
<checkbox-group bindchange="change">
<checkbox value="足球">足球</checkbox>
<checkbox value="篮球">篮球</checkbox>
<checkbox value="乒乓球">乒乓球</checkbox>
</checkbox-group>
在 checkboxDemo.js
文件中实现绑定的回调事件函数:
// pages/checkboxDemo/checkboxDemo.js
Page({
change: function(data) {
console.log(data.detail.value);
}
});
运行代码,页面上会显示一组选择框,当这一组选择框中的任意一个选中状态发生了变化时,都会调用回调函数,在其传递的参数中会装一个数组对象,数组中存放的是所有选中状态的 checkbox
的 value
值。
上面的代码运行效果如图所示。
checkbox-group
组件的作用是包含一组