微信小程序(三)关于image的自适应/动态获得图片高度

微信小程序里图片自适应宽高,image有自带的缩放模式

纯css自适应高度 图片上加个属性 mode="widthFix" 就可以 

<image class="test" mode="widthFix" src="/img/picture/705781.jpg"></image>
.test{width:300rpx;height:auto;}

还有一些其他的适应模式,见官网api 

属性名类型默认值说明最低版本
srcString 图片资源地址 
modeString'scaleToFill'图片裁剪、缩放的模式 
lazy-loadBooleanfalse图片懒加载。只针对page与scroll-view下的image有效1.5.0
binderrorHandleEvent 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'} 
bindloadHandleEvent 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}

注1:image组件默认宽度300px、高度225px 注2:image组件中二维码/小程序码图片不支持长按识别。仅在wx.previewImage中支持长按识别。

mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式

模式说明
缩放scaleToFill不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
缩放aspectFit保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
缩放aspectFill保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
缩放widthFix宽度不变,高度自动变化,保持原图宽高比不变
裁剪top不缩放图片,只显示图片的顶部区域
裁剪bottom不缩放图片,只显示图片的底部区域
裁剪center不缩放图片,只显示图片的中间区域
裁剪left不缩放图片,只显示图片的左边区域
裁剪right不缩放图片,只显示图片的右边区域
裁剪top left不缩放图片,只显示图片的左上边区域
裁剪top right不缩放图片,只显示图片的右上边区域
裁剪bottom left不缩放图片,只显示图片的左下边区域
裁剪bottom right不缩放图片,只显示图片的右下边区域

 

假如要实现在一个圆形里 图片不拉伸,多余部分裁剪掉

html部分

<view  class='tupian'>
    <!--图片高度动态获得-->
    <image style='height:{{height}}' src="../图片.jpg" />
</view>

css部分

.tupian{width:146rpx;height:146rpx;border-radius:50%;overflow:hidden;margin:0 auto;}
.tupian image{width:146rpx;display:block;}

js部分

onLoad: function (options) {
    var self = this
    //创建节点选择器
    var query = wx.createSelectorQuery();
    query.select('.tupian').boundingClientRect(function (e) {
        self.setData({
            height: e.width*4/3 + 'px' //这里图片的高度是按照4/3的比例算的
        })
    }).exec();

}

更多关于微信小程序image的问题详见 https://developers.weixin.qq.com/miniprogram/dev/component/image.html

 


版权声明:本文为qq_39109182原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。