background-size 属性规定背景图像的尺寸。
先看看W3C的解释:
background-size:contain;等比缩放,按照某一边来覆盖显示区域的,若区域大于图片的比例,会有白边,图片不会变形
图片右边有空白区域
background-size:100% 100%;---按容器比例撑满,图片变形;
图片被横向拉伸
background-size:100%;相当于background-size:100% auto的写法,y轴根据图片原来的比例,以及现有的宽度,来确定高度。
比方说:你有一张长宽比例为4:3的图片,有一个width:100px;height:50px;的盒子(也就是长宽比例为2:1)。
background-size:100% 100%;这种方式设置完背景图片的大小后,会完全铺满整个盒子,并且背景图片的比例会因此改变为2:1
background-size:100%;这种方式设置的背景图片的大小,x轴会和盒子一样的宽,但是y轴由于默认为auto,根据上面的理论计算得背景图片的高度为300px,但是盒子只有50px高,超出的部分隐藏。
第一种效果你一定会看到完整的背景图片,但是图片可能变形。
第二种效果你不一定能看到完整的图片,但是图片的比例没有发生变化。
图片下面部分被裁剪
background-size:cover;---把背景图片放大到适合元素容器的尺寸,图片比例不变,但是要注意,超出容器的部分可能会裁掉。
图片右边被裁剪
总结:
background-size:100%;总是X轴100%铺满整个容器,Y轴可能被裁剪会出现空白填不满部分,图片不变形。
background-size:100% 100%;图片不保持比例放大或缩小使X轴与Y轴都铺满整个容器,图片可能会变形。
background-size:cover;图片保持比例放大或缩小使X轴与Y轴都铺满整个容器,但图片超出容器部分会被裁剪掉,图片不变形。
background-size:contain;图片保持比例放大或缩小填充容器,若不能完整填充容器,X轴或Y轴都有可能出现白边,图片不变形。
原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe