国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 封裝自定義指令,監(jiān)聽元素寬高的變化

這篇具有很好參考價值的文章主要介紹了vue3 封裝自定義指令,監(jiān)聽元素寬高的變化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

最近做一個項目,涉及到echart圖,要去根據(jù)父元素去自適應寬高,所以需要監(jiān)聽到元素的寬高變化、

因為是監(jiān)聽某一元素的寬高變化,所以這里用的是ResizeObserver.

ResizeObserver是可以監(jiān)聽到DOM元素,寬高的變化,需要注意的一點就是監(jiān)聽出變化結(jié)果是contentBox的寬度和高度。

以下為瀏覽器兼容性

vue3 封裝自定義指令,監(jiān)聽元素寬高的變化,javascript,vue.js,前端

第一步:封裝自定義指令

在directive文件夾下創(chuàng)建一個resizeObserver.js文件
內(nèi)容如下

// 監(jiān)聽元素大小變化的指令
const map = new WeakMap()
const ob = new ResizeObserver((entries) => {
    for (const entry of entries) {
        // 獲取dom元素的回調(diào)
        const handler = map.get(entry.target)
        //存在回調(diào)函數(shù)
        if (handler) {
            // 將監(jiān)聽的值給回調(diào)函數(shù)
            handler({
                width: entry.borderBoxSize[0].inlineSize,
                height: entry.borderBoxSize[0].blockSize
            })
        }
    }
})


export const Resize = {

    mounted(el, binding) {
        //將dom與回調(diào)的關(guān)系塞入map
        map.set(el, binding.value)
        //監(jiān)聽el元素的變化
        ob.observe(el)
    },
    unmounted(el) {
        //取消監(jiān)聽
        ob.unobserve(el)
    }
}

export default Resize


第二步:在directive文件夾再創(chuàng)建一個index.js文件,目的是為了集中注冊自定義指令

import { Resize } from "./resizeObserver"


// 自定義指令集合
const directives = {
    Resize,
}

export default {
    install(app) {
        Object.keys(directives).forEach((key) => {
            app.directive(key, directives[key])
        })
    }
}


第三步:在main.js文件進行全局注冊

import directives from "@/util/directive/index"
app.use(directives)

第四步:使用方法

<template>
<div style="height: 100%; width: 100%" v-resize="onResize"></div>
</template>
<script setup>
// 當元素寬高發(fā)生變化時,觸發(fā)下面的方法
const onResize = (dom) => {
    console.log(dom) // dom為元素變化后的寬高
}
</script>



以上,希望大家一鍵三連哇~~ 感謝文章來源地址http://www.zghlxwxcb.cn/news/detail-726449.html

