3***@qq.com
3***@qq.com
  • 发布:2022-07-06 10:01
  • 更新:2022-07-06 10:36
  • 阅读:508

使用::style动态设置宽度,页面显示也正常,利用uni.createSelectorQuery()获得节点信息时候该元素的宽高值没有更新

分类:uni-app
<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)

  1. 添加了宽度的时候(见附件2)

问题:页面上黑框的部分是view的边框,浏览器查看元素view高度变了。但是通过select再次获得size数据时候,只有宽度变了高度没有变。
应用场景:设置view宽度后,获取新的元素高度,应用于瀑布流布局的判断。

2022-07-06 10:01 负责人:无 分享
已邀请:
DCloud_UNI_WZF

DCloud_UNI_WZF

你设置的是图片的宽度,获取的是父级 view 的宽度,没太明白你的需求和问题
(另: itemWidth 给了单位,style 上面又拼接了一次 px)

  • 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

该问题目前已经被锁定, 无法添加新回复