css background-size与背景图片填满div

background-size与背景图片填满div

在开发中,常有须要将一张图片做为一个div的背景图片充满div的需求浏览器

background-size的取值及解释

background-size共有三种属性,分别为测试

background-size: cover

MDN文档解释说明:缩放背景图片以彻底覆盖背景区,可能背景图片部分看不见。A keyword that is the inverse of contain. Scales the image as large as possible and maintains image aspect ratio (image doesn't get squished). The image "covers" the entire width or height of the container. When the image and container have different dimensions, the image is clipped either left/right or top/bottom.

这里的关键说明在于标红的两个区域,分别是它会保持图片的宽高比当图像和容器具备不一样的尺寸时,图像被左/右或顶部/底部裁剪。以后会结合例子说明ui

background-size: contain

MDN文档解释说明:缩放背景图片以彻底装入背景区,可能背景区部分空白。A keyword that scales the image as large as possible and maintains image aspect ratio (image doesn't get squished). Image is letterboxed within the container. When the image and container have different dimensions, the empty areas (either top/bottom of left/right) are filled with the background-color.

这里的关键说明在于标红的两个区域,分别是它会保持图片的宽高比当图像和容器具备不一样的尺寸时,空区域(左/右/上/右)填充背景色。以后会结合例子说明spa

background-size: width-value,height-value;

分为固定大小百分比auto,固定大小就是写死;auto就是以背景图片的比例缩放背景图片。。3d

百分比的的MDN文档解释说明<percentage> 值,指定背景图片相对 背景区(background positioning area)的百分比。 背景区由background-origin设置,默认为盒模型的内容区与内边距,也可设置为只有内容区,或者还包括边框。若是attachment 为fixed,背景区为浏览器可视区(即视口),不包括滚动条。不能为负值。

实验及声明

此次选用鲁殿做为背景图,这张图的尺寸是260*234,宽高比为260/234 ≈ 1.11
clipboard.pngcode


假设一div的宽高为200*200,下面测试中左为表现图,右为原图blog

background-size: contain
clipboard.pngclipboard.png图片

background-size: cover
clipboard.pngclipboard.pngip

background-size: auto (auto)
clipboard.pngclipboard.png开发

background-size: 100% 100%
clipboard.pngclipboard.png

分析及解释:首先contain是不行的,原理在于contain要保持宽高比将图片彻底放入div中,div为200×200。原图为260×234,因此为了放入div,宽260→200,那么高就得200/宽高比(1.11) = 180,因此会有下面的空白。
再其次,cover在这个时候也是不符合要求的,虽然看起来貌似符合要求,可是与原图是有差异的吗,缘由在于cover与contain彻底放入相反,它要求彻底覆盖。因此要覆盖就要从更小的高计算。高234→200宽就等于200×1.11 = 222,图像就会被右部裁剪掉一部分。
再再其次,auto是原图大小也是不符合的。

因此, background-size: 100%, 100%;是符合需求的。按照div的大小进行计算

其余各类大小div与各类大小的图片搭配请参照上述说明自行分析。
我的建议这种需求都使用background-size: 100%, 100%;

相关文章
相关标签/搜索