微信<image>标签的bug

1,026 阅读1分钟

多个<image>纵向排列时,开启mode="widthFix"时,在mi9和iPhone的真机上,垂直方向会有1像素的间隔。
解决方法:将image设display:block;margin-top:-1rpx;

另一个方法:

https://developers.weixin.qq.com/community/develop/doc/0006c8ec86017075a7692a6645bc00

原因:

问题在于你图片用了自适应后,高度变得有小数点了,上图的高度显示时图片是精准显示的,但是占位的空间不是,所以显示的时候就会出现这个问题(原因我猜测的,如果不是请纠正😂)

解决方式:

监听bindload,在他的回调里面重新计算宽高,并且赋值给容器,省略小数部分之后,容器的高度会小于图片的高度,白线自然就么有了

不同于上面链接的实现,我把它封装成了一个组件。

<!--components/resize-image.wxml-->

<view style="height:{{imageheight}}px;">

   <image src="{{src}}" mode="widthFix" id="resize-image" bindload="resizeview" />

</view>

// components/resize-image.js

Component({

/** * 组件的属性列表 */

properties: { src: String, },

/** * 组件的初始数据 */ data: {},

/** * 组件的方法列表 */

methods: {

resizeview(e) {

var query = this.createSelectorQuery();

query.select("#resize-image").boundingClientRect();

query.exec((res) => {

   console.log(res);

   this.setData({ imageheight: parseInt(res[0].height), //抛弃小数部分 });

});

},

},

});



偶数个<image>横向排列时,同上,水平方向会有1像素的间隔。
解决方法: 将image的margin-left:-1rpx;