<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
比如我們有一個要求就是:實現一個類似於element ui 的 Toast 單框,而element ui 的 Toast 彈框又不能滿足我們現階段的需求,那麼就可以使用Vue.extend + $mountl來實現。
如下圖
如上圖所示
建立一個Toast.vue 在這個裡面寫你想要的Toast 彈框樣式
<template> <div class="CustToast" :class="type" v-if="showToast"> <span class="icon"> <img :src="iconSrc" /> </span> {{ message }} </div> </template> <script> export default { /** * 自己封裝的Toast v0.2 * params: showToast Boolean 是否啟用toast 預設 false * params: type String toast提示型別 共normal success,fail,warning 四個選項 預設normal * params: message String toast訊息 * params: duration Number toast顯示時間 預設 3000ms * */ name: 'CustToast', data () { return { showToast: true, type: 'normal', message: '訊息提示', duration: 3000 } }, computed: { iconSrc () { window.console.log('當前型別', this.type) const tipType = ['normal', 'success', 'warning', 'fail'] if (tipType.includes(this.type)) { return require(`@/assets/img/common/${this.type}.svg`) } else { // eslint-disable-next-line no-throw-literal throw 'Toast type資料只允許為 normal, success, warning, fail 四種其中的一種,預設為normal' } } } } </script> <style scoped> .CustToast { position: fixed; left: 50%; top: 50%; background: rgb(233, 233, 235); padding: 10px; border-radius: 5px; transform: translate(-50%, -50%); animation: show-toast 0.2s; color: #909399; overflow: hidden; display: flex; align-items: center; } @keyframes show-toast { from { opacity: 0; } to { opacity: 1; } } .success { color: #67c23a; background: rgb(225, 243, 216); } .warning { color: #e6a23c; background: rgb(250, 236, 216); } .fail { color: #f56c6c; background: rgb(253, 226, 226); } .icon img { width: 20px; height: 20px; margin-top: 3px; margin-right: 4px; } </style>
新建一個index.js檔案
在點js 檔案中寫一下程式碼
import vue from 'vue' // 匯入自定義到Toast元件 import CustToast from './CustToast.vue' // 生成一個擴充套件範例構造器 const ToastConstructor = vue.extend(CustToast) // 定義彈出元件的函數 接收三個引數 訊息 toast型別 顯示時間 function showToast (message, type = 'normal', duration = 2000) { // 範例化一個 CustToast.vue const _toast = new ToastConstructor({ data () { return { showToast: true, type: type, message: message, duration: duration } } }) // 把範例化的 CustToast.vue 新增到 body 裡 const element = _toast.$mount().$el document.body.appendChild(element) // duration時間到了後隱藏 setTimeout(() => { _toast.showToast = false }, duration) } // 需要在main.js 裡面使用 Vue.use(showToast); showToast.install = (Vue) => { // 將元件註冊到 vue 的 原型鏈裡去, // 這樣就可以在所有 vue 的範例裡面使用 this.$toast() Vue.prototype.$toast = showToast } // 匯出 export default showToast
在你的vue專案的 main.js 中匯入就可以全域性使用了
使用
使用效果
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45