成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

開發(fā)一個簡單的 Vue 彈窗組件

hiyang / 3460人閱讀

摘要:取消確認(rèn)現(xiàn)在彈窗組件的結(jié)構(gòu)已經(jīng)搭建出來了。另外還有兩個方法,分別是點擊取消和確認(rèn)的回調(diào)函數(shù),它們的作用是觸發(fā)對應(yīng)的事件。到這里,一個簡單的彈窗組件已經(jīng)完成了樣式后面再說。一個彈窗組件的拖拽一般通過三個事件來控制,分別是。

更多文章

一個彈窗組件通常包含兩個部分,分別是遮罩層和內(nèi)容層。

遮罩層是背景層,一般是半透明或不透明的黑色。

內(nèi)容層是放我們要展示的內(nèi)容的容器。

現(xiàn)在彈窗組件的結(jié)構(gòu)已經(jīng)搭建出來了。

modal-bg: 遮罩層

modal-container: 內(nèi)容層容器

modal-header: 內(nèi)容層頭部

modal-main: 內(nèi)容層主體部分(用來展示內(nèi)容)

modal-footer: 內(nèi)容層腳部

屬性 v-show: 控制彈窗的展示與關(guān)閉

屬性 title: 標(biāo)題

方法 hideModal: 點擊取消的回調(diào)函數(shù)

方法 submit: 點擊確認(rèn)的回調(diào)函數(shù)

插槽 slot: 用來展示內(nèi)容

定義完 HTML 結(jié)構(gòu),還得定義組件的 props 屬性,用來接收父組件的傳參,以方便在父組件通過屬性來控制彈窗。

export default {
    name: "modal",
    props: {
        show: {
            type: Boolean,
            default: false
        },
        title: {
            type: String,
            default: ""
        },
    },
    methods: {
        hideModal() {
            this.$emit("hideModal")
        },

        submit() {
            this.$emit("submit")
        },
    }
}

從上述代碼可知,組件只有兩個 prop 屬性,分別是 show(控制彈窗展示與關(guān)閉)和 title(彈窗標(biāo)題)。
另外還有兩個方法,分別是點擊取消和確認(rèn)的回調(diào)函數(shù),它們的作用是觸發(fā)對應(yīng)的事件。
到這里,一個簡單的彈窗組件已經(jīng)完成了(樣式后面再說)。

如何調(diào)用

一個組件寫完了,要怎么調(diào)用呢?

假設(shè)這個組件的文件名為 Modal.vue,我們在父組件里這樣調(diào)用 (假設(shè)父組件和彈窗組件在同一文件夾下)。


    

這里放彈窗的內(nèi)容

import Modal from "./Modal.vue"
export default {
    data() {
      return {
        title: "彈窗標(biāo)題",
        show: true,
      }
    },
    components: {
        Modal
    },
    methods: {
        hideModal() {
            // 取消彈窗回調(diào)
            this.show = false
        },

        submit() {
            // 確認(rèn)彈窗回調(diào)
            this.show = false
        }
    }
}

把子組件要求的兩個屬性和兩個方法都寫上,現(xiàn)在來看看這個彈窗的效果。

一個簡單的彈窗組件就這樣完成了。

改進(jìn) 樣式

現(xiàn)在市面上的 UI 庫特別多,所以一些通用的組件樣式不建議自己寫,直接用現(xiàn)成的就好。在這個組件上,我們可以使用 element-ui,改造后變成這樣。

嗯... 看起來只有兩個按鈕變化了,不過沒關(guān)系,后面的內(nèi)容部分肯定還有用得上的時候。

功能

看起來這個簡單的彈窗組件真的是非常簡單,我們可以在此基礎(chǔ)上適當(dāng)?shù)脑黾右恍┕δ?,例如:拖拽?/p>

一個彈窗組件的拖拽一般通過三個事件來控制,分別是 mousedown、mousemove、mouseup。

mousedown 用來獲取鼠標(biāo)點擊時彈窗的坐標(biāo)

mousemove 用來計算鼠標(biāo)移動時彈窗的坐標(biāo)

mouseup 取消彈窗的移動

先來看代碼。

