封装一个的toast弹出框(vue项目)

逆风的方向,更适合飞翔
实现效果

实现步骤
先写出一个toast组件
// Toast.vue
<template>
<div id="toast" :class="[isActive ? 'active' : '', type]">
{{ message }}
</div>
</template> <script>
export default {
name: "Toast",
data() {
return {
message: "",//传递的消息
isActive: false,//是否处于活跃状态(显示在页面内)
type: "",//消息样式
timer1: null,
timer2: null,
};
},
mounted() {
this.$nextTick(() => {
this.isActive = true;
});
this.timer1 = setTimeout(() => {
this.isActive = false;
}, this.delayer);
this.timer2 = setTimeout(() => {
this.$destroy(true);//销毁vue实例
}, this.delayer * 2);
},
destroyed() {
this.$el.parentNode.removeChild(this.$el);//移除dom元素
clearTimeout(this.timer1);
clearTimeout(this.timer2);
},
};
</script> <style scoped>
#toast {
position: fixed;
top: -50px;
left: 50%;
transform: translate(-50%, 0);
padding: 13px 20px;
border-radius: 15px;
z-index: 999;
opacity: 0;
transition: all 1s;
}
#toast.success {
background-color: #f0f9eb;
color: #67c23a;
}
#toast.error {
background-color: #fef0f0;
color: #f56c6c;
}
#toast.active {
top: 30px;
opacity: 1;
}
</style>
注意的点:toast消失后记得销毁vue实例,清空定时器,移除dom元素
封装成一个插件
// index.js
import Toast from "./Toast.vue";
const obj = {};
obj.install = function(Vue) { //1. 创建组件构造器
const toastContrustor = Vue.extend(Toast); Vue.prototype.$toast = function(message, type, delayer = 3000) { //2. new的方式,根据组件构造器,可以创建出来一个组件对象
const toast = new toastContrustor(); Object.assign(toast, { message, type, delayer }); //3. 将组件对象手动的挂载到一个元素上面 toast.$mount(document.createElement("div")); //4. toast.$el对应的就是div
document.body.appendChild(toast.$el);
};
}; export default obj;
//main.js
import toast from "components/common/toast"; Vue.use(toast);
文件结构

使用
this.$toast("hi,i am spiderman", "success", 5000);
this.$toast("hi,i am spiderman", "error", 5000);
日子常新,未来不远
封装一个的toast弹出框(vue项目)的更多相关文章
- WindowsPhone模拟简易Toast弹出框
Coding4Fun这个开源控件中有ToastPrompt这个弹出框组件,但是由于Coding4Fun太庞大,如果只用到ToastPrompt这个控件的话,整个引用不太值当的.于是自己写了一个差不多的 ...
- 代码录播:jQueryMobile 实现一个简单的弹出框效果
今天给大家带来的是 jQueryMobile 实现一个简单的弹出框效果,有兴趣的童鞋可以试试哦~ ^_^ 阅读原文:www.gbtags.com
- appium应用切换以及toast弹出框处理
一.应用切换 应用切换的方法很简单,直接调用driver.start_activity()方法,传入app_package和app_activity参数,示例代码如下: from appium imp ...
- 【原创】贡献一个JS的弹出框代码...
一.前言 最近在做一个项目,自己感觉系统自带的alert()方法的弹出框实在是不堪入目,所以在网上找了一些资料,然后自己加工了一下,做出了自己的一个js弹出框,在这里贡献出来,希望对你有帮助. 二.开 ...
- 做一个iframe的弹出框
群里有个人想在微信页面里面加弹出框.作为前端的我,想着不可能这样做.后来一个人说了: A:如果对方没有防盗链的话,你可以建个页面,内置iframe 到他的页面,然后把url 的参数也传入你的ifram ...
- jQuery效果之封装一个文章图片弹出放大效果
首先先搭写一个基本的格式: $.fn.popImg = function() { //your code goes here } 然后用自调用匿名函数包裹你的代码,将系统变量以变量形式传递到插件内部, ...
- 自定义一个类似UIAlertView的弹出框
这个是和UIAlertView类似,但是可以自定义view的样式废话不多说,上代码: 首先第一步:创建一个继承自View的类如: #import <UIKit/UIKit.h> @clas ...
- JS弹出框插件zDialog再次封装
zDialog插件网址:http://www.jq22.com/jquery-info2426 再次封装zDialog的代码: (function ($) { $.extend({ iDialog: ...
- JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示
前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
随机推荐
- 第17章-x86-64寄存器
不同的CPU都能够解释的机器语言的体系称为指令集架构(ISA,Instruction Set Architecture),也可以称为指令集(instruction set).Intel将x86系列CP ...
- HCNP Routing&Switching之动态路由协议IS-IS基础
前文我们了解了OSPF的特殊区域相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15236330.html:今天我们来聊一聊另一动态路由协议IS-IS相 ...
- java多线程 synchronized 与lock锁 实现线程安全
如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 通过卖火车票的例子 火车站要卖票,我们模 ...
- C# List集合类常用操作:三、查找
List集合查询数据 List<Employees> employees = new List<Employees>(); employees.Add(new Employee ...
- python库--tensorflow--scope命名方式
方法 参数 说明 .name_scope() with...: name 在其下使用Variable, 变量名(V_n)前会被加上'name/...'且相同V_n会自动添加后缀加以区分, 使用ge ...
- [第十三篇]——Docker Compose之Spring Cloud直播商城 b2b2c电子商务技术总结
Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具.通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务.然 ...
- Sentry 监控 - Dashboards 事件数据可视化大屏
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 异步servlet的原理探究
异步servlet是servlet3.0开始支持的,对于单次访问来讲,同步的servlet相比异步的servlet在响应时长上并不会带来变化(这也是常见的误区之一),但对于高并发的服务而言异步serv ...
- ThinkPHP5通过composer安装Workerman安装失败问题
报错: topthink/think-worker v3.0.2 requires topthink/framework ^6 https://blog.csdn.net/Douz_lungfish/ ...
- dede5.7 给栏目添加上缩略图
如我们一个栏目列表都用缩略图来表示,而不仅仅只是文字,如果没有这项功能会非常麻烦,网上有很多这方面的资料,但是都试过了有很多问题,自己研究一下,测试基本通过.新加字段 typeimg后台执行SQL: ...