以前CSS没有支持多个背景写在一个标签里面的时候,由于一个盒子需要多个背景,往往需要分开加标签,而且各个层级有时候还很容易搞混,现在好了,CSS3支持多背景写法了。本文详细的讲解了关于CSS3如何实现多个背景的代码。
css3多背景支持
css3多重背景依然是不支持IE9以下系列版本。其他高级浏览器都是支持的。
css3多重背景属性
background: background-color background-image background-position background-repeat background-attachment background-origin //css3新增属性 background-clip //css3新增属性 background-size //css3新增属性
background-origin 属性规定 background-position 属性相对于什么位置来定位。
注释:如果背景图像的 background-attachment 属性为 “fixed”,则该属性没有效果。
默认值: | padding-box |
---|---|
继承性: | no |
版本: | CSS3 |
JavaScript 语法: | object.style.backgroundOrigin=”content-box” |
语法
background-origin: padding-box|border-box|content-box;
值 | 描述 | |
---|---|---|
padding-box | 背景图像相对于内边距框来定位。 | |
border-box | 背景图像相对于边框盒来定位。 | |
content-box | 背景图像相对于内容框来定位。 |
background-clip 属性规定背景的绘制区域。
默认值: | border-box |
---|---|
继承性: | no |
版本: | CSS3 |
JavaScript 语法: | object.style.backgroundClip=”content-box” |
语法
background-clip: border-box|padding-box|content-box;
值 | 描述 | |
---|---|---|
border-box | 背景被裁剪到边框盒。 | |
padding-box | 背景被裁剪到内边距框。 | |
content-box | 背景被裁剪到内容框。 |
background-size 属性规定背景图像的尺寸。
默认值: | auto |
---|---|
继承性: | no |
版本: | CSS3 |
JavaScript 语法: | object.style.backgroundSize=”60px 80px” |
语法
background-size: length|percentage|cover|contain;
值 | 描述 |
---|---|
length | 设置背景图像的高度和宽度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值会被设置为 “auto”。 |
percentage | 以父元素的百分比来设置背景图像的宽度和高度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值会被设置为 “auto”。 |
cover | 把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中。 |
contain | 把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。 |
对于目前来说,有一些浏览器(Safari 5, Firefox 4, Chrome 10)中不识别origin
和clip
,所以我们用基本的写法就可以了。
css3的多背景写法
p{background:url(demo.gif) no-repeat ,url(demo1.gif) no-repeat left bottom, url(demo2.gif) no-repeat 10px 15px yellow;}
以上每个背景图片都是以层的形式显示,第一个在其他之上。
安全的做法是这样子
p{background:url(demo.gif) no-repeat; //这是写给不识别下面这句的默认背景图片 background:url(demo.gif) no-repeat ,url(demo1.gif) no-repeat left bottom, url(demo2.gif) no-repeat 10px 15px; //这是高级浏览器的css多重背景,第一个最上面 background-color:yellow; //这是定义的默认背景颜色,全部适合 }
如果你想兼容IE低版本系列。
.button { height: 34px; padding: 0 1em 2px; border: 0; background: url(/study/image/gray_baidu_btn.png) 100% -36px no-repeat; background: url(/study/image/gray_baidu_btn.png) no-repeat, url(/study/image/gray_baidu_btn.png) 100% -36px no-repeat; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src='/study/image/gray_baidu_btn.png', sizingMethod='crop'); font-size: 14px; overflow: visible; cursor: pointer; }
需要注意的是filter的是背景是在最上面的。所以你的css书写要有一定的技巧。请参考演示