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

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con