解決vue項目獲取dom元素寬高總是不準確問題
dom元素內部內容是動態(tài)的,重置數(shù)據后直接獲取寬高總是不準確:
this.$refs.editor[0].offsetHeight;
原因:重置數(shù)據后獲取dom元素寬高時,dom元素還未渲染完畢;
解決方法:利用Vue.nectTick(callback)
this.$nextTick(() => {
this.$refs.editor[0].offsetHeight;
})
Vue.nectTick() 是在下次DOM更新循環(huán)結束之后執(zhí)行延遲回調
補充知識:vue 獲取 指定元素的高度寬度等(使用vue中的 ref 獲取到的是 dom 元素高度或者寬度)
使用 vue 的時候,想要獲得一個指定的元素的高度時,可以使用 vue 中的 ref 。
當 ref 加在普通的元素上,使用 this.ref.name 獲取到的是 dom 元素
示例
寫在 頁面 html 部分的
<div ref="init"></div>
寫在 頁面 方法 部分
這里的 offsetHeight 是返回元素的寬度(包括元素寬度、內邊距和邊框,不包括外邊距)
let height= this.$refs.init.$el.offsetHeight;
這里的offsetHeight可以替換,用來獲取其他的屬性
offsetWidth //返回元素的寬度(包括元素寬度、內邊距和邊框,不包括外邊距)
offsetHeight //返回元素的高度(包括元素高度、內邊距和邊框,不包括外邊距)
clientWidth //返回元素的寬度(包括元素寬度、內邊距,不包括邊框和外邊距)
clientHeight //返回元素的高度(包括元素高度、內邊距,不包括邊框和外邊距)
style.width //返回元素的寬度(包括元素寬度,不包括內邊距、邊框和外邊距)
style.height //返回元素的高度(包括元素高度,不包括內邊距、邊框和外邊距)
scrollWidth //返回元素的寬度(包括元素寬度、內邊距和溢出尺寸,不包括邊框和外邊距),無溢出的情況,與clientWidth相同
scrollHeigh //返回元素的高度(包括元素高度、內邊距和溢出尺寸,不包括邊框和外邊距),無溢出的情況,與clientHeight相同
除此之外,還可以獲取帶有單位的數(shù)值
let height = window.getComputedStyle(this.$refs.init).height;
這樣獲取的值是有單位的。
以上這篇解決vue項目獲取dom元素寬高總是不準確問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue實現(xiàn)動態(tài)表格提交參數(shù)動態(tài)生成控件的操作
這篇文章主要介紹了vue實現(xiàn)動態(tài)表格提交參數(shù)動態(tài)生成控件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
element中Select選擇器實現(xiàn)自定義顯示內容
在我們很多前端業(yè)務開發(fā)中,往往為了方便,都需要自定義一些用戶組件,本文主要介紹了element中Select選擇器實現(xiàn)自定義顯示內容,感興趣的可以了解一下2023-12-12
vue3+ts+axios+pinia實現(xiàn)無感刷新方式
這篇文章主要介紹了vue3+ts+axios+pinia實現(xiàn)無感刷新方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
Vue3實現(xiàn)SSE(Server-Sent?Events)連接
SSE?是一種允許服務器向瀏覽器推送事件的技術,這篇文章主要為大家詳細介紹了如何通過vue3實現(xiàn)SSE(Server-Sent?Events)連接,有需要的小伙伴可以了解下2024-10-10

