微信小程序使用component自定义toast弹窗效果


Posted in Javascript onNovember 27, 2018

前言

微信小程序自带的消息提示框有字数限制,而且图标仅仅只有"success","loading","none"。当我们在实际开发过程中,面对UI给的设计图稿和微信小程序默认提供的消息提示框具有很大差别的时候,自然就不能再使用微信小程序的消息提示框,而应当使用component自定义消息提示框组件。

效果图

微信小程序使用component自定义toast弹窗效果

Step1:初始化组件

新建一个components文件夹,这个文件夹用来存放我们以后要开发的所有自定义组件。

微信小程序使用component自定义toast弹窗效果

然后在components文件夹中创建Toast文件夹,在Toast上右击新建Component 之后就会自动创建相对应的wxml、wxss、js、json文件。

微信小程序使用component自定义toast弹窗效果

Step2:组件的相关配置

将toast.json 中component 设置为true

toast.json:

{
 "component": true,  // 自定义组件声明
 "usingComponents": {}  // 可选项,用于引用别的组件
}

然后在toast.wxml文件里写弹窗组件的模板,在toast.wxss文件里写组件的样式

toast.wxml:

<!--components/Toast/toast.wxml-->
<view class='mask' hidden="{{isShow}}">
 <image class="image" src='../../images/{{icon}}.png' mode='aspectFit'></image>
 <view class='info'>{{information}}</view>
</view>

toast.wxss:

/* components/Toast/toast.wxss */
.mask{
 width: 400rpx;
 height: 300rpx;
 border-radius:10rpx; 
 position: fixed;
 z-index: 1000;
 top: 300rpx;
 left: 175rpx;
 background: rgba(0, 0, 0, 0.6);
}
.image{
 z-index: 1000;
 width: 120rpx;
 height: 120rpx;
 margin-left: 140rpx;
}
.info{
 margin-top:50rpx; 
 z-index: 1000;
 text-align: center;
 color: #ffffff;
}
 width: 400rpx;
 height: 300rpx;
 border-radius:10rpx; 
 position: fixed;
 z-index: 1000;
 top: 300rpx;
 left: 175rpx;
 background: rgba(0, 0, 0, 0.6);
}
.image{
 z-index: 1000;
 width: 120rpx;
 height: 120rpx;
 margin-left:80rpx;
}
.info{
 margin-top:50rpx; 
 z-index: 1000;
 text-align: center;
 color: #ffffff;
}

Step3:定义属性、数据和事件

可以看到在toast.wxml文件中出现了{{isShow}}、{{icon}}、{{information}} 变量,这是为了组件模板能够根据传入的属性动态变化。

toast.js :

// components/Toast/toast.js
Component({
 /**
 * 组件的属性列表
 */
 properties: {    //定义组件属性
 information:{   //用来显示提示信息
  type: String,   // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
  value: '提示信息'  // 属性初始值(可选),如果未指定则会根据类型选择一个
 },
 icon:{     //图标类型,我在images文件夹中存放了success和fail的两个图标
  type:String,
  value:'success'
 },
 showTime:{    //弹窗开始显示的时间单位ms
  type: Number,
  value:1000
 },
 hideTime: {    //弹窗开始隐藏的时间单位ms
  type: Number,
  value: 1000
 }
 },
 /**
 * 组件的初始数据
 */
 data: {
 isShow:true
 },
 /**
 * 组件的方法列表
 */
 methods:{ 
 showToast:function () {
  let that = this;
  setTimeout(function () { 
  that.setData({
   isShow: !that.data.isShow
  });
  }, that.data.showTime);
 },
 hideToast: function (e) {
  let that = this;
  setTimeout(function(){  
  that.setData({
   isShow: !that.data.isShow
  });
  },that.data.hideTime);
 }
 }
})

Step4:使用弹窗/strong>

目前已经完成了toast组件模板,接下来就是在需要显示这个弹窗的页面中使用它。

index.json:引入组件

{
 "usingComponents": {
 "toast": "/components/Toast/toast"
 }
}

index.wxml:

<!--page/index/index.wxml-->
<view class="container">
 <toast id='toast'information="提交成功,我们会尽快和您联系" icon="success" showTime="1000" hideTime='2000'></toast>
 <button type="primary" bindtap="show"> 显示弹窗 </button>
</view>

index.js:

// page/index/index.js
Page({
 /**
 * 页面的初始数据
 */
 data: {

 },
 show:function(){
 this.toast.showToast();
 this.toast.hideToast();
 },
 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {

 },
 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function () {
 this.toast = this.selectComponent("#toast");
 },
 /**
 * 生命周期函数--监听页面显示
 */
 onShow: function () {

 },
 /**
 * 生命周期函数--监听页面隐藏
 */
 onHide: function () {

 },
 /**
 * 生命周期函数--监听页面卸载
 */
 onUnload: function () {

 },
 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function () {

 },
 /**
 * 页面上拉触底事件的处理函数
 */
 onReachBottom: function () {

 },
 /**
 * 用户点击右上角分享
 */
 onShareAppMessage: function () {

 }
})

至此我们就完成了自定义toast组件的步骤。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
jquery图片切换插件
Mar 16 Javascript
AngularJS基础 ng-include 指令简单示例
Aug 01 Javascript
jquery实现网页定位导航
Aug 23 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
Feb 21 Javascript
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
浅析微信扫码登录原理(小结)
Oct 29 Javascript
jquery操作select常见方法大全【7种情况】
May 28 jQuery
layui 监听select选择 获取当前select的ID名称方法
Sep 24 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
uni-app 微信小程序授权登录的实现步骤
Feb 18 Javascript
微信小程序自定义底部导航带跳转功能
Nov 27 #Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 #Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 #jQuery
js replace替换字符串同时替换多个方法
Nov 27 #Javascript
Vue中用props给data赋初始值遇到的问题解决
Nov 27 #Javascript
使用electron制作满屏心特效的示例代码
Nov 27 #Javascript
30分钟快速实现小程序语音识别功能
Nov 27 #Javascript
You might like
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
PHP7.0版本备注
2015/07/23 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
python赋值操作方法分享
2013/03/23 Python
python中解析json格式文件的方法示例
2017/05/03 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
车间调度岗位职责
2013/11/30 职场文书
大学生入党思想汇报
2014/01/14 职场文书
三年级语文教学反思
2014/02/01 职场文书
局火灾防控工作方案
2014/05/25 职场文书
绿色出行口号
2014/06/18 职场文书
一年级小学生评语大全
2014/12/25 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python