CSS 的 background-size
属性能调整背景图片的大小,从而替代了用原始大小显示图片的默认行为。你可以随意的缩放背景图。
拼一张大图
来考虑一张大图,一个1233*1233像素的火狐图标。我们想将这张图的四个副本拼到一个300*300像素的正方形里(出于某种原因,很可能是某个非常糟糕的网站设计),最终的效果如下:
用下面的 CSS 可以实现这种效果:
.square { width: 300px; height: 300px; background-image: url(fxlogo.png); border: solid 2px; text-shadow: white 0px 0px 2px; font-size: 16px; background-size: 150px; }
没必要再用带前缀的 background-size 了,尽管你可能考虑到要兼容一些非常老的浏览器版本,而用带前缀的写法。
拉伸图片
你可以同时指定图片纵向和横向的大小,如下:
background-size: 300px 150px;
结果会是这样的:
放大图片
另一方面,你可以在背景里放大一张图片。我们把 16*16px 的图标放大到 300*300px:
.square2 { width: 300px; height: 300px; background-image: url(favicon.png); background-size: 300px; border: solid 2px; text-shadow: white 0px 0px 2px; font-size: 16px; }
正如你所看到的,CSS 的写法实际上是基本相同的。
特殊值: "contain" 和 "cover"
除了<length>
值外,background-size
还提供了另外两个特殊的尺寸值:contain 和 cover。
contain
contain 值指定可以不用考虑容器的大小,把图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。在支持背景图缩放的浏览器(比如Firefox 3.6+)中,改变这个窗口的大小,来看看下方这个例子。
<div class="bgSizeContain">
<p>Try resizing this window.Right-click->This Frame->Open Frame in New Tab
</p>
</div>
.bgSizeContain { height: 200px; background-image: url(https://developer.mozilla.org/files/2917/fxlogo.png); background-size: contain; border: 2px solid darkgray; color: #000; text-shadow: 1px 1px 0 #fff; }
cover
cover 属性指定背景图可以被调整到任意大小,以使背景图完全覆盖背景区域。
<div class="bgSizeCover"> <p>Try resizing this window.Right-click->This Frame->Open Frame in New Tab</p> </div>
.bgSizeCover { height: 200px; background-image: url('/files/2917/fxlogo.png'); background-size: cover; border: 2px solid darkgray; color: #000; text-shadow: 1px 1px 0 #fff; }