欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue+element項(xiàng)目實(shí)時監(jiān)聽div寬度的變化

 更新時間:2024年08月07日 10:10:25   作者:隨便起的名字也被占用  
這篇文章主要介紹了vue+element項(xiàng)目里實(shí)時監(jiān)聽某個div寬度的變化,然后執(zhí)行相應(yīng)的事件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

背景:

vue項(xiàng)目中用到echarts圖表,頁面上有側(cè)邊欄,側(cè)邊欄收縮圖表不能自適應(yīng),想通過監(jiān)聽內(nèi)容部分的寬度讓圖表resize,試過window帶的resize,只能監(jiān)聽瀏覽器窗口大小變化,為了監(jiān)聽某元素區(qū)域的變化而使echarts的尺寸重置。

本次解決采用 element-resize-detector 可以完美的解決

思路:因?yàn)槭湛s側(cè)邊欄的時候右側(cè)的區(qū)域會自動適應(yīng),但是echarts不會隨之改變

element提供的 element-resize-detector  可以輕松解決問題的存在

第一步:在項(xiàng)目中安裝 element-resize-detector 

npm install element-resize-detector

第二步:在項(xiàng)目中使用

   html

<div id="test">
    <div id="eChart">
</div>

(1)script引入

<script src="node_modules/element-resize-detector/dist/element-resize-detector.min.js"></script>
// With default options (will use the object-based approach).
var erd = elementResizeDetectorMaker();
// With the ultra fast scroll-based approach.
// This is the recommended strategy.
var erdUltraFast = elementResizeDetectorMaker({
  strategy: "scroll" //<- For ultra performance.
});
//監(jiān)聽元素size變化,觸發(fā)響應(yīng)事件
erd.listenTo(document.getElementById("test"), function(element) {
  var width = element.offsetWidth;
  var height = element.offsetHeight;
  console.log("Size: " + width + "x" + height);
});

(2)require 引入使用,在cli項(xiàng)目中使用,需要用到的頁面 ***.vue 引入

var elementResizeDetectorMaker = require("element-resize-detector")

       在mounted中啟用

 var erd = elementResizeDetectorMaker()
    erd.listenTo(document.getElementById("test"), function (element) {
      var width = element.offsetWidth
      var height = element.offsetHeight
      that.$nextTick(function () {
        console.log("Size: " + width + "x" + height)
        //使echarts尺寸重置
        that.$echarts.init(document.getElementById("eChart")).resize()
      })
    })

因?yàn)間if圖為錄屏所以導(dǎo)航欄比較卡頓,勉強(qiáng)看一下哦 

附大GIF圖壓縮工具地址:https://ezgif.com/resize/ezgif-1-d76f5cf7b36f.gif 

基本解決問題,有更好的方案,歡迎留言指導(dǎo),謝謝

更新  自定義指令方法

directives: {  // 使用局部注冊指令的方式
  resize: { // 指令的名稱
    bind(el, binding) { // el為綁定的元素,binding為綁定給指令的對象
      let width = '', height = '';
      function isReize() {
        const style = document.defaultView.getComputedStyle(el);
        if (width !== style.width || height !== style.height) {
          binding.value();  // 關(guān)鍵
        }
        width = style.width;
        height = style.height;
      }
      el.__vueSetInterval__ = setInterval(isReize, 300);
    },
    unbind(el) {
      clearInterval(el.__vueSetInterval__);
    }
  }
}
//然后在html中
<div v-resize="resize"></div> // 綁定的resize是一個函數(shù)
//在methods中
resize() {  // 當(dāng)寬高變化時就會執(zhí)行
  //執(zhí)行某些操作
}

到此這篇關(guān)于vue+element項(xiàng)目里實(shí)時監(jiān)聽某個div寬度的變化,然后執(zhí)行相應(yīng)的事件的文章就介紹到這了,更多相關(guān)vue element監(jiān)聽div寬度變化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Vue實(shí)現(xiàn)微前端的示例代碼

    基于Vue實(shí)現(xiàn)微前端的示例代碼

    這篇文章主要介紹了基于Vue實(shí)現(xiàn)微前端的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 詳解vue.js實(shí)現(xiàn)全屏顯示功能示例

    詳解vue.js實(shí)現(xiàn)全屏顯示功能示例

    這篇文章主要為大家介紹了vue.js實(shí)現(xiàn)全屏顯示功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • vue實(shí)現(xiàn)文章點(diǎn)贊和差評功能

    vue實(shí)現(xiàn)文章點(diǎn)贊和差評功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)文章點(diǎn)贊和差評功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue和React響應(yīng)式的區(qū)別及說明

    Vue和React響應(yīng)式的區(qū)別及說明

    React和Vue在響應(yīng)式機(jī)制上各有特點(diǎn):Vue通過Proxy或Object.defineProperty自動追蹤依賴,支持細(xì)粒度更新;React基于不可變數(shù)據(jù),通過setState顯式觸發(fā)更新,依賴虛擬DOM的Diff算法批量更新,Vue強(qiáng)調(diào)聲明式和自動優(yōu)化,React強(qiáng)調(diào)函數(shù)式編程和顯式控制
    2025-02-02
  • Vue開發(fā)實(shí)現(xiàn)滑動驗(yàn)證組件

    Vue開發(fā)實(shí)現(xiàn)滑動驗(yàn)證組件

    這篇文章主要為大家詳細(xì)介紹了如何利用Vue開發(fā)實(shí)現(xiàn)簡單的滑動驗(yàn)證組件,并且適配移動和PC,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-07-07
  • vue學(xué)習(xí)筆記之vue1.0和vue2.0的區(qū)別介紹

    vue學(xué)習(xí)筆記之vue1.0和vue2.0的區(qū)別介紹

    今天我們來說一說vue1.0和vue2.0的主要變化有哪些?對vue相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2017-05-05
  • vue輪播圖插件vue-awesome-swiper的使用代碼實(shí)例

    vue輪播圖插件vue-awesome-swiper的使用代碼實(shí)例

    本篇文章主要介紹了vue輪播圖插件vue-awesome-swiper的使用代碼實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vite結(jié)合Vue刪除指定環(huán)境的console.log問題

    Vite結(jié)合Vue刪除指定環(huán)境的console.log問題

    這篇文章主要介紹了Vite結(jié)合Vue刪除指定環(huán)境的console.log問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue2.x與Vue3.x中路由鉤子的區(qū)別詳解

    Vue2.x與Vue3.x中路由鉤子的區(qū)別詳解

    這篇文章主要介紹了Vue2.x與Vue3.x中路由鉤子的區(qū)別,分別介紹了路由鉤子的分類,路由配置守衛(wèi)鉤子以及組件內(nèi)守衛(wèi)鉤子等有需要的朋友可以借鑒參考下
    2021-09-09
  • Vue2中使用axios的3種方法實(shí)例總結(jié)

    Vue2中使用axios的3種方法實(shí)例總結(jié)

    axios從功能上來說就是主要用于我們前端向后端發(fā)送請求,是基于http客戶端的promise,面向?yàn)g覽器和nodejs,下面這篇文章主要給大家介紹了關(guān)于Vue2中使用axios的3種方法,需要的朋友可以參考下
    2022-09-09

最新評論