CSS 背景

背景和字体一样,是一个复合属性,且使用频率很高。CSS3 中,背景在保持以前用法的同时,增加了新的相关属性。

CSS 可以添加背景颜色、背景图片以及用来进行图片设置。以下为常用的 CSS 背景样式:


[1] 背景颜色 background-color

background-color 接受所有合法的颜色,还可以接受一个使背景透明的关键字。背景颜色不能继承,其默认值是 transparent。如果一个元素没有指定的颜色,那么背景就应当是透明的,这样其祖先元素的背景才能可见。

[ 背景半透明 ] CSS3 中,支持背景半透明的语法格式为:

背景半透明是指盒子背景半透明,而盒子中的内容不受影响。同样,可以给文字和边框设置半透明,语法相同。


[2] 背景图片 background-image                                                             

background-image 会放在所指定的背景颜色之上。不过对于有 alpha 通道的图像格式,如 PNG,可能会部分或完全透明,这会导致图像与背景色结合。另外,如果出于某种原因无法加载图像,背景色会取代图像。


[3] 背景平铺 background-repeat

背景图像默认从一个元素的左上角 padding-box 开始平铺,但其从各个方向朝外面平铺,包括 border 区域。

[注意] space 和 round 这两个新增属性值 firefox、safari 和 IE9- 浏览器不支持。

[注意] 背景平铺可以写空格间隔的两个值,分别代表横轴值和纵轴值,但这种写法 IE8- 浏览器不支持。


[4] 背景定位 background-position                                         // 滑动门技术?!

[ 推荐写法 ] CSS2.1 中,背景定位只支持以左上角为参照进行定位,在 CSS3 中新增了可以选择参照方向的定位。

  • 关键字(方位名词)           // 对于单一关键字,当某一方向的关键字为 center 时可省略
    • x轴— left:图的左侧和元素左侧对齐 / center:图的中间和元素中间对齐 / right:图的右侧和元素右侧对齐
    • y轴— top:图的顶部和元素顶部对齐 / center:图的中间和元素中间对齐 / bottom:图的底部和元素底部对齐
  • 具体值            // 页面左上角为原点(0,0)点;背景图像移出到元素范围外的部分不显示
    • x轴:正值从左向右移动,负值从右向左移动
    • y轴:正值从上向下移动,负值从下向上移动
  • 百分比          // 如果只指定一个值,该值将用于横坐标,纵坐标将默认为为 50%;第二个值将用于纵坐标。
    • x轴:背景图像的 x% 对应元素的 x%
    • y轴:背景图像的 y% 对应元素的 y%

[5] 背景关联 background-attachment             // 又叫背景附着,设置背景图像是随对象内容滚动还是固定


[6] 背景原点 bacnground-orgin                 // 决定背景图像的显示区域;IE8- 浏览器不支持

background-origin 主要用来决定背景定位属性的参考原点,即决定背景图片定位的起点。

在默认情况下,背景图片的背景定位属性总是以元素左上角为坐标原点对背景图片进行背景定位,而背景原点属性可以根据自己的需求来改变背景图片的背景定位起始位置。


[7] 背景裁切 background-clip    语法同 background-origin

默认值为 border-box,也就是其他地方裁剪不显示。

[注意] IE8- 浏览器不支持


[8] 背景尺寸 background-size                                         // IE8- 浏览器不支持

background-size 背景尺寸,又称背景缩放,用于设置背景图片的尺寸,在移动端开发中做屏幕适配应用十分广泛。

背景图能自适应元素盒子大小,实现与模块大小完全适应的背景图,避免因区块尺寸不同而需设计不同的背景图。

  • 在流体布局或者响应式布局中,确保背景图像能够始终适配容器大小;
  • 对于平铺的重复性背景图像,可以确保背景图像不会有截断效果;
  • 在流体布局中缩放背景图像来伪造出多列分栏效果;
  • 解决 Retina 屏幕双倍像素下背景图像模糊问题;
  • 使用链接或者列表元素的背景图像能和文本一起进行缩放。

[9] 多背景 background                                      // IE8- 浏览器不支持

在使用 CSS3 之前,每个容器只能指定一张背景图像,因此每当需要增加一张背景图像时,必须至少添加一个容器来容纳它。使用伪元素显示附加图片其实就是嵌套 HTML 标签实现多背景图像的变身,通过 :after 和 :before 等伪元素生成附加元素来放置背景图像,表面上比直接嵌套 HTML 标签更干净一些,但其实是换汤不换药。

[ 多背景图片 ] 通过CSS3的多背景属性,HTML标记就不需要任何修改,在CSS的background-image或者background属性中列出需要使用的所有背景图像,用逗号分隔开,且每张图片都具有background中的属性。

CSS3多背景有层次之分,按照浏览器中显示时图像叠放的顺序从上到下指定,最先声明的背景图像将会居于最上层,最后指定的背景图像将置于最底层。除了背景颜色之外,其他的属性都可以设置多个属性值,前提是元素有多个背景图像存在。对于不兼容多背景的浏览器来说,多背景属性写在单一背景属性的后面,而且还要确保这张单一背景图像确实可用。这是处理兼容CSS3多背景特性兼容的常用方案。


背景渐变

在CSS3出现之前,渐变效果只能通过图形软件设计图片来实现,可拓展性差,还影响性能。如今,已经进入CSS3标准的渐变可以很轻松的完成渐变效果。渐变实际上分为线性渐变和径向渐变radial-gradient?!两种。

linear-gradient()    线性渐变?↓ ]                                   // 渐变的兼容性问题很严重,了解线性渐变即可