微信小程序自定义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 相关文章推荐
中止javascript执行的方法
Feb 14 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
javascript的理解及经典案例分析
May 20 Javascript
Javascript获取图片原始宽度和高度的方法详解
Sep 20 Javascript
关于vue-resource报错450的解决方案
Jul 24 Javascript
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 Javascript
基于vue和react的spa进行按需加载的实现方法
Sep 29 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 Javascript
vue插槽slot的简单理解与用法实例分析
Mar 14 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
Aug 12 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
xml+php动态载入与分页
2006/10/09 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
多个应用共存的Django配置方法
2018/05/30 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
小学教师岗位职责
2013/11/25 职场文书
情人节活动策划方案
2014/02/27 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
年度考核个人总结
2015/03/06 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书