如何使用uni-app组件准确获取元素的宽度和高度?
- 内容介绍
- 文章标签
- 相关推荐
本文共计283个文字,预计阅读时间需要2分钟。
遇到的問題:直接在组件的mounted裡面創建選擇器,獲取元素的寬高,立即將其賦給定時器中執行,還是偶爾會有獲取不到的情況。
解決辦法:
解法一:使用getDescBox()方法javascriptgetDescBox() { uni.createSelectorQuery().select('.target-element').boundingClientRect(data=> { if (data) { // 獲取到元素寬高後,賦給定時器執行 setTimeout(()=> { // 定時器內的執行代碼 }, 0); } else { // 獲取不到元素的情況 } }).exec();}
遇到的问题:直接在组件的mounted里面创建选择器,获取元素的宽高,即使扔到定时器里面执行,还是偶尔会有获取不到的情况
解决办法:
// 写法一: getDescBox() { uni.createSelectorQuery().in(this).select('.top .desc').boundingClientRect(result => { if (result) { console.log('==========',result) }else { this.getDescBox(); } }).exec(); }, // 写法二: getDescBox() { uni.createSelectorQuery().in(this).select('.top .desc').boundingClientRect().exec((res)=>{ if (res\[0\]) { this.descHeight \= res\[0\].height; }else { this.$nextTick(()=>{ this.getDescBox(); }) } }) },
两种写法一模一样...
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计283个文字,预计阅读时间需要2分钟。
遇到的問題:直接在组件的mounted裡面創建選擇器,獲取元素的寬高,立即將其賦給定時器中執行,還是偶爾會有獲取不到的情況。
解決辦法:
解法一:使用getDescBox()方法javascriptgetDescBox() { uni.createSelectorQuery().select('.target-element').boundingClientRect(data=> { if (data) { // 獲取到元素寬高後,賦給定時器執行 setTimeout(()=> { // 定時器內的執行代碼 }, 0); } else { // 獲取不到元素的情況 } }).exec();}
遇到的问题:直接在组件的mounted里面创建选择器,获取元素的宽高,即使扔到定时器里面执行,还是偶尔会有获取不到的情况
解决办法:
// 写法一: getDescBox() { uni.createSelectorQuery().in(this).select('.top .desc').boundingClientRect(result => { if (result) { console.log('==========',result) }else { this.getDescBox(); } }).exec(); }, // 写法二: getDescBox() { uni.createSelectorQuery().in(this).select('.top .desc').boundingClientRect().exec((res)=>{ if (res\[0\]) { this.descHeight \= res\[0\].height; }else { this.$nextTick(()=>{ this.getDescBox(); }) } }) },
两种写法一模一样...
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

