new Image().width一直为0

问题:

公司项目有一个要求弹一个后台可配置的弹窗,图片都是自己配置,然后问题来了,每次ui设计的图都不一样,而且设置的二倍图,也就是750的图,但是手机像素是375的,这样图就非常的大,超出手机屏

分析问题:

前端直接写死图片(calc(5000vw / 75))的对应像素(500*640)的时候发现是完全没有问题的。猜想问题就在于不设置高宽的时候,用的是500像素,手机都只有375当然就特别大,还装都装不下。所以重新设置图片对应的大小就好了

解决

1.获取图片的对应的高度

let Img = new Image();
Img.src = this.imgSrc;    //图片的路径赋值给Img对象的src
this.width=Img.width;   //直接把图片的宽度赋值给你想要的变量宽度width

然后遇bug小能手果然不负众望–又不对,获取的width一直都是0

bug小能手分析:

1.我以为是数据获取有延时,还没获取到就在赋值,所以没获取到地址,but打印每一步,我发现图片路径能打出来,那就是说Img.width有问题
2.然后我给了一个定时器包住了Img.width的赋值,马上就成功了,我猜想可能是Img.width获取对象高度的这个过程可能是需要计算还是什么的,正确写法如下:

 setTimeout(()=>{
          this.width=Img.width;
        },300)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值