当前位置:首页 > VUE

vue 实现toast

2026-03-27 07:51:15VUE

实现 Vue Toast 的几种方法

使用第三方库(推荐)

vue-toastification 是一个流行的 Vue Toast 库,安装简单且功能丰富。

安装:

npm install vue-toastification@next

在 main.js 中引入:

import Toast from "vue-toastification"
import "vue-toastification/dist/index.css"

const app = createApp(App)
app.use(Toast)

使用示例:

this.$toast("Hello world!")
this.$toast.success("Success!")
this.$toast.error("Error occurred")

自定义组件实现

创建一个 Toast 组件 Toast.vue:

vue 实现toast

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

<script>
export default {
  data() {
    return {
      show: false,
      message: ''
    }
  },
  methods: {
    display(message, duration = 3000) {
      this.message = message
      this.show = true
      setTimeout(() => {
        this.show = false
      }, duration)
    }
  }
}
</script>

<style>
.toast {
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  padding: 12px 24px;
  background: rgba(0,0,0,0.7);
  color: white;
  border-radius: 4px;
  z-index: 9999;
}
</style>

在 main.js 中全局注册:

import Toast from '@/components/Toast'

const app = createApp(App)
app.component('Toast', Toast)

使用方式:

this.$refs.toast.display('Hello world')

使用 Vue 插件方式

创建 toast.js 插件:

vue 实现toast

export default {
  install(app) {
    app.config.globalProperties.$toast = {
      show(message, duration = 3000) {
        const toast = document.createElement('div')
        toast.className = 'toast-message'
        toast.textContent = message
        document.body.appendChild(toast)

        setTimeout(() => {
          document.body.removeChild(toast)
        }, duration)
      }
    }
  }
}

在 main.js 中引入:

import toast from './plugins/toast'

const app = createApp(App)
app.use(toast)

使用方式:

this.$toast.show('This is a toast message')

样式补充

对于自定义实现,添加 CSS:

.toast-message {
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  padding: 12px 24px;
  background: rgba(0,0,0,0.8);
  color: white;
  border-radius: 4px;
  z-index: 9999;
  animation: fadeIn 0.3s, fadeOut 0.3s 2.7s;
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes fadeOut {
  from { opacity: 1; }
  to { opacity: 0; }
}

每种方法各有优劣,第三方库功能最全但增加包体积,自定义实现更轻量但需要自行处理更多细节。根据项目需求选择合适方案。

标签: vuetoast
分享给朋友:

相关文章

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:用…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…

vue实现dag

vue实现dag

Vue实现DAG(有向无环图) 在Vue中实现DAG(Directed Acyclic Graph,有向无环图)通常涉及数据结构的建模、可视化渲染以及交互逻辑处理。以下是关键实现步骤和示例代码: 数…

vue实现梯形

vue实现梯形

在Vue中实现梯形效果,可以通过CSS的transform属性或clip-path属性来实现。以下是几种常见的实现方法: 使用CSS transform实现梯形 通过CSS的transform: s…

vue怎么实现直播

vue怎么实现直播

Vue实现直播的方法 使用Vue实现直播功能通常需要结合第三方直播服务或WebRTC技术。以下是几种常见的实现方式: 使用第三方直播服务 集成如腾讯云、阿里云或七牛云等提供的直播SDK,通过他们的A…

vue实现左右菜单

vue实现左右菜单

实现左右菜单的基本思路 使用Vue实现左右菜单通常需要两个主要组件:左侧的导航菜单和右侧的内容区域。左侧菜单用于导航,右侧区域根据菜单选择动态展示内容。 创建左侧菜单组件 左侧菜单通常是一个列表,可…