css3多重背景详解

以前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)中不识别originclip,所以我们用基本的写法就可以了。

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书写要有一定的技巧。请参考演示


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流