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

然后在这里面添加模板代码
<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:;
left:;
z-index:;
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");
}
}
结果:
图标随意弄的。。。
或者是在把弹窗的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弹窗的更多相关文章
- 微信小程序之自定义模态弹窗(带动画)实例
1.基本需求. 实现用户自定义弹框 带动画(动画可做参靠,个人要是觉得不好看可以自定义动画) 获取弹出框的内容,自定义事件获取 2.案例目录结构 二.程序实现具体步骤 1.弹框index.wxml代码 ...
- 微信小程序 修改(自定义) 单选/复选按钮样式 checkbox/radio样式自定义
参考文章: 微信小程序 修改(自定义) 单选/复选按钮样式 checkbox/radio样式自定义
- 微信小程序中自定义modal
微信小程序中自定义modal .wxml <modal hidden="{{hidden}}" title="这里是title" confirm-text ...
- 【微信小程序】自定义模态框实例
原文链接:https://mp.weixin.qq.com/s/23wPVFUGY-lsTiQBtUdhXA 1 概述 由于官方API提供的显示模态弹窗,只能简单地显示文字内容,不能对对话框内容进行自 ...
- 微信小程序之自定义select下拉选项框组件
知识点:组件,animation,获取当前点击元素的索引与内容 微信小程序中没有select下拉选项框,所以只有自定义.自定义的话,可以选择模板的方式,也可以选择组件的方式来创建. 这次我选择了组件, ...
- 微信小程序之自定义组件
在微信小程序项目中 肯定会存在很多功能和样式上相似的部分 面对这种情况 只是单单的ctrl+c ctrl+v 就显得很low了,而且也不便于后期维护那么这时候 使用微信小程序中的自定义组件功能就很合适 ...
- 微信小程序:自定义组件
为什么要学习自定义组件? 1.用上我自己的单词abc,我希望在页面中展示椭圆形的图片, 2.打开手机淘宝,假如现在要做一个企业级项目,里面有很多页面,首页存在导航模块,点击天猫,进入第二个页面,而第二 ...
- 微信小程序之自定义组件的应用
小程序支持自定义组件,下面是一个简单的购物车组件,实现的效果如图: 效果图 创建组件 在根目录创建components目录,然后创建计数组件 count 如图: 组件内容 <!--compone ...
- 微信小程序封装自定义弹窗
最近在做小程序的登录,需要同时获取用户手机号和头像昵称等信息,但是小程序又不支持单个接口同时获取两种数据,因此想到自定义一个弹窗,通过弹窗按钮触发获取手机号事件.记录一下. 具体代码如下: 业务代码中 ...
随机推荐
- 十三、 Spring Boot 启动加载数据 CommandLineRunner
实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求. 为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来 ...
- 自学Zabbix3.5.5-监控项item-User parameters(自定义key)
为什么要自定义KEY,即User parameters功能 有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法.我们可以在客户端配置文件zabb ...
- 自学Python2.5-基本数据类型-set集合
Python set集合 一. set集合概述 ①set集合,是一个无序且不重复的元素集合.②集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.③集合支持用in和not in操作符检查成员 ...
- 用maven建立java web项目
1.在eclipse的菜单栏选择File->New->Other->Maven->Maven ,并在第一个框打勾,然后点击下一步 2.转换为java的Dynamic Web P ...
- Pseudo-devices On GNU/Linux
先分享一则有意思Q&A,来自The FreeBSD Funnies 17.4 . Where does data written to* /dev/null* go? It goes in ...
- 本地代码上传到GitHub---拷贝github代码
来这里: 转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/46738929 步骤: git init git add na ...
- solr集群的理解和配置(待更新)
solr部署在tomcat下,solr集群依赖tomcat集群和zookeeper集群: zookeeper:1.对象注册和发放中心,实现异步调用. 2.配置中心.(solrConfig.xml,sc ...
- iOS Swift--UIImageView UIImage
1.UIImageView + UIImage Demo import UIKit class UIImageViewViewController: UIViewController { var ...
- ubuntu14.04 解决屏幕亮度无法调节的问题
sudo gedit /etc/default/grub 在打开文件中找到 GRUB_CMDLINE_LINUX="" 改成 GRUB_CMDLINE_LINUX="ac ...
- apache泛域名解析
<VirtualHost *:80> DocumentRoot "E:\work\phpStudy\WWW\ncpx\web" ServerName ncp ...