微信小程序自定义弹窗组件

业务背景:弹窗有时字体较多,超过7个字,不适用wx.showToast.
在这里插入图片描述
组件代码

<view class="toast-box {{isShow? 'show':''}}" animation="{{animationData}}"><view class="toast-content" ><view class="toast-img"><block wx:if="{{type==='success'}}"><image class="toast-icon" src="/images/correct.png" /></block><block wx:if="{{type==='fail'}}"><image class="toast-icon" src="/images/warn.png" /></block></view><view class="toast-title">{{title}}</view><view style="width:100%;border-top: 1rpx solid #ddd;"></view><view bindtap="handleClose" style="width: 100%;text-align: center;color: #666;line-height: 80rpx;">确 定</view></view>
</view>

/* components/toast/toast.wxss */

.toast-box {position: fixed;left: 0;top: 0;width: 100vw;height: 100vh;z-index: 11;display: none;background: rgba(0, 0, 0, .6);opacity: 0;}.show{display: block;}.toast-content {position: absolute;left: 50%;top: 45%;width:600rpx;/*height: 250rpx;*/border-radius: 10rpx;box-sizing: bordre-box;transform: translate(-50%, -50%);background: white;}.toast-img{width: 100%;height: 100rpx;padding-top: 15rpx;box-sizing: bordre-box;text-align: center;}.toast-icon{width: 100rpx;height: 100rpx;}.toast-title {width: 100%;padding: 30rpx;line-height: 45rpx;color: #666;text-align: center;font-size: 28rpx;box-sizing: border-box;}

// components/toast/toast.js

Component({properties: {},data: {type: 'fail',title: '',isShow: false,animationData: ''},methods: {showToast: function (data) {const that = this;if (this._showTimer) {clearTimeout(this._showTimer)}if (this._animationTimer) {clearTimeout(this._animationTimer)}// display需要先设置为block之后,才能执行动画this.setData({title: data.title,type: data.type,isShow: true,});this._animationTimer = setTimeout(() => {const animation = wx.createAnimation({duration: 500,timingFunction: 'ease',delay: 0})animation.opacity(1).step();that.setData({animationData: animation.export(),})}, 50)this._showTimer = setTimeout(function () {that.hideToast();if (data.compelete && (typeof data.compelete === 'function')) {data.compelete()}}, data.duration)},handleClose(){this.hideToast();},hideToast: function () {if (this._hideTimer) {clearTimeout(this._hideTimer)}let animation = wx.createAnimation({duration: 200,timingFunction: 'ease',delay: 0})animation.opacity(0).step();this.setData({animationData: animation.export(),})this._hideTimer = setTimeout(() => {this.setData({isShow: false,})}, 0)}}})

引用部分

// json{"usingComponents": {"vas-toast": "../../components/toast/toast"}
}
// html
<vas-toast id='toast'></vas-toast>
jsonShow: function () {this.prompt = this.selectComponent("#toast");},
that.prompt.showToast({type: 'fail',title: res.data.errmsg,duration: 4000,compelete: function () {}})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587537.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024总结的vue3的面试题

一、vue2和vue3的区别 答案&#xff1a; 1、数据绑定原理不同 vue2&#xff1a;vue2的数据绑定是利用ES5的一个API&#xff1a;Object.definePropert() 对数据进行劫持&#xff0c;结合发布订阅模式的方式来实现的。 vue3&#xff1a;vue3中使用了ES6的Proxy API对数据代理…

大数据学习第十二天(hadoop概念)

1、服务器之间数据文件传递 1&#xff09;服务器之间传递数据&#xff0c;依赖ssh协议 2&#xff09;http协议是web网站之间的通讯协议&#xff0c;用户可已通过http网址访问到对应网站数据 3&#xff09;ssh协议是服务器之间&#xff0c;或windos和服务器之间传递的数据的协议…

ubuntu-server部署hive-part4-部署hive

参照 https://blog.csdn.net/qq_41946216/article/details/134345137 操作系统版本&#xff1a;ubuntu-server-22.04.3 虚拟机&#xff1a;virtualbox7.0 部署hive 下载上传 下载地址 http://archive.apache.org/dist/hive/ apache-hive-3.1.3-bin.tar.gz 以root用户上传至…

UE4 方块排序动画

【动画效果】 入动画&#xff1a; 出动画&#xff1a; 【分析】 入动画&#xff1a;方块动画排序方式为Z字形&#xff0c;堆砌方向为X和Y轴向 出动画&#xff1a;方块动画排序方式为随机 【关键蓝图】 1.构建方块砌体 2.入/出动画

wife_wife【web 攻防世界】

大佬的wp:WEB&#xff1a;Wife_wife-CSDN博客 知识点&#xff1a; prototype是new class 的一个属性&#xff0c;即__proto__指向new class 的prototype属性__proto__如果作为json代码解析的话会被当成键名处理&#xff0c;但是如果是在类中的话则会被当成子类的原型 如let o…

提升常州小程序软件开发的搜索排名:关键步骤解析

在移动互联网的浪潮中&#xff0c;小程序作为连接用户与服务的桥梁&#xff0c;其重要性日益凸显。对于常州的小程序软件开发企业来说&#xff0c;如何让自己的产品在浩如烟海的互联网信息中脱颖而出&#xff0c;提升搜索排名&#xff0c;成为了亟待解决的问题。本文将为您解析…

windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写

目录 1. kafka 下载 2. 修改配置文件 2.1 文件夹内容 2.2 创建一个 data 空文件夹 2.3 修改 zookeeper.properties 配置文件 2.4 修改 server.properties 配置文件 2.5 创建 "zk.cmd" windows脚本文件 2.6 创建 "kfk.cmd" windows脚本文件 3. 启动…

Windows下用CMake编译PugiXML及配置测试

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 PugiXML是什么&#xff1f; PugiXML 是一个用于解析和操作 XML 文档的 C 库。它提供了简单易用的接口&#xff0c;能够高效地加载…

Javascript/Node.JS中如何用多种方式避免属性为空(cannot read property of undefined ERROR)

>>>>>>问题 "cannot read property of undefined" 是一个常见的 JavaScript 错误&#xff0c;包含我在内很多人都会遇到&#xff0c;表示你试图访问一个未定义&#xff08;undefined&#xff09;对象的属性。这通常是因为你在访问一个不存在的对象…

视频基础学习四——视频编码基础一(冗余信息)

文章目录 前言一、编码压缩的原理1.空间冗余帧内预测 2.时间冗余帧间预测运动估计运动补偿 3.编码冗余4.视觉冗余 二、压缩编码的流程1.编码器2.编解码流程 总结 前言 上一篇文章介绍了视频帧率、码率、与分辨率。也介绍了为什么需要对视频进行压缩&#xff0c;因为720P、rgb2…

C++的并发世界(四)——线程传参

1.全局函数作为传参入口 #include <iostream> #include <thread> #include <string>void ThreadMain(int p1,float p2,std::string str) {std::cout << "p1:" << p1 << std::endl;std::cout << "p2:" <<…

ElementUI 表格横向滚动条时滚动到指定位置

ElementUI 表格横向滚动条时滚动到指定位置 getColumnOffset(columnProp) {this.$nextTick(() > {const table this.$refs.tableRef.$refs.multipleTable;const columns table.columns;const column columns.find((col) > col.property columnProp);if (column) {// …