根据图片的宽高比例来控制图片的显示效果

问题:

遇到问题:后台获取的图片宽高不定,有可能宽大于高,也有可以高大于宽,这时候设置objec-fit时就会不稳定,控制一方显示了,另一方的图片就可能显示的效果不是我们想要的,特别是人物的时候,比如我有一个宽大于高的div盒子,需要在盒子内显示后台传入的人物图片(图片是后台获取的),当后台传入和我一样宽大于高的盒子时,我设置objec-fit:cover;可以正常控制宽高比,也可以达到想要的人物显示效果,但当后台传入宽小于高的盒子时(人物在正中间篇上一点的位置),此时在这个盒子内,图片显示就会切掉头,效果不理想,这时就需要判断图片的宽高比了。

解决思路:

获取图片的宽高,对比大小,另设样式,代码如下:

设置@load方法

<van-swipe :autoplay="3000" style="height: 30vh;">
        <van-swipe-item v-for="(item,index) in activityImgList " :key="index">
          <img class="activity-preview-img"
               :src="item"
               @load="handleImageLoad"
          />
        </van-swipe-item>
      </van-swipe>

 js处理

 根据宽高对比添加naturalWidth类样式

handleImageLoad(event){
      console.log(event)
      const img = event.target
      console.log(img.naturalWidth, img.naturalHeight)
      if (img.naturalWidth && img.naturalHeight) {
        if (img.naturalWidth < img.naturalHeight) {
          console.log('123')
          img.classList.add('naturalWidth')
        }else{

        }
      }
    }

新增的css类样式

注意:这个样式只能控制图片靠顶显示,可以暂时调整效果,但仍不太理想;它也可以调整移动距离,但我的需要控制在盒子内显示,它移动的是裁剪后的图片,如果设置margin或则tranform的话,图片会整体移动,需要谨慎选择,不是最优方案。

.naturalWidth{
  object-position: top;
}

对比效果图:

此为设置前的效果图

添加设置后:

总结:保持宽高比例不失调的情况下可以把人物脑袋显示出来,会比上面效果好一些,但仍不是最优方案,主体有点太靠顶显示,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值