我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue实现全局的toast组件方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue实现全局的toast组件方式

Vue全局的toast组件

1.创建toast组件

<template>
    <div class="toast" v-if="show">
        {{ msg }}
    </div>
</template>

<style scoped>
    .toast{
        position: fixed;
        left: 50%;
        top: 50%;
        transform: translate(-50%,-50%);
        border-radius: 3px;
        max-width: 200px;
        padding: 10px;
        background: #333;
        color: #fff;
        font-size: 14px;
        opacity: .9;
        text-align: justify;
        word-break: break-all;
        word-wrap: break-word;
    }
</style>

2.创建toast.js文件

import toast from "@/components/toast"
export default (Vue) => {
    let toastComp = Vue.extend(toast);
    function showToast(msg , duration = 3e3){
        let toastDom = new toastComp({
            data(){
                return{
                    show:true,
                    msg
                }
            }
        }).$mount()
        document.body.appendChild(toastDom.$el);
        setTimeout(() => {
            toastDom.show = false
        }, duration)
    }
    Vue.prototype.$toast = showToast;
}

3.安装并使用 

import toast from "@/plugins/toast";
Vue.use(toast);

// 组件里面使用
this.$toast("message");

vue自定义toast组件

//toast.js

const  TOAST_CLASS = 'toast'
const  TOAST_OUT_CLASS = 'toast out'
let innerHtml=""
function  toast(msg,time=1000) {
    let body=document.querySelector('#app');
    if(body.querySelector('.toast')){
        body.removeChild(body.querySelector('.toast'))
    }
    let toastElem = document.createElement('div')
    toastElem.setAttribute('class',TOAST_CLASS)
    innerHtml = `<sapn>${msg}</sapn>`
    toastElem.innerHTML = innerHtml;
    body.appendChild(toastElem);
    setTimeout(function () {
        toastElem.setAttribute('class',TOAST_OUT_CLASS)
    },time)
    setTimeout(function () {
        let elm = body.querySelector('.toast');
        if(elm){
            body.removeChild(elm)
        }
    },time+1000)

}
export  default toast

//toast.less

@-webkit-keyframes toastIn {
  0%{
    opacity: 1;
  }
  50%{
    opacity: 1;
  }
  100%{
    opacity: 1;
  }
}
@-webkit-keyframes toastOut {
  0%{
    opacity:1;
  }
  50%{
    opacity:0.7;
  }
  100%{
    opacity:0;
  }
}
//animation: name duration timing-function delay iteration-count direction;
.toast{
  position: fixed;
  z-index:99;
  background-color: rgba(0,0,0,0.6);
  color:#fff;
  padding:15px 25px;
  border-radius:5px;
  top: 50%;
  left:50%;
  font-size:18px;
  transform: translate(-50% , -50%);
  animation-name: toastIn;
  animation-duration: 1s;
  animation-iteration-count: 1;
  animation-delay: 0s;
}

.toast.out {
  animation-name: toastOut;
  animation-duration: 1s;
  animation-iteration-count: 1;
  animation-delay: 0s;
  animation-fill-mode: forwards;
}

使用

全局注入(main.js),this._toast(‘XXXX’)调用

import toast from "./utils/toast";
window._toast = toast

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue实现全局的toast组件方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue实现全局的toast组件方式

这篇文章主要介绍了Vue实现全局的toast组件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-06

Vue如何实现全局的toast组件

这篇文章主要介绍“Vue如何实现全局的toast组件”,在日常操作中,相信很多人在Vue如何实现全局的toast组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue如何实现全局的toast组件”的疑惑有所
2023-07-05

Vue封装全局toast组件的应用

这篇文章主要介绍“Vue封装全局toast组件的应用”,在日常操作中,相信很多人在Vue封装全局toast组件的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue封装全局toast组件的应用”的疑惑有所
2023-06-20

vue使用Vue.extend创建全局toast组件实例

这篇文章主要介绍了vue使用Vue.extend创建全局toast组件实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-06

vue怎么使用Vue.extend创建全局toast组件

本篇内容主要讲解“vue怎么使用Vue.extend创建全局toast组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么使用Vue.extend创建全局toast组件”吧!Vue.ex
2023-07-05

详解Vue全局组件的挂载之实现弹窗组件

这篇文章主要为大家详细介绍了如何通过Vue全局组件的挂载来实现弹窗组件,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
2022-11-13

如何使用vue实现一个toast弹窗组件

本篇内容介绍了“如何使用vue实现一个toast弹窗组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,我们来分析一下弹窗组件的特性(需
2023-07-04

vue全局组件和局部组件的区别是什么

区别:1、使用范围不同,全局组件可以在页面中任何位置使用,局部组件只能在定义它的el中使用,能再不其他位置使用,否则就无法生效。2、定义组件的方法不同,全局组件可以使用“Vue.component(tagName,options)”定义,局部组件可以通过Vue实例中component属性定义。
2023-05-14

vue全局组件和局部组件的区别有哪些

今天小编给大家分享一下vue全局组件和局部组件的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。区别:1、使用范围不
2023-07-04

编程热搜

目录