VUE:vue中使用toast

2024-06-06 13:32

本文主要是介绍VUE:vue中使用toast,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

新建JS
/*** 自定义 提示框( Toast )组件*/
var Toast = {};
var showToast = false, // 存储toast显示状态showLoad = false, // 存储loading显示状态toastVM = null, // 存储toast vmloadNode = null; // 存储loading节点元素Toast.install = function (Vue, options) {// 参数var opt = {defaultType: 'bottom',duration: '1500',wordWrap: false};for (var property in options) {opt[property] = options[property];}Vue.prototype.$toast = function (tips, type) {var curType = type ? type : opt.defaultType;var wordWrap = opt.wordWrap ? 'lx-word-wrap' : '';var style = opt.width ? 'style="width: ' + opt.width + '"' : '';var tmp = '<div v-show="show" :class="type" class="lx-toast ' + wordWrap + '" ' + style + '>{{tip}}</div>';if (showToast) {// 如果toast还在,则不再执行return;}if (!toastVM) {var toastTpl = Vue.extend({data: function () {return {show: showToast,tip: tips,type: 'lx-toast-' + curType}},template: tmp});toastVM = new toastTpl()var tpl = toastVM.$mount().$el;document.body.appendChild(tpl);}toastVM.type = 'lx-toast-' + curType;toastVM.tip = tips;toastVM.show = showToast = true;setTimeout(function () {toastVM.show = showToast = false;}, opt.duration)};['bottom', 'center', 'top'].forEach(function (type) {Vue.prototype.$toast[type] = function (tips) {return Vue.prototype.$toast(tips, type)}});Vue.prototype.$loading = function (tips, type) {if (type == 'close') {loadNode.show = showLoad = false;} else {if (showLoad) {// 如果loading还在,则不再执行return;}var loadTpl = Vue.extend({data: function () {return {show: showLoad}},template: '<div v-show="show" class="lx-load-mark"><div class="lx-load-box"><div class="lx-loading"><div class="loading_leaf loading_leaf_0"></div><div class="loading_leaf loading_leaf_1"></div><div class="loading_leaf loading_leaf_2"></div><div class="loading_leaf loading_leaf_3"></div><div class="loading_leaf loading_leaf_4"></div><div class="loading_leaf loading_leaf_5"></div><div class="loading_leaf loading_leaf_6"></div><div class="loading_leaf loading_leaf_7"></div><div class="loading_leaf loading_leaf_8"></div><div class="loading_leaf loading_leaf_9"></div><div class="loading_leaf loading_leaf_10"></div><div class="loading_leaf loading_leaf_11"></div></div><div class="lx-load-content">' + tips + '</div></div></div>'});loadNode = new loadTpl();var tpl = loadNode.$mount().$el;document.body.appendChild(tpl);loadNode.show = showLoad = true;}};['open', 'close'].forEach(function (type) {Vue.prototype.$loading[type] = function (tips) {return Vue.prototype.$loading(tips, type)}});
}// 向外暴露接口
module.exports = Toast;
新建CSS
/*** Toast 样式*/
.lx-toast {position: fixed;bottom: 100px;left: 50%;box-sizing: border-box;max-width: 80%;height: 40px;line-height: 20px;padding: 10px 20px;transform: translateX(-50%);-webkit-transform: translateX(-50%);text-align: center;z-index: 9999;/*font-size: 14px;*/font-size: 30px;color: #fff;border-radius: 5px;background: rgba(0, 0, 0, 0.7);animation: show-toast .5s;-webkit-animation: show-toast .5s;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}.lx-toast.lx-word-wrap {width: 80%;white-space: inherit;height: auto;
}.lx-toast.lx-toast-top {top: 50px;bottom: inherit;
}.lx-toast.lx-toast-center {top: 50%;margin-top: -20px;bottom: inherit;
}@keyframes show-toast {from {opacity: 0;transform: translate(-50%, -10px);-webkit-transform: translate(-50%, -10px);}to {opacity: 1;transform: translate(-50%, 0);-webkit-transform: translate(-50%, 0);}
}.lx-load-mark {position: fixed;left: 0;top: 0;width: 100%;height: 100%;z-index: 9999;
}.lx-load-box {position: fixed;z-index: 3;width: 7.6em;min-height: 7.6em;top: 180px;left: 50%;margin-left: -3.8em;background: rgba(0, 0, 0, 0.7);text-align: center;border-radius: 5px;color: #FFFFFF;
}.lx-load-content {margin-top: 64%;font-size: 14px;
}.lx-loading {position: absolute;width: 0px;left: 50%;top: 38%;
}.loading_leaf {position: absolute;top: -1px;opacity: 0.25;
}.loading_leaf:before {content: " ";position: absolute;width: 9.14px;height: 3.08px;background: #d1d1d5;box-shadow: rgba(0, 0, 0, 0.0980392) 0px 0px 1px;border-radius: 1px;-webkit-transform-origin: left 50% 0px;transform-origin: left 50% 0px;
}.loading_leaf_0 {-webkit-animation: opacity-0 1.25s linear infinite;animation: opacity-0 1.25s linear infinite;
}.loading_leaf_0:before {-webkit-transform: rotate(0deg) translate(7.92px, 0px);transform: rotate(0deg) translate(7.92px, 0px);
}.loading_leaf_1 {-webkit-animation: opacity-1 1.25s linear infinite;animation: opacity-1 1.25s linear infinite;
}.loading_leaf_1:before {-webkit-transform: rotate(30deg) translate(7.92px, 0px);transform: rotate(30deg) translate(7.92px, 0px);
}.loading_leaf_2 {-webkit-animation: opacity-2 1.25s linear infinite;animation: opacity-2 1.25s linear infinite;
}.loading_leaf_2:before {-webkit-transform: rotate(60deg) translate(7.92px, 0px);transform: rotate(60deg) translate(7.92px, 0px);
}.loading_leaf_3 {-webkit-animation: opacity-3 1.25s linear infinite;animation: opacity-3 1.25s linear infinite;
}.loading_leaf_3:before {-webkit-transform: rotate(90deg) translate(7.92px, 0px);transform: rotate(90deg) translate(7.92px, 0px);
}.loading_leaf_4 {-webkit-animation: opacity-4 1.25s linear infinite;animation: opacity-4 1.25s linear infinite;
}.loading_leaf_4:before {-webkit-transform: rotate(120deg) translate(7.92px, 0px);transform: rotate(120deg) translate(7.92px, 0px);
}.loading_leaf_5 {-webkit-animation: opacity-5 1.25s linear infinite;animation: opacity-5 1.25s linear infinite;
}.loading_leaf_5:before {-webkit-transform: rotate(150deg) translate(7.92px, 0px);transform: rotate(150deg) translate(7.92px, 0px);
}.loading_leaf_6 {-webkit-animation: opacity-6 1.25s linear infinite;animation: opacity-6 1.25s linear infinite;
}.loading_leaf_6:before {-webkit-transform: rotate(180deg) translate(7.92px, 0px);transform: rotate(180deg) translate(7.92px, 0px);
}.loading_leaf_7 {-webkit-animation: opacity-7 1.25s linear infinite;animation: opacity-7 1.25s linear infinite;
}.loading_leaf_7:before {-webkit-transform: rotate(210deg) translate(7.92px, 0px);transform: rotate(210deg) translate(7.92px, 0px);
}.loading_leaf_8 {-webkit-animation: opacity-8 1.25s linear infinite;animation: opacity-8 1.25s linear infinite;
}.loading_leaf_8:before {-webkit-transform: rotate(240deg) translate(7.92px, 0px);transform: rotate(240deg) translate(7.92px, 0px);
}.loading_leaf_9 {-webkit-animation: opacity-9 1.25s linear infinite;animation: opacity-9 1.25s linear infinite;
}.loading_leaf_9:before {-webkit-transform: rotate(270deg) translate(7.92px, 0px);transform: rotate(270deg) translate(7.92px, 0px);
}.loading_leaf_10 {-webkit-animation: opacity-10 1.25s linear infinite;animation: opacity-10 1.25s linear infinite;
}.loading_leaf_10:before {-webkit-transform: rotate(300deg) translate(7.92px, 0px);transform: rotate(300deg) translate(7.92px, 0px);
}.loading_leaf_11 {-webkit-animation: opacity-11 1.25s linear infinite;animation: opacity-11 1.25s linear infinite;
}.loading_leaf_11:before {-webkit-transform: rotate(330deg) translate(7.92px, 0px);transform: rotate(330deg) translate(7.92px, 0px);
}@-webkit-keyframes opacity-0 {0% {opacity: 0.25;}0.01% {opacity: 0.25;}0.02% {opacity: 1;}60.01% {opacity: 0.25;}100% {opacity: 0.25;}
}@-webkit-keyframes opacity-1 {0% {opacity: 0.25;}8.34333% {opacity: 0.25;}8.35333% {opacity: 1;}68.3433% {opacity: 0.25;}100% {opacity: 0.25;}
}@-webkit-keyframes opacity-2 {0% {opacity: 0.25;}16.6767% {opacity: 0.25;}16.6867% {opacity: 1;}76.6767% {opacity: 0.25;}100% {opacity: 0.25;}
}@-webkit-keyframes opacity-3 {0% {opacity: 0.25;}25.01% {opacity: 0.25;}25.02% {opacity: 1;}85.01% {opacity: 0.25;}100% {opacity: 0.25;}
}@-webkit-keyframes opacity-4 {0% {opacity: 0.25;}33.3433% {opacity: 0.25;}33.3533% {opacity: 1;}93.3433% {opacity: 0.25;}100% {opacity: 0.25;}
}@-webkit-keyframes opacity-5 {0% {opacity: 0.270958333333333;}41.6767% {opacity: 0.25;}41.6867% {opacity: 1;}1.67667% {opacity: 0.25;}100% {opacity: 0.270958333333333;}
}@-webkit-keyframes opacity-6 {0% {opacity: 0.375125;}50.01% {opacity: 0.25;}50.02% {opacity: 1;}10.01% {opacity: 0.25;}100% {opacity: 0.375125;}
}@-webkit-keyframes opacity-7 {0% {opacity: 0.479291666666667;}58.3433% {opacity: 0.25;}58.3533% {opacity: 1;}18.3433% {opacity: 0.25;}100% {opacity: 0.479291666666667;}
}@-webkit-keyframes opacity-8 {0% {opacity: 0.583458333333333;}66.6767% {opacity: 0.25;}66.6867% {opacity: 1;}26.6767% {opacity: 0.25;}100% {opacity: 0.583458333333333;}
}@-webkit-keyframes opacity-9 {0% {opacity: 0.687625;}75.01% {opacity: 0.25;}75.02% {opacity: 1;}35.01% {opacity: 0.25;}100% {opacity: 0.687625;}
}@-webkit-keyframes opacity-10 {0% {opacity: 0.791791666666667;}83.3433% {opacity: 0.25;}83.3533% {opacity: 1;}43.3433% {opacity: 0.25;}100% {opacity: 0.791791666666667;}
}@-webkit-keyframes opacity-11 {0% {opacity: 0.895958333333333;}91.6767% {opacity: 0.25;}91.6867% {opacity: 1;}51.6767% {opacity: 0.25;}100% {opacity: 0.895958333333333;}
}
main.js中全局引入
// 全局引入Toast
import './components/Toast/toast.css';
import Toast from './components/Toast/index';
Vue.use(Toast);
页面调用
    <div><!-- 标题栏 --><mt-header title="提示框"><router-link to="/" slot="left"><mt-button icon="back">返回</mt-button></router-link></mt-header><!-- 内容 --><button @click="openTop()">top</button><button @click="openCenter()">该商标分类已加入购物车!</button><button @click="openBottom()">bottom</button><button @click="openLoading()">loading</button></div>
  methods: {openCenter(){this.$toast.center('该商标分类已加入购物车!');},
效果图

在这里插入图片描述

这篇关于VUE:vue中使用toast的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036247

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud