来源
最近有个需求需要放一张图片、设计稿是350*350, 但是接口返回的图可能是方图(宽跟高一致)也可能是长图(宽高不一致), 有部分图片会模糊。
前言
先去官网看看微信小程序的image组件都有哪些属性?
你会发现有个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 的尺寸.
aspectFit
保持纵横比缩放图片、使图片的长边能够完全展示出来-> 完整地将图片展示出来、图片不会变形、内容会在容器内居中显示.
留给图片的位置是不变的
aspectFill
缩放模式、保持纵横比缩放图片、只保证图片的短边能够展示出来-> 图片在水平or垂直方向是完整的, 另一个将会发生截取、即会被截取.
若图片是横向的, 则只能保证图片高度是240px, 然后横向则截取中间的320px
widthFix
缩放模式、保持原有图片宽高比,宽度不变高度自动变化-> 图片可完全展示出来
高度会跟着图片的比例进行拉伸、一起被撑起来了.
heightFix
缩放模式、高度不变 -> 图片可完全展示出来, width设置了也不生效
会发现设置了width也是不生效的
总结
小程序细节多、要多看官方文档、多记录复盘。