逆风的方向,更适合飞翔

实现效果

实现步骤

先写出一个toast组件

  1. // Toast.vue
  2. <template>
  3. <div id="toast" :class="[isActive ? 'active' : '', type]">
  4. {{ message }}
  5. </div>
  6. </template>
  7.  
  8. <script>
  9. export default {
  10. name: "Toast",
  11. data() {
  12. return {
  13. message: "",//传递的消息
  14. isActive: false,//是否处于活跃状态(显示在页面内)
  15. type: "",//消息样式
  16. timer1: null,
  17. timer2: null,
  18. };
  19. },
  20. mounted() {
  21. this.$nextTick(() => {
  22. this.isActive = true;
  23. });
  24. this.timer1 = setTimeout(() => {
  25. this.isActive = false;
  26. }, this.delayer);
  27. this.timer2 = setTimeout(() => {
  28. this.$destroy(true);//销毁vue实例
  29. }, this.delayer * 2);
  30. },
  31. destroyed() {
  32. this.$el.parentNode.removeChild(this.$el);//移除dom元素
  33. clearTimeout(this.timer1);
  34. clearTimeout(this.timer2);
  35. },
  36. };
  37. </script>
  38.  
  39. <style scoped>
  40. #toast {
  41. position: fixed;
  42. top: -50px;
  43. left: 50%;
  44. transform: translate(-50%, 0);
  45. padding: 13px 20px;
  46. border-radius: 15px;
  47. z-index: 999;
  48. opacity: 0;
  49. transition: all 1s;
  50. }
  51. #toast.success {
  52. background-color: #f0f9eb;
  53. color: #67c23a;
  54. }
  55. #toast.error {
  56. background-color: #fef0f0;
  57. color: #f56c6c;
  58. }
  59. #toast.active {
  60. top: 30px;
  61. opacity: 1;
  62. }
  63. </style>

注意的点:toast消失后记得销毁vue实例,清空定时器,移除dom元素

封装成一个插件

  1. // index.js
  2. import Toast from "./Toast.vue";
  3. const obj = {};
  4. obj.install = function(Vue) {
  5.  
  6. //1. 创建组件构造器
  7. const toastContrustor = Vue.extend(Toast);
  8.  
  9. Vue.prototype.$toast = function(message, type, delayer = 3000) {
  10.  
  11. //2. new的方式,根据组件构造器,可以创建出来一个组件对象
  12. const toast = new toastContrustor();
  13.  
  14. Object.assign(toast, { message, type, delayer });
  15.  
  16. //3. 将组件对象手动的挂载到一个元素上面
  17.  
  18. toast.$mount(document.createElement("div"));
  19.  
  20. //4. toast.$el对应的就是div
  21. document.body.appendChild(toast.$el);
  22. };
  23. };
  24.  
  25. export default obj;
  1. //main.js
  2. import toast from "components/common/toast";
  3.  
  4. Vue.use(toast);

文件结构

使用

  1. this.$toast("hi,i am spiderman", "success", 5000);
  2.  
  3. 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. IDEA使用教程+JRebel破解

    下载与安装 https://www.jetbrains.com 不装任何插件 破解码 K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZW ...

  2. TDSQL(MySQL版)之DB组件升级

    随着数据库产品的更新迭代,修复bug等等,产品避免不了会出现升级的需求.TDSQL(MysqL版)也会有这方面的需求.接下来我就说说如何对现有TDSQL(MySQL版)集群组件进行升级,而不影响业务. ...

  3. Appium问题解决方案(3)- java.lang.IllegalStateException: UiAutomation not connected!

    背景 连着手机,运行脚本,一段时间之后就报错了,看了Appium-server,发现报了这样一个错误 如何解决呢? 步骤一 通过 adb devices ,确定设备是否已连接上 步骤二(最终解决方案) ...

  4. 知乎大佬图文并茂的epoll讲解,看不懂的去砍他

    select.poll.epoll的文章很多,自己也看过不少经典好文.不过第一次看到讲的如此通俗易懂.又图文并茂的.因此拿来分享下,供后续翻看学习. 原文链接:https://zhuanlan.zhi ...

  5. STP(生成树)的概述和工作原理

    一.STP的简介 二.STP的概述 三.STP的工作原理 四.生成树的算法 五.BPDU(桥协议数据单元) 六.STP收敛 TP简介 STP - Spanning Tree Protocol(生成树协 ...

  6. Spring Boot中使用@Async的时候,千万别忘了线程池的配置!

    上一篇我们介绍了如何使用@Async注解来创建异步任务,我可以用这种方法来实现一些并发操作,以加速任务的执行效率.但是,如果只是如前文那样直接简单的创建来使用,可能还是会碰到一些问题.存在有什么问题呢 ...

  7. React项目中应用TypeScript

    一.前言 单独的使用typescript 并不会导致学习成本很高,但是绝大部分前端开发者的项目都是依赖于框架的 例如和vue.react 这些框架结合使用的时候,会有一定的门槛 使用 TypeScri ...

  8. 论文解读(SimCLR)《A Simple Framework for Contrastive Learning of Visual Representations》

    1 题目 <A Simple Framework for Contrastive Learning of Visual Representations> 作者: Ting Chen, Si ...

  9. CodeForce-799B T-shirt buying (STL_set)

    有 n 件T恤.第 i 件T恤的价格为 pi .每个T恤有两面,第 i 件T恤正面颜色为 ai ,反面颜色为 bi . 有 m 个人想买T恤,每个人都恰好买一件.第 j 个人最喜欢颜色 cj. 一个人 ...

  10. 【简单数据结构】二叉树的建立和递归遍历--洛谷 P1305

    题目描述 输入一串二叉树,用遍历前序打出. 输入格式 第一行为二叉树的节点数n.(n \leq 26n≤26) 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输出格式 前序 ...