图片拉伸和保持长宽比的问题

在项目中有一个图片上传控件,上传后提供预览功能,是200px*120px大小。

在这里插入图片描述
最初的代码是这样的,在img标签外套一个div,然后给这个div指定宽度和高度,让img标签的宽度和高度都为100%。这样的话图片就可以充满整个div了。

.img-preview {
  width: 200px;
  height: 120px;
  position: relative;
  text-align: center;
  .img {
    width: 100%;
    height: 100%;
    border-radius: 2px;
  }
}

结果某天交互找到我,说他传了一张方的图片被拉伸了。我们一起来看下,这张图片原本长这样:

在这里插入图片描述
然后上传之后就变成这样:
在这里插入图片描述
然后他希望上传的图片能够保持长宽比。这还不简单,只要不把宽度定死不就行了嘛。于是我加了max-width: 100%,也就是高度始终为最大高度120px,宽度在不大于200px的情况下根据图片比例自适应,大于200px那就始终为最大宽度200px。

.img-preview {
  width: 200px;
  height: 120px;
  position: relative;
  text-align: center;
  .img {
    max-width: 100%;
    height: 100%;
    border-radius: 2px;
  }
}

效果如下:

在这里插入图片描述

结果没过多久他又来给我提缺陷,说他传了一张很长的图,然后还是变形了。

在这里插入图片描述
然后我又给加了max-height: 100%,让高度也自适应。

.img-preview {
  width: 200px;
  height: 120px;
  position: relative;
  text-align: center;
  .img {
    max-width: 100%;
    max-height: 100%;
    border-radius: 2px;
  }
}

效果如下(没做垂直居中):

在这里插入图片描述
这样做的话就是看图片宽和高哪个长,然后让长的边适应容器宽度,短的边根据图片比例自适应。

但是这样也有缺点,如果有个图片宽度和高度都小于父容器定义的宽高,那么这个图片就会保持原有的分辨率,不会适应父容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值