微信小程序自定义toast弹窗效果的实现代码


Posted in Javascript onNovember 15, 2018

微信小程序里面的自带弹窗icon只有两种,success和loading。有时候用户输入错误的时候想加入一个提醒图标,也可以使用wx.showToast中的image来添加图片达到使用自定义图标的目的;但是如果图标是字体,或者提醒的内容有很长捏(小程序中提醒的内容最多只能设置7个字,多了会被隐藏),那就只有自定义toast弹窗了;

第一步:新建一个wxml文件用来装模板,方便以后使用,比如

微信小程序自定义toast弹窗效果的实现代码

然后在这里面添加模板代码

<template name="toast"> //name相当于模板的标识,引用的时候好判断引用哪一个
 <view class='toast-out' wx:if='{{isShow}}'>
//wx:if是条件渲染,使用这个是为了好判断是否显示或隐藏toast
 <view class='toast-in'>



 <span class='iconfont {{iconClass}}'></span> //使用的阿里字体图标,根据传入的class值改变显示的图标
 <view class='toast-txt'>
  {{txt}}




//需要显示的提醒内容
 </view>
 </view>
 </view>
</template>

第二步:定义toast的样式

.toast-out {
 position: fixed;
 top: 0;
 left: 0;
 z-index: 9999;
 width: 100%;
 height: 100%;
 display: flex; //小程序中多使用flex布局,很方便的
 justify-content: center;
 align-items: center;
}
.toast-out .toast-in {
 min-width: 100px;
 background: rgba(0, 0, 0, 0.7);
 padding: 6px;
 text-align: center;
 color: white;
 border-radius: 8px;
}
.toast-out .toast-in span {
 font-size: 30px;
}
.toast-out .toast-in .toast-txt {
 font-size: 14px;
}

第三步:在需要弹窗的页面import那个toast模板页面:

<import src="../../public/html/template.wxml" />

备注:../是指返回上一层目录即父目录,两个../即返回到父目录的父目录。/是根目录,绝对路径。这里也可以使用绝对路径

然后再在这个页面任何地方引用模板

<template is="toast" data="{{txt,isShow,iconClass}}"></template>

第四步:在引入弹窗页面的js中

在page的data里先定义  isShow:false //默认隐藏的  但是我有点奇怪的是,不定义这个属性,注释掉,都能正常的隐藏与显示。

 

    然后定义一个显示弹窗的函数

toastShow:function(str,icon){
 var _this = this;
 _this.setData({
 isShow: true,
 txt: str,
 iconClass:icon
 });
 setTimeout(function () { //toast消失
 _this.setData({
 isShow: false
 });
 }, 1500); 
}

 

然后在需要toast弹窗显示的事件里调用该事件就行了,比如:

log_btn:function(){
 var name=this.data.userName;if(name==""){
 this.toastShow('登录名不能为空',"icon-suo");
 }
}

 结果:

微信小程序自定义toast弹窗效果的实现代码

图标随意弄的。。。

或者是在把弹窗的js写入App({})里面,然后需要用的页面就直接getApp().toastShow()就行了。例如:

App({
 toastShow: function (that, str, icon){
 that.setData({
 isShow: true,
 txt: str,
 iconClass: icon
 });
 setTimeout(function () {
 that.setData({
 isShow: false
 });
 }, 1500);
 }, 
})

然后在需要引入弹窗的页面:

var app = getApp();

在该页面需要调用的函数中:

his_clear:function(){ 
 app.toastShow(this, "清除成功", "icon-correct"); 
},

连接:小程序使用阿里字体图标

总结: 和HTML不一样,小程序中wx:if条件渲染就可以实现隐藏与显示的wx:if="false"就是隐藏,true就是显示。

 

 使用display:flex弹性盒子布局很方便,就比如上面弹窗的水平与垂直居中,只要设置两个属性就可以了。不用再像以前一样还需要设置其它的一堆,以前水平垂直居中的方法

补充:

justify-content 的可选属性有:flex-start(全靠左),flex-end(全靠右),center(居中),space-between,space-around,initial(从父元素继承该属性)

可查看效果:http://www.runoob.com/try/playit.php?f=playcss_justify-content&preval=flex-start

align-items 的可选属性有:stretch,center,flex-start,flex-end,baseline(处于同一条基线),initial(设置为默认值),inherit(从父元素继承该属性)

可查看效果:http://www.runoob.com/try/playit.php?f=playcss_align-items&preval=baseline

总结

以上所述是小编给大家介绍的微信小程序之自定义toast弹窗,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
Jan 04 Javascript
jquery无缝向上滚动实现代码
Mar 29 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
Mar 26 Javascript
javascript中this的四种用法
May 11 Javascript
详解Node.js中的事件机制
Sep 22 Javascript
浅析JavaScript中break、continue和return的区别
Nov 30 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
vue实例的选项总结
Jun 09 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
搭建基于express框架运行环境的方法步骤
Nov 15 #Javascript
用图片替换checkbox原始样式并实现同样的功能
Nov 15 #Javascript
微信小程序swiper实现滑动放大缩小效果
Nov 15 #Javascript
微信小程序页面缩放式侧滑效果的实现代码
Nov 15 #Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
Nov 15 #Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
Nov 15 #Javascript
判断iOS、Android以及PC端的示例代码
Nov 15 #Javascript
You might like
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
javascript String 对象
2008/04/25 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
使用python Django做网页
2013/11/04 Python
pyqt和pyside开发图形化界面
2014/01/22 Python
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
浅析Python中的多重继承
2015/04/28 Python
Python运算符重载用法实例
2015/05/28 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Python sep参数使用方法详解
2020/02/12 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
.NET程序员的几道面试题
2012/06/01 面试题
外包公司软件测试工程师
2014/11/01 面试题
竞聘书怎么写,如何写?
2014/03/31 职场文书