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

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可