逆风的方向,更适合飞翔

实现效果

实现步骤

先写出一个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项目)的更多相关文章

  1. WindowsPhone模拟简易Toast弹出框

    Coding4Fun这个开源控件中有ToastPrompt这个弹出框组件,但是由于Coding4Fun太庞大,如果只用到ToastPrompt这个控件的话,整个引用不太值当的.于是自己写了一个差不多的 ...

  2. 代码录播:jQueryMobile 实现一个简单的弹出框效果

    今天给大家带来的是 jQueryMobile 实现一个简单的弹出框效果,有兴趣的童鞋可以试试哦~ ^_^ 阅读原文:www.gbtags.com  

  3. appium应用切换以及toast弹出框处理

    一.应用切换 应用切换的方法很简单,直接调用driver.start_activity()方法,传入app_package和app_activity参数,示例代码如下: from appium imp ...

  4. 【原创】贡献一个JS的弹出框代码...

    一.前言 最近在做一个项目,自己感觉系统自带的alert()方法的弹出框实在是不堪入目,所以在网上找了一些资料,然后自己加工了一下,做出了自己的一个js弹出框,在这里贡献出来,希望对你有帮助. 二.开 ...

  5. 做一个iframe的弹出框

    群里有个人想在微信页面里面加弹出框.作为前端的我,想着不可能这样做.后来一个人说了: A:如果对方没有防盗链的话,你可以建个页面,内置iframe 到他的页面,然后把url 的参数也传入你的ifram ...

  6. jQuery效果之封装一个文章图片弹出放大效果

    首先先搭写一个基本的格式: $.fn.popImg = function() { //your code goes here } 然后用自调用匿名函数包裹你的代码,将系统变量以变量形式传递到插件内部, ...

  7. 自定义一个类似UIAlertView的弹出框

    这个是和UIAlertView类似,但是可以自定义view的样式废话不多说,上代码: 首先第一步:创建一个继承自View的类如: #import <UIKit/UIKit.h> @clas ...

  8. JS弹出框插件zDialog再次封装

    zDialog插件网址:http://www.jq22.com/jquery-info2426 再次封装zDialog的代码: (function ($) { $.extend({ iDialog: ...

  9. JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

随机推荐

  1. JDK1.8源码(五)——java.util.Vector类

    JDK1.8源码(五)--java.lang. https://www.cnblogs.com/IT-CPC/p/10897559.html

  2. kali linux 的基本命令

    Kali Linux 命令集 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统 ...

  3. Pytest 系列(24)- allure 环境准备

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html allure 和 pytest 相 ...

  4. Docker(41)- Portainer 可视化面板安装

    Portainer docker run -d -p 8080:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock ...

  5. Sentry Web 前端监控 - 最佳实践(官方教程)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  6. 【Git】给不同目录配置不同的用户名和邮箱

    场景 使用 git 时,对于公司项目和个人项目想用不同的用户名和邮箱提交,简单的解决方式就是对 git 仓库单独配置 user.name 和 user.email: 直接修改当前仓库的 .git/co ...

  7. MAC地址知识

    1. 全球唯一无法保障. 软件工具可以修改网卡的MAC地址 2.不需要全球唯一. 只要保障局域网内不重复就行.    路由器 保证 数据在不同局域网内跳转.   如果局域网内使用集线器,那么可以设置相 ...

  8. qsc oj-17 喵哈哈村的排队

    http://qscoj.cn/problem/17/ 喵哈哈村的排队 描述 有一堆喵哈哈村的村民们在排队,他们从队列的尾部开始标号,标号为1的村民站在最后面,标号为n的村民站在队列的最前面,而且每个 ...

  9. 【C++基础教程】第四课

    上次的课后练习 第1题输出: 第二题输出:1 第三题: #include<iostream> #include<cmath> using namespace std; int ...

  10. js屏蔽右键代码

    <script type="text/javascript"> document.body.oncontextmenu=document.body.ondragstar ...