到了這里,關(guān)于vue3 封裝自定義指令,監(jiān)聽元素寬高的變化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 【Vue】vue3 v-draggable 拖拽指令封裝

    【Vue】vue3 v-draggable 拖拽指令封裝

    需求:實現(xiàn)一個拖拽指令,可在父元素區(qū)域任意拖拽元素,同時如果傳入的值為 father,則拖拽的時候以父元素為拖拽對象 思路: 1、設置需要拖拽的元素為absolute,其父元素為relative。 2、鼠標按下(onmousedown)時記錄目標元素當前的 left 和 top 值。 3、鼠標移動(onmousemove)時計算每

    2024年02月16日
    瀏覽(24)
  • Vue自定義指令- v-loading封裝

    01-自定義指令 什么是自定義指令? 自定義指令:自己定義的指令,可以 封裝一些dom操作 ,擴展額外功能。 1、例如:完成自動聚焦的功能: 自定義指令的兩種注冊語法: 全局注冊-語法:

    2024年02月11日
    瀏覽(18)
  • vue3自定義指令

    在 Vue 3 中,我們可以通過使用 app.directive 方法來定義自定義指令。下面是一個簡單的例子: 在上面的例子中,我們定義了一個名為 highlight 的自定義指令,它在元素被掛載時將其背景顏色設置為黃色,并在元素被卸載時將背景顏色重置為空。 在 mounted 和 unmounted 方法中,我們

    2024年01月18日
    瀏覽(20)
  • Vue3: 自定義指令

    Vue3: 自定義指令

    vue 官方提供了 v-for、v-model、v-if 等常用的內(nèi)置指令。除此之外vue 還允許開發(fā)者自定義指令。 vue 中的自定義指令分為兩類,分別是: ? 私有自定義指令 ? 全局自定義指令 在每個 vue 組件中,可以在 directives 節(jié)點下聲明私有自定義指令。示例代碼如下: 在使用自定義指令時

    2024年02月15日
    瀏覽(25)
  • vue3自定義指令之防抖

    我們使用 vue 時,有時候需要用到自定義指令,例如一個防抖指令 現(xiàn)在有一個需求,用戶在點擊某個按鈕時,我不希望用戶在瘋狂點擊后,每次點擊都會觸發(fā)事件,像服務器發(fā)送請求,這并不是我們預期的,所以我們需要在用戶點擊是做防抖處理。那么怎么做到方便復用的解

    2024年02月16日
    瀏覽(21)
  • 【學習記錄24】vue3自定義指令

    【學習記錄24】vue3自定義指令

    1、html部分 ?2、js部分 3、實現(xiàn)效果 1、html部分 2、js部分 在components下創(chuàng)建loading文件夾,在loading文件夾里創(chuàng)建directive.js? 在main.js中全局注冊指令 1、在components下創(chuàng)建loading文件夾,在loading文件夾里創(chuàng)建directive.js 2、在loading文件夾里創(chuàng)建loading.vue 3、在loading文件夾里放入一張G

    2024年01月19日
    瀏覽(23)
  • VUE3實現(xiàn)拖拽功能自定義指令

    VUE3實現(xiàn)拖拽功能自定義指令

    1.首先創(chuàng)建一個js文件,命名為drag.js ? ?注意看注釋部分,對操作DOM塊進行了不同需求的支持 ? ? 可以只在移動頭部時操作整個DOM,或者是否允許DOM元素移出屏幕都能實現(xiàn) 2.在main.js中引入drag.js 3.在你想使用的標簽中添加 v-drag 即可實現(xiàn)拖動了 ?

    2024年02月14日
    瀏覽(30)
  • vue3 圖片放大縮小、拖拽功能(自定義指令)

    vue3 圖片放大縮小、拖拽功能(自定義指令)

    效果 自定義 拖拽指令 vDrag.js 參考來源 https://github.com/sunzsh 使用 自定義 拖拽指令 寫法二 (帶傳參及回調(diào)寫法) vDrag.js 使用 自定義 縮放指令 vWheelScale.js 根據(jù)項目需要 我指令加了 動態(tài)參數(shù) 及 回調(diào)函數(shù) 不需要自行修改 使用 自定義 縮放指令 寫法二(帶傳參及回調(diào)寫法)

    2024年02月01日
    瀏覽(103)
  • vue去掉所有輸入框兩邊空格,封裝指令去空格,支持Vue2和Vue3,ElementUI Input去空格

    vue去掉所有輸入框兩邊空格,封裝指令去空格,支持Vue2和Vue3,ElementUI Input去空格

    就是頁面很多表單輸入框,期望在提交的時候,都要把用戶兩邊的空格去掉 ?使用 vue 的指令 .trim 去掉空格 中間會輸入不了空格, 比如我想輸入 你好啊 中國 , 這中間的空格輸入不了,只能變成 你好啊中國 ?在提交的時候使用 trim() 方法去兩邊空格 需要一個個字段的添加,

    2024年02月14日
    瀏覽(23)
  • 兩周掌握Vue3(五):自定義指令、路由、ajax

    兩周掌握Vue3(五):自定義指令、路由、ajax

    代碼倉庫:跳轉(zhuǎn) 當前分支:05 自定義指令是Vue.js框架提供的一個非常強大的特性,它允許開發(fā)者直接操作DOM,擴展Vue.js的能力。自定義指令的主要作用包括: 封裝常用操作 :當你發(fā)現(xiàn)在多個組件中需要重復執(zhí)行相同的DOM操作時,可以將這些操作封裝成一個自定義指令,以提

    2024年01月15日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包