解決vue項(xiàng)目獲取dom元素寬高總是不準(zhǔn)確問(wèn)題
dom元素內(nèi)部?jī)?nèi)容是動(dòng)態(tài)的,重置數(shù)據(jù)后直接獲取寬高總是不準(zhǔn)確:
this.$refs.editor[0].offsetHeight;
原因:重置數(shù)據(jù)后獲取dom元素寬高時(shí),dom元素還未渲染完畢;
解決方法:利用Vue.nectTick(callback)
this.$nextTick(() => { this.$refs.editor[0].offsetHeight; })
Vue.nectTick() 是在下次DOM更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)
補(bǔ)充知識(shí):vue 獲取 指定元素的高度寬度等(使用vue中的 ref 獲取到的是 dom 元素高度或者寬度)
使用 vue 的時(shí)候,想要獲得一個(gè)指定的元素的高度時(shí),可以使用 vue 中的 ref 。
當(dāng) ref 加在普通的元素上,使用 this.ref.name 獲取到的是 dom 元素
示例
寫在 頁(yè)面 html 部分的
<div ref="init"></div>
寫在 頁(yè)面 方法 部分
這里的 offsetHeight 是返回元素的寬度(包括元素寬度、內(nèi)邊距和邊框,不包括外邊距)
let height= this.$refs.init.$el.offsetHeight;
這里的offsetHeight可以替換,用來(lái)獲取其他的屬性
offsetWidth //返回元素的寬度(包括元素寬度、內(nèi)邊距和邊框,不包括外邊距)
offsetHeight //返回元素的高度(包括元素高度、內(nèi)邊距和邊框,不包括外邊距)
clientWidth //返回元素的寬度(包括元素寬度、內(nèi)邊距,不包括邊框和外邊距)
clientHeight //返回元素的高度(包括元素高度、內(nèi)邊距,不包括邊框和外邊距)
style.width //返回元素的寬度(包括元素寬度,不包括內(nèi)邊距、邊框和外邊距)
style.height //返回元素的高度(包括元素高度,不包括內(nèi)邊距、邊框和外邊距)
scrollWidth //返回元素的寬度(包括元素寬度、內(nèi)邊距和溢出尺寸,不包括邊框和外邊距),無(wú)溢出的情況,與clientWidth相同
scrollHeigh //返回元素的高度(包括元素高度、內(nèi)邊距和溢出尺寸,不包括邊框和外邊距),無(wú)溢出的情況,與clientHeight相同
除此之外,還可以獲取帶有單位的數(shù)值
let height = window.getComputedStyle(this.$refs.init).height;
這樣獲取的值是有單位的。
以上這篇解決vue項(xiàng)目獲取dom元素寬高總是不準(zhǔn)確問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue中 v-if/v-show/插值表達(dá)式導(dǎo)致閃現(xiàn)的原因及解決辦法
在開發(fā)過(guò)程中經(jīng)常會(huì)發(fā)現(xiàn)當(dāng)頁(yè)面明明不應(yīng)該出現(xiàn)的元素或內(nèi)容會(huì)閃現(xiàn)一下然后消失,這篇文章給大家分享Vue中 v-if/v-show/插值表達(dá)式導(dǎo)致閃現(xiàn)的原因及解決辦法,一起看看吧2018-10-10vue中promise的使用及異步請(qǐng)求數(shù)據(jù)的方法
這篇文章主要介紹了vue中promise的使用及異步請(qǐng)求數(shù)據(jù)的方法,文章給大家較詳細(xì)的介紹了遇到的問(wèn)題及解決方法,需要的朋友可以參考下2018-11-11vue如何解決sass-loader的版本過(guò)高導(dǎo)致的編譯錯(cuò)誤
這篇文章主要介紹了vue如何解決sass-loader的版本過(guò)高導(dǎo)致的編譯錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Vue.js實(shí)戰(zhàn)之通過(guò)監(jiān)聽滾動(dòng)事件實(shí)現(xiàn)動(dòng)態(tài)錨點(diǎn)
監(jiān)聽事件是我們?cè)谑褂胿ue.js的時(shí)候經(jīng)常使用的一個(gè)功能,下面這篇文章主要介紹了Vue.js實(shí)戰(zhàn)之通過(guò)監(jiān)聽滾動(dòng)事件實(shí)現(xiàn)動(dòng)態(tài)錨點(diǎn) 的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04vue雙向數(shù)據(jù)綁定知識(shí)點(diǎn)總結(jié)
這篇文章主要介紹了vue雙向數(shù)據(jù)綁定的原理以及知識(shí)點(diǎn)總結(jié),并做了代碼實(shí)例分析,有需要的朋友參考下。2018-04-04vue cli3 調(diào)用百度翻譯API翻譯頁(yè)面的實(shí)現(xiàn)示例
這篇文章主要介紹了vue cli3 調(diào)用百度翻譯API翻譯頁(yè)面的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Vue.js@2.6.10更新內(nèi)置錯(cuò)誤處機(jī)制Fundebug同步支持相應(yīng)錯(cuò)誤監(jiān)控
這篇文章主要介紹了Vue.js@2.6.10更新內(nèi)置錯(cuò)誤處機(jī)制,F(xiàn)undebug同步支持相應(yīng)錯(cuò)誤監(jiān)控 ,需要的朋友可以參考下2019-05-05