<view class="test1" :style="{width:itemWidth}" >
<image src="../../static/floowImg/img1.jpg" mode="widthFix" style="width:100%" @load="imageLoadHandle"></image>
</view>
imageLoadHandle(){
let query = uni.createSelectorQuery().in(this);
this.itemWidth='100px'
console.log("设置宽度")
this.$nextTick(function(){
query.select(".test1").fields({ size: true }, (data) => {
console.log(data)
}).exec()
})
},
结构描述:使用view嵌套了一个image标签,image给他设置为图片比例不变,宽度可以完全把父盒子沾满高度随意。
1.没有设置宽度的时候(见附件1)
- 添加了宽度的时候(见附件2)
问题:页面上黑框的部分是view的边框,浏览器查看元素view高度变了。但是通过select再次获得size数据时候,只有宽度变了高度没有变。
应用场景:设置view宽度后,获取新的元素高度,应用于瀑布流布局的判断。
3***@qq.com (作者)
感谢回复,我把问题重新描述了一下。
2022-07-06 17:59
DCloud_UNI_WZF
回复 3***@qq.com: 目前看是获取时机的问题,getComputedStyle 在该情况下获取的值也不对,可以加个 setTimeout 延时获取,可能是设置后元素的宽高还没更新到
2022-07-06 18:44
3***@qq.com (作者)
回复 DCloud_UNI_WZF: 铁子,我试了一下setTimeout,是可以的诶。把nextTick替换成setTimeout(()=>{获取dom元素宽高},0)
2022-07-07 09:16