问题:
公司项目有一个要求弹一个后台可配置的弹窗,图片都是自己配置,然后问题来了,每次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)