封装一个的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开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
随机推荐
- IDEA使用教程+JRebel破解
下载与安装 https://www.jetbrains.com 不装任何插件 破解码 K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZW ...
- TDSQL(MySQL版)之DB组件升级
随着数据库产品的更新迭代,修复bug等等,产品避免不了会出现升级的需求.TDSQL(MysqL版)也会有这方面的需求.接下来我就说说如何对现有TDSQL(MySQL版)集群组件进行升级,而不影响业务. ...
- Appium问题解决方案(3)- java.lang.IllegalStateException: UiAutomation not connected!
背景 连着手机,运行脚本,一段时间之后就报错了,看了Appium-server,发现报了这样一个错误 如何解决呢? 步骤一 通过 adb devices ,确定设备是否已连接上 步骤二(最终解决方案) ...
- 知乎大佬图文并茂的epoll讲解,看不懂的去砍他
select.poll.epoll的文章很多,自己也看过不少经典好文.不过第一次看到讲的如此通俗易懂.又图文并茂的.因此拿来分享下,供后续翻看学习. 原文链接:https://zhuanlan.zhi ...
- STP(生成树)的概述和工作原理
一.STP的简介 二.STP的概述 三.STP的工作原理 四.生成树的算法 五.BPDU(桥协议数据单元) 六.STP收敛 TP简介 STP - Spanning Tree Protocol(生成树协 ...
- Spring Boot中使用@Async的时候,千万别忘了线程池的配置!
上一篇我们介绍了如何使用@Async注解来创建异步任务,我可以用这种方法来实现一些并发操作,以加速任务的执行效率.但是,如果只是如前文那样直接简单的创建来使用,可能还是会碰到一些问题.存在有什么问题呢 ...
- React项目中应用TypeScript
一.前言 单独的使用typescript 并不会导致学习成本很高,但是绝大部分前端开发者的项目都是依赖于框架的 例如和vue.react 这些框架结合使用的时候,会有一定的门槛 使用 TypeScri ...
- 论文解读(SimCLR)《A Simple Framework for Contrastive Learning of Visual Representations》
1 题目 <A Simple Framework for Contrastive Learning of Visual Representations> 作者: Ting Chen, Si ...
- CodeForce-799B T-shirt buying (STL_set)
有 n 件T恤.第 i 件T恤的价格为 pi .每个T恤有两面,第 i 件T恤正面颜色为 ai ,反面颜色为 bi . 有 m 个人想买T恤,每个人都恰好买一件.第 j 个人最喜欢颜色 cj. 一个人 ...
- 【简单数据结构】二叉树的建立和递归遍历--洛谷 P1305
题目描述 输入一串二叉树,用遍历前序打出. 输入格式 第一行为二叉树的节点数n.(n \leq 26n≤26) 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输出格式 前序 ...