微信小程序自定义无图标的toast教程
146 浏览量
更新于2024-08-31
收藏 58KB PDF 举报
“微信小程序实战之自定义toast(6)”
在微信小程序开发中,系统提供了wx.showToast() API,用于快速显示一个简短的提示信息。然而,该API默认带有的图标可能并不符合所有场景的需求,特别是在需要明确表示成功或失败状态时。例如,当操作失败时,如果仍显示默认的成功图标,可能会造成用户的困惑。为了满足更个性化的展示需求,开发者常常会选择自定义toast组件。
在描述的问题中,当执行操作失败时,使用wx.showToast() 显示的默认图标与失败状态不符,可能导致用户难以判断操作的结果。为了避免这种情况,开发者可以创建一个自定义的toast组件,以完全控制其样式和内容,比如去除图标或者根据业务逻辑显示不同的提示信息。
下面是如何实现一个自定义toast的步骤:
1. WXML结构:
在WXML文件中,我们需要创建一个包含按钮、遮罩层(mask)以及实际显示内容的toast容器。按钮触发显示toast的逻辑,遮罩层用于半透明覆盖整个页面,而toast容器则包含具体的提示信息。
```html
<!-- 按钮 -->
<view style="{{isShowToast ? 'position: fixed;' : ''}}">
<view class="btn" bindtap="clickBtn">button</view>
</view>
<!-- 遮罩层 -->
<view class="toast_mask" wx:if="{{isShowToast}}"></view>
<!-- toast显示的内容 -->
<view class="toast_content_box" wx:if="{{isShowToast}}">
<view class="toast_content">
<view class="toast_content_text">{{toastText}}</view>
</view>
</view>
```
2. WXSS样式:
定义相应的CSS样式,包括按钮样式、遮罩层的透明度和全屏布局,以及toast内容的布局和文字样式。
```css
/* 按钮样式 */
.btn {
font-size: 28rpx;
padding: 15rpx 30rpx;
width: 100rpx;
margin: 20rpx;
text-align: center;
border-radius: 10rpx;
border: 1px solid #000;
}
/* 遮罩层 */
.toast_mask {
opacity: 0;
width: 100%;
height: 100%;
overflow: hidden;
position: fixed;
top: 0;
left: 0;
z-index: 888;
}
/* toast内容 */
.toast_content_box {
/* 根据需要添加样式 */
}
.toast_content {
/* 根据需要添加样式 */
}
.toast_content_text {
/* 根据需要添加样式 */
}
```
3. JS逻辑:
在JS文件中,设置数据属性isShowToast控制toast的显示与隐藏,以及toastText显示的内容。当点击按钮时,调用自定义方法处理业务逻辑,并根据结果更新isShowToast和toastText的值。
```javascript
Page({
data: {
isShowToast: false,
toastText: '',
},
clickBtn: function() {
// 执行业务逻辑
const result = doSomeBusiness();
if (result === 'success') {
this.setData({
isShowToast: true,
toastText: '操作成功',
});
} else if (result === 'error') {
this.setData({
isShowToast: true,
toastText: '操作失败',
});
}
// 添加延时关闭toast的逻辑,例如:
setTimeout(() => {
this.setData({ isShowToast: false });
}, 2000);
},
});
```
通过这样的方式,我们可以自定义toast的外观和行为,使其更贴合应用场景。例如,对于成功和失败的情况,可以分别显示不同的文字和背景颜色,甚至可以添加自定义的图标,以增强用户体验和反馈的准确性。同时,通过调整CSS样式,可以使得toast在界面中的位置和显示效果更加理想。
2021-03-29 上传
2018-02-07 上传
2020-12-29 上传
2024-10-26 上传
2024-06-19 上传
2023-06-13 上传
2023-06-10 上传
2023-09-02 上传
2023-06-10 上传