最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 微信小程序之获取图片宽度和高度

    正文概述 掘金(bug制造者)   2021-02-02   892

    起源

    最近在做A需求, 其中有个小功能点描述如下: 从配置端返回张图片, 期望宽度不变(750)、高度根据图片自适应.

    我以为的

    // 为便于讲解, 将css作为style属性绑定[实际不推荐]&& src的值先写死[后期改成接口返回的即可]
    <view style="width:100%;">
      <image src="{{src}}"></image>
    </view>
    

    我一开始想到的就是: 设置内容区的width: 100%会自动占满屏幕宽度, 高度就会自适应. 微信小程序之获取图片宽度和高度 实际效果: image占据空间为: 屏幕宽度 x 0

    解决方案

    初级方案

    重点: 在图片加载完成后获取对应的图片信息.
    经查小程序开发文档后发现, 有提供加载成功的回调, 如下: 微信小程序之获取图片宽度和高度 演示Demo如下:

    // wxml
    <view style="width:100%;" >
      <image src="https://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3796/2975850990~300x300.png" bindload="loadSuccess" style="width:{{imageWidth}}px; height:{{imageHeight}}px"></image>
    </view>
    
    //js
    Page({
      data: {
        imageHeight: 0,
        imageWidth: 0
      },
      loadSuccess(e){
        const { detail: {width, height} } = e
        this.setData({
          imageWidth: width,
          imageHeight:height
        })
      }
    })
    

    先来看看效果: 微信小程序之获取图片宽度和高度 思考个问题: 假设我有100张图片都需要做自适应, 那么是不是多了很多繁琐的setData(), 同时也会导致性能问题.

    进阶方案

    经朋友提醒后发现, 小程序image还有个属性叫做mode, 可以去设置图片的裁剪&缩放等形式. 微信小程序之获取图片宽度和高度 关于mode属性的取值可选项如下图: 微信小程序之获取图片宽度和高度 话不多说, 我们看看实际效果如何:

    // 750x110的图片
    <view style="width:100%;" >
      <image src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ba1f75f0d29c40759b43ef910dacb4e7~tplv-k3u1fbpfcp-watermark.png" mode="widthFix"></image>
    </view>
    
    // 750x480的图片
    <view style="width:100%;" >
      <image src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ba1f75f0d29c40759b43ef910dacb4e7~tplv-k3u1fbpfcp-watermark.png" mode="widthFix"></image>
    </view>
    

    看看750x110的效果图: 微信小程序之获取图片宽度和高度 再看看750x480的效果图: 微信小程序之获取图片宽度和高度 到了这里, 只需要把src的值改为接口返回的, 是不是就实现了宽度固定、高度自适应的需求了~

    最后

    该属性主要是为了实现图片的自适应、换个角度来讲, 主要是确保图片不失真。


    起源地下载网 » 微信小程序之获取图片宽度和高度

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元