VUE自定义吐司toast

2023-10-08 03:20
文章标签 自定义 vue toast 吐司

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

一个在学习vue的小白,各种折腾,最近页面需要用到toast,故查了部分资料。

使用toast有两个方式,

一个是使用第三方插件(这个网上很多,大家可以自行搜索,上个链接供大家参考https://www.npmjs.com/package/vue2-toast);

另一个方式是自定义一个toast,效果见下图:

文件目录:

index.js文件代码:

import Vue from 'vue'
import toast from './toast.vue'
// 创建组件构造器
const toastHonor = Vue.extend(toast);export default function ({text="要显示的内容",time=2000,type=undefined}={}) {return new Promise((reslove, reject) => {let toastComponent = new toastHonor({el: document.createElement('div')});toastComponent.text = text;toastComponent.time = time;toastComponent.type = type;//插入到bodydocument.body.appendChild(toastComponent.$el)// 回调函数toastComponent.close = function () {reslove();};})
}

toast.vue组件代码:

<template><transition @before-leave="beforeLeave" @after-leave="afterLeave" name="slide-fade"><div @click="hideToast" v-show="isShow" class="toast"><div class="main"><div v-if="type" class="icon-box" flex="main:center cross:center"><i v-show="type==='succeed'" class="iconfont icon-ic_select_simple font30 orange2"></i></div><div class="text">{{text}}</div></div></div></transition></template><script>export default {props: {text: {type: String},time: {type: Number},type: {type: String},},mounted() {this.$nextTick(() => {this.isShow = true;this.timer = setTimeout(() => {this.hideToast();}, this.time)});},data() {return {isShow: false,timer: null,};},methods: {hideToast() {this.isShow = false;clearTimeout(this.timer);this.timer = null;},beforeLeave() {this.close();},afterLeave() {document.body.removeChild(this.$el);}}};</script><style scoped>.toast {position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;z-index: 9999;}.main {display: inline-block;padding: 0.5rem 1rem;min-width: 10vm;/*max-width: 4.4rem;*/border-radius: .5rem;background-color: rgba(66, 63, 56, 0.8);}.icon-box {margin: 0 auto .1rem;width: .7rem;height: .7rem;border-radius: 50%;overflow: hidden;background-color: #fff;}.text {font-family: 'Avenir', Helvetica, Arial, sans-serif;font-size: 4vw;/*line-height: 7.5vw;*/color: #fff;}.slide-fade-enter-active {transition: all 0.3s ease;}.slide-fade-leave-active {transition: all 0.3s ease;}.slide-fade-enter {transform: translate(-50%, -1.2rem);opacity: 0;}.slide-fade-leave-to {transform: translate(-50%, 0.5rem);opacity: 0;}</style>

使用方式:

在组件中导入

import toast from "../../components/myToast/index.js";

组件代码--页面部分,一个按钮点击事件触发吐司:

<button @click="showToast">点击显示我的吐司</button>

事件调用方式:

methods:{showToast(){toast({text:"我是吐司,我显示3s",time:3000}).then(()=>{console.log("关闭后执行");}).catch(()=>{})}}

可以根据项目需求修改toast组件,达到项目要求。

大部分内容参考https://blog.csdn.net/weixin_37745920/article/details/101371944。大家可以参照。

这篇关于VUE自定义吐司toast的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE