CSS2.1中有5个background属性可以用来控制元素的背景。这5个属性是:
background-color
background-image
background-repeat
background-attachment
background-position
为了更好的驾驭背景图片,CSS3添加了3个新的background相关属性,以及一系列的相关属性值。
不过在我们与这几个新属性亲密接触之前需要知道3个重要的盒子。
三个盒子假设现在有个容器,容器里面有些内容,虽然我们看不见,但是这些内容的外面是有一个盒子的,这个盒子就是content-box
。
//zxx:这里的英文原文是:”The quick brown fox jumped over the lazy web developer. “,而实际上,这里的英文也不是最原始的,是作者从”The quick brown fox jumped over the lazy dog! “这句话改编而来的,至于这里的原话实际上没有什么特殊的意思,只是这句话包含了英文中全部的26个字母。这里,我按照字面意思整个了打油诗。
现在,如果我们给容器的每个边上增加padding
,我们将会得到一个新的盒子,即padding-box
。
如果我们给容器的每个边边框上边框(这里断句如下:每个边边 框上 边框)。我们将会迎来第三个盒子——border-box
。
这三个盒子用来确定背景图片的落脚之处,以何种尺寸显示,以及哪个地方要修剪。
后面会专门花口水讲这三个盒子,但是,眼下,先揭开background-position
以及background-repeat
羞涩的面纱。
默认情况下,背景图片(background images)是在padding-box
的左上角落脚安家的。如下图:
我们可以使用background-position
属性改变默认的位置。
在CSS2.1中,我们可以使用两个值来决定背景图片相对于元素的位置。
</div>其中第一个值决定了水平位置:
</div>第二个值决定了垂直位置:
</div>在CSS3中,我们可以给background-position
属性指定高达4个值。
开始的两个值代表了水平轴:
</div>后面的两个值代码垂直轴:
</div>这是很强大的“装备”升级,这意味着我们可以相对于上下左右任意一个角落定位,而不是之前的只能相对于左上角定位。
正值和负值
我们可以使用正值决定背景图片的位置,也可以使用负值。
</div>正值所产生的效果是把背景图片往右下方移动——元素背景区域内部。
</div>负值产生的效用是把背景图片往左上方向移动——元素背景区域外面。
</div> background-repeat默认情况下,背景图片会沿着x轴,y轴重复。同样的,是起始于padding-box
的左上角。尽管背景图片平铺起始于padding-box
左上角,但是其从各个方向朝外面平铺,包括border
区域。
在CSS2.1中,我们可以使用四个不同的关键字改变平铺的行为,如下:
repeat
repeat-x
repeat-y
no-repeat
</div>
repeat repeat?
在CSS3中,我们定义repeat
的时候可以使用两个值代替一个值。
其中第一个值代表水平轴:
</div>第二个repeat
表示垂直轴:
如果我们只使用一个值,浏览器会自动解释成两个值。这就保证了background-repeat
属性向后兼容。
CSS3允许我们使用background-repeat
属性两个新值:space
和round
。其兼容性如下表:












space
值的功效可以简单理解为图片的两端对齐平铺,多出来的空间用空白代替:
呈现效果大致如下:
</div>round
属性的效果也可以说是两端对齐,但其多出来空间通过自身的拉伸来填充。
呈现效果大致如下:
</div>不过需要注意的是使用这种方法图片可能会被拉伸或扭曲。这些新值让我们在布局背景图片的时候更灵活了。例如我们可以使用两个值来定义不同的垂直和水平行为:
</div> 三个新属性在CSS3中我们可以使用三个全新的属性,如下:
background-origin
background-clip
background-size
background-origin
关于CSS3 background-origin
基础知识以及效果demo可以参见这里。background-origin
是用来决定背景图片定位在哪个盒子中。我们可以使用background-origin