在component下面新建一个toast文件夹,创建toast.vue和toast.js文件
toast.vue

<template><div class="toast" :class="type? `toast--${type}`:''"><p>{{content}}</p></div>
</template>
<script>export default {data(){return{content:'',duration:3000,//定时器时间type:''}},mounted(){setTimeout(() => {this.$destroy(true);//3s后进行销毁this.$el.parentNode.removeChild(this.$el);},this.duration);}}
</script>
<style lang="scss" scoped>
.toast {display: flex;align-items: center;justify-content: center;position: fixed;top: 0;bottom: 0;left: 0;right: 0;color: #fff;z-index: 9999;background: transparent;p {padding:0.24rem 0.44rem;font-size: 0.36rem;border-radius: 0.08rem;background: rgba(17, 17, 17, 0.7);}&--error p { background: rgba(255, 0, 0, 0.5); }&--success p { background: rgba(0, 255, 0, 0.5); }
}</style>

toast.js
使用基础 Vue.extend() 构造器,创建一个“子类”。参数是一个包含组件选项的对象。

import Vue from 'vue';
import main from './toast.vue';
const ToastConstructor = Vue.extend(main);
let instance;
const Toast = function (options){instance = new ToastConstructor({data:options}).$mount();//渲染组件document.body.appendChild(instance.$el);//将组件挂载在body下
};
//当需要成功或者失败的回调时,可以选择以下方法
['success','error'].forEach((item)=>{Toast[item]=options=>{options.type=item;return Toast(options);}
})
export default Toast;

在main.js中引入toast.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import Toast from '@/components/toast/toast.js';
Vue.config.productionTip = false;
// 将组件注册到 vue 的 原型链里去,
// 这样就可以在所有 vue 的实例里面使用 this.$Toast()
// Vue.prototype.$Toast= Toast
Vue.prototype.$Toast=Toast;
new Vue({router,store,render: h => h(App)
}).$mount('#app')

在需要的页面可以通过this.$ Toast({content:‘老铁666’, duration:2000 });进行调用,需要成功的回调时可以通过this.$Toast.success({参数}),失败的回调跟成功的回调一样,将success替换成error即可

vue实现自定义弹窗相关推荐

  1. Vue中自定义弹窗组件

    定义一个popup组件,用于自定义弹窗,其中showpo是用于显示弹窗 一下是子组件popup的主体框架 Mask和main_popup的css样式如下 在子组件中使用props来接受父组件传递过来的 ...

  2. vue自定义弹窗dialog,vue 点击遮罩层功能区以外的地方关闭遮罩层

    vue自定义弹窗dialog,vue 点击遮罩层功能区以外的地方关闭遮罩层 1.示例展示 2.代码 <template><div class="content"& ...

  3. 从零开始徒手撸一个vue的toast弹窗组件

    相信普通的vue组件大家都会写,定义 -> 引入 -> 注册 -> 使用,行云流水,一气呵成,但是如果我们今天是要自定义一个弹窗组件呢? 首先,我们来分析一下弹窗组件的特性(需求): ...

  4. 微信H5、移动端自定义弹窗事件穿透、底层页面滑动解决方案

    前言 之前有个项目是运行在移动端Web,和微信H5中,由于默认的弹窗UI不太好看,而且还不统一,所以页面需要自定义弹窗,添加icon.提示信息.操作按扭等样式. 问题描述: 如果在页面内容的高度超过了 ...

  5. flutter -各类自定义弹窗(图片预览,输入框,键盘)以及如何阻止事件冒泡

    开局废话:由于公司app后期需要做混合开发,又担心h5的性能问题.于是迫不得已,只能两端齐搞,验证一些性能优化的问题.打开了一年前flutter正式发布时,蹭热度创建的现已布满藤蔓的仓库,微微颤抖的双 ...

  6. 怎么将vue模板转换为html,vue中自定义html文件的模板

    如果默认生成的 HTML 文件不适合需求,可以创建/使用自定义模板. 一是通过 inject 选项,然后传递给定制的 HTML 文件.html-webpack-plugin 将会自动注入所有需要的 C ...

  7. Vue的自定义滚动,我用el-scrollbar

    弄了一个持续更新的github笔记,可以去看看,诚意之作(本来就是写给自己看的--)链接地址:Front-End-Basics 此篇文章的地址:Vue的自定义滚动,我用el-scrollbar 基础笔 ...

  8. flutter自定义弹窗

    今天接到这样一个需求,需要自定义弹窗,所以就有了如下的代码: 通过分析,一切皆widget 所以可以这样实现: import 'package:flutter/cupertino.dart'; imp ...

  9. 简单了解Vue的自定义组件与生命周期

    Vue的自定义组件 定义格式 Vue.component(组件名称, { props:组件的属性, data: 组件的数据函数, template: 组件解析的标签模板 }) 代码解析(详细解释在注解 ...

最新文章

  1. Fedora升级到4.3.4内核后virtualbox执行/sbin/rcvboxdrv setup报Bad argument setup
  2. CentoS7 and MySql 5.7下载安装
  3. 通信网真的面临容量危机?
  4. SQL Server 日志数据库清理办法
  5. SpringBoot中.properties文件中配置项显示到页面中文乱码解决
  6. mysql可视化创建外键说明_关于使用可视化图形工具navicat for mysql来创建外键的步骤...
  7. 运用计算机怎么实现自动化,如何用计算机串口实现自动化控制
  8. 【IDEA】IDEA中部署的项目添加Tomcat自带的一些项目
  9. MATLAB通信系统建模与仿真
  10. 基本概念学习(8006)--南桥芯片
  11. 利用计算机发布调度命令时必须严格遵守,调度命令规范格式(22页)-原创力文档...
  12. 用通俗的语言解释贝叶斯公式
  13. 调用阿里API实现图片验证码识别
  14. 台式计算机如何设置无线网络,台式电脑怎么设置无线网络
  15. Processing残影拖尾效果实现套路分享
  16. 王宇阳:六个案例里的SEO启发
  17. 使用华为云云耀服务器安装宝塔面板
  18. 我参加第七届NVIDIA Sky Hackathon——训练ASR模型
  19. 各种屏幕录像软件使用教程及效果对比
  20. MVG学习笔记(3) --从多个视角重建

热门文章

  1. 时间复杂度,空间复杂度(超详细)真香
  2. 使用生成式模型来改进旅游产品和服务的生成质量 GANs for Travel:A Review of Generative Recommendations
  3. 1.airflow的安装
  4. 服务器封UDP有什么用
  5. 好消息!2020青少年编程等级考试开始报名,在家就能考!
  6. iOS应用程序安全(11)-分析使用HTTP/HTTPS的网络流量
  7. 分享一组Rpg Marker人物行走,游戏素材图片,共58张图片
  8. 小米2及其他手机无法连接mac
  9. 冒泡排序java思维导图_基本算法--冒泡排序
  10. 读点书:程序员数学123简谈