在彈窗上增加了三個事件 mousedownmousemove、mouseup,用來控制彈窗移動(點擊彈窗頭部進(jìn)行拖拽)。

    data() {
        return {
            x: 0, // 彈窗 X 坐標(biāo)
            y: 0, // 彈窗 Y 坐標(biāo)
            node: null, // 彈窗元素
            isCanMove: false // 是否能拖動彈窗
        }
    },
    mounted() {
        // 將彈窗元素賦值給 node
        this.node = document.querySelector(".modal-container")
    },
    setStartingPoint(e) {
        this.x = e.clientX - this.node.offsetLeft
        this.y = e.clientY - this.node.offsetTop
        this.isCanMove = true
    },

    modalMove(e) {
        if (this.isCanMove) {
            this.node.style.left = e.clientX - this.x + "px"
            this.node.style.top = e.clientY - this.y + "px"
        } 
    },

    cancelMove() {
        this.isCanMove = false
    }

通過這些新增的代碼,這個彈窗就具有了拖拽的功能。

最后附上這個彈窗組件的完整代碼


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104688.html

相關(guān)文章

  • vue插件開發(fā)練習(xí)--實用彈窗

    摘要:前言上回說了組件組件開發(fā)練習(xí)焦點圖切換的一個練習(xí)項目,這次換下口味,說下的插件練手的項目。和組件開發(fā)的目錄相比,區(qū)別就在于這個文件夾上。開發(fā)過程把項目跑起來首先,先弄這個組件。最后還需要一個變量,控制彈窗是否顯示。 1.前言 上回說了組件(vue組件開發(fā)練習(xí)--焦點圖切換)的一個練習(xí)項目,這次換下口味,說下vue的插件練手的項目。相對于現(xiàn)在之前的焦點圖切換的組件,這個可能就更簡單了,基...

    muzhuyu 評論0 收藏0
  • 從Dialog管理談到Vue渲染原理

    摘要:在組件內(nèi),我們觸及不到組件的模板,所以簡單的在動態(tài)模板上添加并不能完成事件監(jiān)聽。簡單來說,依賴收集是在渲染函數(shù)渲染的函數(shù)中進(jìn)行的,在中一旦通過使用了這個變量,通過這個變量的就收集到了正在執(zhí)行的渲染函數(shù)這一個依賴。 作為一個中后臺表單&表格工程師,經(jīng)常需要在一個頁面中處理多個彈窗。我自己的項目中,一個復(fù)雜的審核頁面中的彈窗數(shù)量超過了30個,如何管理大量的彈窗就成為了一個需要考慮的問題。 ...

    darkbug 評論0 收藏0
  • 關(guān)于 vue 彈窗組件一些感想

    摘要:最近是用開發(fā)了一套組件庫在開發(fā)過程對對于組件化的開發(fā)有一些感想,于是開始記錄下這些。彈窗組件一直是開發(fā)中必備的,使用頻率相當(dāng)高,最常見的莫過于,,這些曾經(jīng)我們都會用來調(diào)試程序不同的組件庫對于彈窗的處理也是不一樣的。 最近是用 vue 開發(fā)了一套組件庫 vue-carbon , 在開發(fā)過程對對于組件化的開發(fā)有一些感想,于是開始記錄下這些。 彈窗組件一直是 web 開發(fā)中必備的,使用頻率相...

    idealcn 評論0 收藏0
  • 基于 Vue 2.0 實現(xiàn)移動端彈窗 (Alert, Confirm, Toast)組件.

    摘要:基于開發(fā)的插件包含仿照原生樣式來源一些想法剛開始的時候想要用現(xiàn)成的彈窗組件來著但是查找一圈沒有發(fā)現(xiàn)比較合適項目的所以才自己開發(fā)了一個包含四種并且可以單個引入的組件開發(fā)實際上比較簡單有興趣的可以看下源碼實現(xiàn)步驟很清晰關(guān)于樣式的問題是直接從魅 wc-messagebox 基于 vue 2.0 開發(fā)的插件 包含 Alert, Confirm, Toast, Prompt 仿照 iOS 原生...

    Darkgel 評論0 收藏0
  • 論如何用Vue實現(xiàn)一個彈窗-一個簡單組件實現(xiàn)

    摘要:前言最近在使用框架,用到了對話框組件,大致實現(xiàn)的效果,跟我之前自己在移動端項目里面弄的一個彈窗組件差不太多?,F(xiàn)在基本上彈窗組件都已實現(xiàn)的差不多了,還差一個彈窗的關(guān)閉事件,這里就涉及到子組件往父組件傳參了。 前言 最近在使用element-ui框架,用到了Dialog對話框組件,大致實現(xiàn)的效果,跟我之前自己在移動端項目里面弄的一個彈窗組件差不太多。然后就想著把這種彈窗組件的實現(xiàn)方式與大家...

    xialong 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<