如何在Vue中獲取DOM元素的實際寬高
前言
最近使用 D3.js 開發(fā)可視化圖表,因為移動端做了 rem 適配,所以需要動態(tài)計算獲取圖表容器的寬高,其中涉及到一些原生DOM API的使用,避免遺忘這里總結(jié)一下。

一、獲取元素
在 Vue 中可以使用 ref 來獲取一個真實的 DOM 元素。
為了保險起見,所有的 DOM 操作建議都放在 $nextTick() 方法中。
<template>
<div class="box" ref="wrap"></div>
</template>
<script>
export default {
mounted() {
// 獲取 DOM 元素
this.$nextTick(()=>{
let $ele = this.$refs.wrap
})
},
}
</script>
<style scoped>
.box {
width: 100%;
height: 200px;
background-color: pink;
}
</style>
二、獲取元素寬高
使用 offsetWidth 、 offsetHeight 方法,返回 Number 類型的值,如:52。
let $ele = this.$refs.wrap // 寬 let width = $ele.offsetWidth // 高 let height = $ele.offsetHeight
使用 window 全局對象中的 getComputedStyle API,返回 String 類型的值,包含px單位,如: '100px'。
let $ele = this.$refs.wrap // 寬 let width = window.getComputedStyle($ele).width // 高 let height = window.getComputedStyle($ele).height
補充:vue項目獲取dom元素寬高總是不準確
dom元素內(nèi)部內(nèi)容是動態(tài)的,重置數(shù)據(jù)后直接獲取寬高總是不準確:
this.$refs.editor[0].offsetHeight;
原因:重置數(shù)據(jù)后獲取dom元素寬高時,dom元素還未渲染完畢;
解決方法:利用Vue.nectTick(callback)
this.$nextTick(() => {
this.$refs.editor[0].offsetHeight;
})
Vue.nectTick() 是在下次DOM更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)
總結(jié)
到此這篇關(guān)于如何在Vue中獲取DOM元素實際寬高的文章就介紹到這了,更多相關(guān)Vue獲取DOM元素實際寬高內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue通過WebSocket建立長連接的實現(xiàn)代碼
這篇文章主要介紹了Vue通過WebSocket建立長連接的實現(xiàn)代碼,文中給出了問題及解決方案,需要的朋友可以參考下2019-11-11
基于Vue3和Plotly.js實現(xiàn)交互式3D圖
這篇文章主要介紹了基于Vue3和Plotly.js實現(xiàn)交互式3D圖,本代碼旨在為數(shù)據(jù)可視化提供一個交互式圖表,允許用戶動態(tài)控制圖表中線條的顏色和可見性,此功能對于探索大型數(shù)據(jù)集或突出特定數(shù)據(jù)子集非常有用,需要的朋友可以參考下2024-07-07
vue2.0中click點擊當前l(fā)i實現(xiàn)動態(tài)切換class
本篇文章主要介紹了vue2.0中click點擊當前l(fā)i實現(xiàn)動態(tài)切換class ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
解決iview table組件里的 固定列 表格不自適應(yīng)的問題
這篇文章主要介紹了解決iview table組件里的 固定列 表格不自適應(yīng)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
使用Vue.set()方法實現(xiàn)響應(yīng)式修改數(shù)組數(shù)據(jù)步驟
今天小編就為大家分享一篇使用Vue.set()方法實現(xiàn)響應(yīng)式修改數(shù)組數(shù)據(jù)步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
詳解VS Code使用之Vue工程配置format代碼格式化
這篇文章主要介紹了詳解VS Code使用之Vue工程配置format代碼格式化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-03-03

