微信小程序使用component自定义toast弹窗效果
作者:lijiao 发布时间:2024-05-25 15:17:45
标签:微信小程序,弹窗
前言
微信小程序自带的消息提示框有字数限制,而且图标仅仅只有"success","loading","none"。当我们在实际开发过程中,面对UI给的设计图稿和微信小程序默认提供的消息提示框具有很大差别的时候,自然就不能再使用微信小程序的消息提示框,而应当使用component自定义消息提示框组件。
效果图
Step1:初始化组件
新建一个components文件夹,这个文件夹用来存放我们以后要开发的所有自定义组件。
然后在components文件夹中创建Toast文件夹,在Toast上右击新建Component 之后就会自动创建相对应的wxml、wxss、js、json文件。
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组件的步骤。


猜你喜欢
- 如何显示随机信息?使用了asp的randomize来创造随机数,select case来显示自定义信息。具体代码如下:<html>
- 这里为大家推荐一些不错的学习python基础的网站Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的
- django在引入第三方模块的时候保证服务的高可用,要设立一个备份接口,当主接口宕机时可以设置一个超市参数来使用备份的接口。nginx反向代
- 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信
- SQLite数据库使用单个磁盘文件,并且不需要像Oracle、MSSQL、MySQL等数据库管理系统那样启动服务,使用非常灵活方便。但是SQ
- 按照本文操作和体会,会对sql优化有个基本最简单的了解,其他深入还需要更多资料和实践的学习: 1. 建表: 代码如下:creat
- 前言写过前端Javascript代码的同学肯定不会对console对象感到陌生,在调试的过程中我们经常会用console对象在控制台输出一些
- 由于内容过多,大家可以通过ctrl+F搜索即可IE浏览器id 后缀名 php识别出的文件类型0 gif image/gif1 jpg ima
- 一、使用ddt和data装饰器的大致框架如下,每个test_开头的方法,代表一条测试用例from ddt import ddt,dataim
- 不同数据库之间若不能导入导出,那么将是一件可怕的事情,所幸的是一般情况下通过不同的方法和途径,都可以实现,方法有多种,本人提供其中的一个,提
- 1.介绍在 Golang 语言项目开发中,经常会遇到数据排序问题。Golang 语言标准库 sort 包,为我们提供了数据排序的功能,我们可
- hello world作为所有编程语言的起始阶段,占据着无法改变的地位,所有中/英/法/德/美……版本的编程教材中,hello world总
- 1. map的使用golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值。类型表示:m
- 1、要点 (1) 在C语言中没有字符串,只有字符, 在python中的字符串hello,在C
- 1.max取最大值函数max() 方法返回给定参数的最大值,参数可以为序列。lis = [1,2,3,-4]print(max(lis))
- 每一字符串字符文字有一个字符集和一个校对规则,它不能为空。一个字符串文字可能有一个可选的字符集引介词和COLLATE子句:[_charset
- Python 3.7中一个令人兴奋的新特性是 data classes 。 数据类通常是一个主要包含数据的类,尽管实际上没有任何限制。 它是
- 如何在页面中对不同的数据进行相同的处理?selectId.asp' 列出所有客户的客户名称<html><
- 论证完使用target=_blank并非绝对错误之后,分场景探讨如何减少新开窗口。自有意识注意这个问题,是看到蓝色经典Plod大叔在04年提
- 前言之前做了一个校园交友的APP,其中一个逻辑是通过用户的教务系统来确认用户是一名在校大学生,基本的想法是通过用户的账号和密码,用爬虫的方法