<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vue教程之toast彈框全局調用示例詳解

        來源:懂視網 責編:小OO 時間:2020-11-27 22:32:47
        文檔

        vue教程之toast彈框全局調用示例詳解

        本文實例為大家分享了vue toast彈框全局調用示例,供大家參考,具體內容如下:1.首選新建一個toast.vue模板文件。this.transition) { return '' } else { if (this.position === 'top') { return 'translate-top' } else if (this.position === 'middle') { return 'translate-middle' } else if (this.position === 'bottom') { return 'translate-bottom' } } }.fadeIn() { // 同上 if (2.主邏輯在toast.js里完成。
        推薦度:
        導讀本文實例為大家分享了vue toast彈框全局調用示例,供大家參考,具體內容如下:1.首選新建一個toast.vue模板文件。this.transition) { return '' } else { if (this.position === 'top') { return 'translate-top' } else if (this.position === 'middle') { return 'translate-middle' } else if (this.position === 'bottom') { return 'translate-bottom' } } }.fadeIn() { // 同上 if (2.主邏輯在toast.js里完成。

        本文實例為大家分享了vue toast彈框全局調用示例,供大家參考,具體內容如下

        1.首選新建一個toast.vue模板文件:

         <template>
         <transition :name="fadeIn">
         <div class="alertBox" v-show="show">
         <div class="alert-mask" v-show="isShowMask"></div>
         <transition :name="translate">
         <div class="box" :class="position" v-show="show">
         {{text}}
         </div>
         </transition>
         </div>
         </transition>
        </template>
        
        <script>
        export default {
         data() {
         return {
         }
         },
         props: {
         show: { // 是否顯示此toast
         default: false
         },
         text: { // 提醒文字
         default: 'loading'
         },
         position: { // 提醒容器位置
         default: 'center'
         },
         isShowMask: { // 是否顯示遮罩層
         default: false
         },
         time: { // 顯示時間
         default: 1500
         },
         transition: { // 是否開啟動畫
         default: true
         }
         },
         mounted() { // 時間控制
         setTimeout(() => {
         this.show = false
         }, this.time)
         },
         computed: {
         translate() { // 根據props,生成相對應的動畫
         if (!this.transition) {
         return ''
         } else {
         if (this.position === 'top') {
         return 'translate-top'
         } else if (this.position === 'middle') {
         return 'translate-middle'
         } else if (this.position === 'bottom') {
         return 'translate-bottom'
         }
         }
         },
         fadeIn() { // 同上
         if (!this.transition) {
         return ''
         } else {
         return 'fadeIn'
         }
         }
         }
        }
        </script>
        
        <style>
         .box{
         position: fixed;
         top: 50%;
         left: 50%;
         width: 100px;
         height: 100px;
         margin-left: -50px;
         margin-top: -50px;
         background: rgba(0,0,0,.5);
         text-align: center;
         line-height: 100px;
         color: #fff;
         font-size: 16px;
         z-index: 5000;
         color: #fff;
         }
         .box.top{
         top: 50px;
         margin-top: 0;
         }
         .box.center{
         top: 50%;
         margin-top: -100px;
         }
         .box.bottom{
         top: auto;
         bottom: 50px;
         margin-top: 0;
         }
         .alert-mask{
         position: fixed;
         left: 0;
         top: 0;
         bottom: 0;
         right: 0;
         background: rgba(0,0,0,.5);
         z-index: 4999;
         }
         .fadeIn-enter-active, .fadeIn-leave-active{
         transition: opacity .3s;
         }
         .fadeIn-enter, .fadeIn-leave-active{
         opacity: 0;
         }
         .translate-top-enter-active, .translate-top-leave-active{
         transition: all 0.3s cubic-bezier(.36,.66,.04,1);
         }
         .translate-top-enter, .translate-top-leave-active{
         transform: translateY(-50%);
         opacity: 0;
         }
         .translate-middle-enter-active, .translate-middle-leave-active{
         transition: all 0.3s cubic-bezier(.36,.66,.04,1);
         }
         .translate-middle-enter, .translate-middle-leave-active{
         transform: translateY(80%);
         opacity: 0;
         }
         .translate-bottom-enter-active, .translate-bottom-leave-active{
         transition: all 0.3s cubic-bezier(.36,.66,.04,1);
         }
         .translate-bottom-enter, .translate-bottom-leave-active{
         transform: translateY(100%);
         opacity: 0;
         }
        </style>
        
        

        2.主邏輯在toast.js里完成:

        var Alert = require('./index.vue') // 引入vue模板
        var Toast = {} // 定義插件對象
        Toast.install = function (Vue, options) { // vue的install方法,用于定義vue插件
         // 如果toast還在,則不再執行
         if(document.getElementsByClassName('alertBox').length){ 
         return
         }
         let toastTpl = Vue.extend(Alert) // 創建vue構造器
         // el:提供一個在頁面上已存在的DOM元素作為Vue實例的掛載目標。可以是css選擇器,也可以是HTMLElement實例。
         // 在實例掛載之后,可以通過$vm.$el訪問。
         // 如果這個選項在實例化時有用到,實例將立即進入編譯過程。否則,需要顯示調用vm.$mount()手動開啟編譯(如下)
         // 提供的元素只能作為掛載點。所有的掛載元素會被vue生成的dom替換。因此不能掛載在頂級元素(html, body)上
         // let $vm = new toastTpl({
         // el: document.createElement('div')
         // })
         let $vm = new toastTpl() // 實例化vue實例
         // 此處使用$mount來手動開啟編譯。用$el來訪問元素,并插入到body中
         let tpl = $vm.$mount().$el
         document.body.appendChild(tpl)
        
         Vue.prototype.$toast = { // 在Vue的原型上添加實例方法,以全局調用
         show(options) { // 控制toast顯示的方法
         if (typeof options === 'string') { // 對參數進行判斷
         $vm.text = options // 傳入props
         }
         else if (typeof options === 'object') {
         Object.assign($vm, options) // 合并參數與實例
         }
         $vm.show = true // 顯示toast
         },
         hide() { // 控制toast隱藏的方法
         $vm.show = false
         }
         }
        }
        export default Toast; // 導出Toast(注意:此處不能用module exports導出,在一個文件中,不能同時使用require方式引入,而用module exports導出,兩種方式不能混用)
        
        

        使用:

        在vue項目的主文件中,引入插件,并進行安裝:

        這樣在項目的任何組件里,都可以使用這個toast的彈窗插件了:

        想要更高級的插件學習源碼,請移步vux進行源碼學習  https://vux.li/#/zh-CN/demos/toast

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue教程之toast彈框全局調用示例詳解

        本文實例為大家分享了vue toast彈框全局調用示例,供大家參考,具體內容如下:1.首選新建一個toast.vue模板文件。this.transition) { return '' } else { if (this.position === 'top') { return 'translate-top' } else if (this.position === 'middle') { return 'translate-middle' } else if (this.position === 'bottom') { return 'translate-bottom' } } }.fadeIn() { // 同上 if (2.主邏輯在toast.js里完成。
        推薦度:
        標簽: VUE 教程 toast
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 67194熟妇在线永久免费观看| 中文字幕在线免费看| 免费在线观看视频网站| 久久精品国产亚洲av麻豆| 女人隐私秘视频黄www免费| 亚洲色偷偷偷鲁综合| 国产伦一区二区三区免费| 亚洲高清乱码午夜电影网| 日本成人在线免费观看| 国产亚洲精品91| 久久国产成人精品国产成人亚洲| 一级美国片免费看| 91网站免费观看| 国产亚洲精品成人AA片| 99视频在线免费| 亚洲国产成a人v在线观看| 国产色无码精品视频免费| 亚洲AV无码成人专区片在线观看| 久久免费看少妇高潮V片特黄| 好爽好紧好大的免费视频国产| 日韩在线视频线视频免费网站| 无码中文在线二区免费| 久久亚洲成a人片| 免费视频专区一国产盗摄| 久久精品国产亚洲AV网站 | 亚洲日韩欧洲乱码AV夜夜摸| 亚洲一区二区在线免费观看| 亚洲国产精品成人精品小说| 色吊丝永久在线观看最新免费| 亚洲精品无码久久久久久久| 成年轻人网站色免费看| 亚洲国产成人精品无码区在线网站| a级毛片在线免费| 亚洲丰满熟女一区二区v| 四虎影永久在线高清免费| 久久国产乱子伦精品免费强| 4338×亚洲全国最大色成网站| 亚洲AV无码一区二区乱子仑| 亚洲国产精品无码久久SM| 最新中文字幕免费视频| 中国videos性高清免费|