微信小程序image组件mode属性

2,821 阅读2分钟

来源

    最近有个需求需要放一张图片、设计稿是350*350, 但是接口返回的图可能是方图(宽跟高一致)也可能是长图(宽高不一致), 有部分图片会模糊。

前言

先去官网看看微信小程序的image组件都有哪些属性? image.png 你会发现有个mode属性, 根据最新的官方文档, 目前有5种缩放模式、9种裁剪模式。 接下来主要围绕这五种缩放模式做下简单对比。
Tips: image组件默认宽度320px、高度240px

演示demo

原图尺寸 300* 168 image组件默认尺寸: 320px * 240px

// wxml
<image class="test" src="../../../../../test.jpg" mode="scaleToFill"/>
<image class="test" src="../../../../../test.jpg" mode="aspectFit"/>
<image class="test" src="../../../../../test.jpg" mode="aspectFill"/>
<image class="test" src="../../../../../test.jpg" mode="widthFix"/>
<image class="test" src="../../../../../test.jpg" mode="heightFix"/>

// wxss
.test {
  border: 1px solid red;
  margin-bottom: 20rpx;
}
scaleToFill

不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image元素-> 图片会被拉伸变形, 但不会截取。 这是默认值、图片会被拉伸到 320 * 240 的尺寸.
scaleToFill.jpg

aspectFit

保持纵横比缩放图片、使图片的长边能够完全展示出来-> 完整地将图片展示出来、图片不会变形、内容会在容器内居中显示.
留给图片的位置是不变的

aspectFit.jpg

aspectFill

缩放模式、保持纵横比缩放图片、只保证图片的短边能够展示出来-> 图片在水平or垂直方向是完整的, 另一个将会发生截取、即会被截取. 若图片是横向的, 则只能保证图片高度是240px, 然后横向则截取中间的320px
aspectFill.jpg

widthFix

缩放模式、保持原有图片宽高比,宽度不变高度自动变化-> 图片可完全展示出来 高度会跟着图片的比例进行拉伸、一起被撑起来了.
widthFix.jpg

heightFix

缩放模式、高度不变 -> 图片可完全展示出来, width设置了也不生效 会发现设置了width也是不生效的 heightFix.jpg

总结

小程序细节多、要多看官方文档、多记录复盘。