home.vue
<template>
<div>
<el-button @click="toToast"> 显示 </el-button>
</div>
</template>
<script>
import { showToast } from "./toast.js";
export default {
methods: {
toToast() {
showToast("测试", 1500);
},
},
};
</script>
<style lang="scss" scoped>
</style>
toast.js
import Vue from "vue";
import Toast from './toast.vue'
const ToastCtor=Vue.extend(Toast)
export function showToast(content,delay){
const toastComp=new ToastCtor().$mount()
document.body.appendChild(toastComp.$el)
toastComp.toShow(content)
setTimeout(() => {
toastComp.toClose()
toastComp.$el.parentNode.removeChild(toastComp.$el)
}, delay);
}
toast.vue
<template>
<!-- <div class="toast" v-if="show">{{message}}</div> -->
<div class="toast" v-show="show">{{message}}</div>
</template>
<script>
export default {
data() {
return {
show: false,
message:'',
};
},
methods: {
toShow(content) {
this.message=content
this.show = true;
},
toClose() {
this.show = false;
},
},
};
</script>
<style lang="scss" scoped>
.toast {
position: fixed;
top: 10px;
left: 50%;
padding: 10px 20px;
background: rgba(22, 21, 21, 0.658);
color: #fff;
font-size: 14px;
border-radius: 6px;
min-width: 80px;
text-align: center;
}
</style>