css实现图片自适应容器的几种方式

css实现图片自适应容器的几种方式

weixin_33701251

css实现图片自适应容器

经常有这样一个场景,需要让图片自适应容器的大小。

1、img标签的方式

我们马上就能想到,把width、height 设置为100%啊。来看一哈效果。

 
  1. <div class='div1'>

  2. <img src="./peiqi.png" alt="">

  3. </div>

 
  1. .div1 {

  2. width:500px;

  3. height:400px;

  4. border:1px solid black;

  5. }

  6. .div1 img {

  7. /*

  8. width: 100%;

  9. height:100%;

  10. */

  11. }

clipboard.png
这是正常的佩琪(如果图片比容器大的话,图片会超出容器)

 
  1. .div1 {

  2. width:500px;

  3. height:400px;

  4. border:1px solid black;

  5. }

  6. .div1 img {

  7. width: 100%;

  8. height:100%;

  9. }

clipboard.png
这是100%的佩琪

额,好像刚过完年。

虽然符合了自适应的要求,但是如图所见图片失真了。这种图片比容器小的情况强行将图片自适应的话图片就失真。如果说是单个图片(logo、占位图、等)按设计稿开发就可以了。但经常会遇到接口获取的不规则图片的情况,一般这种时候会将小于容器的话将其水平、垂直居中。
整理一下任务:

  • 图片宽高都小于容器时垂直、水平居中
  • 图片宽高都大于容器时保持宽高比将width或height充满容器
 
  1. <div class='div1'>

  2. <img src="./peiqi.png" alt="">

  3. </div>

  4. <div class='div1'>

  5. <img src="./peiqi2.png" alt="">

  6. </div>

  7. <div class='div1'>

  8. <img src="./peiqi4.jpeg" alt="">

  9. </div>

 
  1.  
  2. .div1 {

  3. width:500px;

  4. height:400px;

  5. border:1px solid black;

  6. display: table-cell;

  7. vertical-align: middle;

  8. }

  9. .div1 img {

  10. max-width: 100%;

  11. max-height: 100%;

  12. display: block;

  13. margin: auto;

  14. }

max-height 这个属性会阻止 height 属性的设置值变得比 max-height 更大。
max-height 属性用来设置给定元素的最大高度. 如果height 属性设置的高度比该属性设置的高度还大,则height 属性会失效.

clipboard.png
这种效果就舒服多了

2、背景图的方式

 
  1. .div {

  2. background-size: contain;

  3. }

background-size: contain; 把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。

利用css的 background-size: contain; 属性就能进一步优化图片的宽高都小于容器的情况了。

上代码

 
  1. div {

  2. height: 400px;

  3. width: 500px;

  4. border: 1px solid black;

  5. background-repeat: no-repeat;

  6. background-size: contain;

  7. background-position: center;

  8. }

  9. .div1 {

  10. background-image: url(./peiqi1.png);

  11. }

  12. .div2 {

  13. background-image: url(./peiqi2.png);

  14. }

  15. .div3 {

  16. background-image: url(./peiqi4.jpeg);

  17. }

 
  1. <div class='div1'></div>

  2. <div class='div2'></div>

  3. <div class='div3'></div>

clipboard.png

当然最后还得看需求,产品是咋要求的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值