多个<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.jsComponent({
/** * 组件的属性列表 */
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;