14 颜色和背景

内容

CSS 属性允许作者指定元素的前景颜色和背景。背景可以是颜色或图像。背景属性允许作者定位背景图像、重复图像,并声明它是否应固定相对于视口,或者随着文档滚动。

请参阅颜色单位部分,了解有效颜色值的语法。

14.1 前景颜色: 'color' 属性

名称: color
值: <color> | inherit
初始值: 取决于用户代理
适用于: 所有元素
继承性:
百分比: 不适用
媒体: 视觉
计算值: 按指定计算

此属性描述了元素文本内容的前景颜色。可以通过不同方式指定红色:

示例:

em { color: red }              /* 预定义颜色名称 */
em { color: rgb(255,0,0) }     /* RGB 范围 0-255 */

14.2 背景

作者可以将元素的背景(即其渲染表面)指定为颜色或图像。根据框模型,"背景"指的是内容内边距边框区域的背景。边框颜色和样式通过边框属性设置。外边距始终是透明的。

背景属性不会继承,但由于'background-color'的初始值为“透明”,因此父元素的背景默认会透过。

根元素的背景成为画布的背景,覆盖整个画布,锚定点(对于'background-position')与仅为根元素本身绘制背景时相同。根元素不会再次绘制此背景。

然而,对于 HTML 文档,我们建议作者为 BODY 元素而非 HTML 元素指定背景。对于根元素为 HTML "HTML" 元素或 XHTML "html" 元素且其'background-color'计算值为“透明”和'background-image'计算值为“无”的文档,在为画布绘制背景时,用户代理必须使用该元素第一个 HTML "BODY" 元素或 XHTML "body" 元素子元素的背景属性计算值,并且不得为该子元素绘制背景。此类背景也必须锚定在与仅为根元素绘制时相同的位置。

但是,如果没有为将用于画布背景的元素生成框,那么画布背景是透明的。(在 CSS 2.2 中,当该元素或其祖先具有 'display: none' 时,就是这种情况。)

请注意,如果元素具有 'visibility: hidden' 但没有 'display: none',则会为其生成框,并且其背景会用于画布。

根据这些规则,以下 HTML 文档的底层画布将具有“大理石”背景:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <TITLE>设置画布背景</TITLE>
    <STYLE type="text/css">
       BODY { background: url("http://example.com/marble.png") }
    </STYLE>
    <P>我的背景是大理石。

请注意,即使在 HTML 源代码中省略了 BODY 标签,BODY 元素的规则仍然有效,因为 HTML 解析器将推断出缺少的标签。

形成堆叠上下文的元素的背景(参见'z-index'属性)会在该元素的堆叠上下文的底部绘制,位于该堆叠上下文中的所有内容下方。

14.2.1 背景属性'background-color''background-image''background-repeat''background-attachment''background-position',以及 'background'

名称: background-color
值: <color> | transparent | inherit
初始值: transparent
应用于: 所有元素
继承:
百分比: 不适用
媒体: 视觉
计算值: 按指定值

此属性设置元素的背景颜色,可以是<color>值或关键字“transparent”,以使底层颜色透过。

Example(s):

h1 { background-color: #F00 }
名称: background-image
值: <uri> | none | inherit
初始值: none
应用于: 所有元素
继承:
百分比: 不适用
媒体: 视觉
计算值: 绝对 URI 或 none

此属性设置元素的背景图像。当设置背景图像时,作者应同时指定一个背景颜色,以便在图像不可用时使用。当图像可用时,它会在背景颜色上渲染。(因此,颜色在图像的透明部分可见。)

此属性的值为<uri>,用于指定图像,或“none”,当不使用图像时。

Example(s):

body { background-image: url("marble.png") }
p { background-image: none }

以百分比表示的内在尺寸必须相对于为'background-position'属性建立的坐标系的矩形尺寸来解析。

如果图像具有固有宽度或固有高度和固有纵横比,则缺失的尺寸将根据给定的尺寸和比例计算。

如果图像具有固有宽度或固有高度但没有固有纵横比,则缺失的尺寸假定为为'background-position'属性建立的坐标系的矩形尺寸。

如果图像没有固有尺寸但具有固有比例,则尺寸假定为在此比例下的最大尺寸,使得任一尺寸均不超过为'background-position'属性建立的坐标系的矩形尺寸。

如果图像也没有固有比例,则尺寸假定为为'background-position'属性建立的坐标系的矩形尺寸。

名称: background-repeat
值: repeat | repeat-x | repeat-y | no-repeat | inherit
初始值: repeat
应用于: 所有元素
继承:
百分比: 不适用
媒体: 视觉
计算值: 按指定值

如果指定了背景图像,此属性指定图像是否重复(平铺),以及如何重复。所有平铺都会覆盖框的内容内边距边框区域。

本规范未定义行内元素的背景图像的平铺和定位。CSS 的未来级别可能会定义行内元素的背景图像的平铺和定位。

这些值具有以下含义:

repeat
图像在水平和垂直方向上重复。
repeat-x
图像仅在水平方向上重复。
repeat-y
图像仅在垂直方向上重复。
no-repeat
图像不重复:仅绘制图像的一份副本。

Example(s):

body { 
  background: white url("pendant.png");
  background-repeat: repeat-y;
  background-position: center;
}

居中的背景图片,在内边距和内容区域上下重复复制。   [D]

背景图片的一份副本居中,其他副本放在它的上方和下方,形成一个元素后面的垂直带。

名称: background-attachment
值: scroll | fixed | inherit
初始值: scroll
应用于: 所有元素
继承:
百分比: 不适用
媒体: 视觉
计算值: 按指定值

如果指定了背景图像,此属性指定它是相对于视口固定的(“fixed”)还是随包含块(“scroll”)一起滚动。

注意,每个视图只有一个视口。如果一个元素具有滚动机制(见“overflow”),则“fixed”背景不会随着元素移动,而“scroll”背景不会随着滚动机制移动。

即使图像是固定的,它仍然只有在位于元素的内容、内边距或边框区域时才可见。因此,除非图像平铺(“background-repeat: repeat”),否则它可能不可见。

在分页媒体中,没有视口,“fixed”背景是相对于页面框固定的,因此在每一页上重复。

Example(s):

此示例创建一个与视口“粘合”在一起的无限垂直带,当元素滚动时,它保持固定。

body { 
  background: red url("pendant.png");
  background-repeat: repeat-y;
  background-attachment: fixed;
}

对于不支持“fixed”背景的用户代理(例如由于硬件平台的限制),应忽略包含“fixed”关键字的声明。例如:

body {
  background: white url(paper.png) scroll; /* 适用于所有用户代理 */
  background: white url(ledger.png) fixed; /* 适用于支持 fixed 背景的用户代理 */
}

详见一致性部分。

名称: background-position
值: [ [ <percentage> | <length> | left | center | right ] [ <percentage> | <length> | top | center | bottom ]? ] | [ [ left | center | right ] || [ top | center | bottom ] ] | inherit
初始值: 0% 0%
应用于: 所有元素
继承:
百分比: 参考框自身的大小
媒体: 视觉
计算值: 对于<length>为绝对值,其他为百分比

如果已指定背景图像,此属性指定其初始位置。如果只指定了一个值,则假定第二个值为“center”。如果至少有一个值不是关键字,则第一个值表示水平位置,第二个值表示垂直位置。允许使用负的<percentage>和<length>值。

<percentage>
百分比 X 将图像 X% 的位置(水平为 X% 或垂直为 X%)与元素的内边距框的 X% 位置对齐。例如,值对 '0% 0%' 将图像的左上角与内边距框的左上角对齐。值对 '100% 100%' 将图像的右下角放置在内边距框的右下角。值对 '14% 84%' 将图像 X% 的位置(14%)与元素的内边距框 X% 的位置对齐(14% 横跨,84% 向下)。
<length>
长度 L 将图像的左上角与元素的内边距框的左上角距离 L 处对齐(水平为向右 L 或垂直为向下 L)。例如,值对 '2cm 1cm' 将图像的左上角放置在内边距框的左上角 2cm 右侧和 1cm 下方。
top
等同于垂直位置的 '0%'。
right
等同于水平位置的 '100%'。
bottom
等同于垂直位置的 '100%'。
left
等同于水平位置的 '0%'。
center
如果未给出其他值,则等同于水平位置的 '50%',或垂直位置的 '50%'。

然而,如果图像具有内在比例,但没有内在大小,则在 CSS 2.2 中位置未定义。

Example(s):

body { background: url("banner.jpeg") right top }    /* 100%   0% */
body { background: url("banner.jpeg") top center }   /*  50%   0% */
body { background: url("banner.jpeg") center }       /*  50%  50% */
body { background: url("banner.jpeg") bottom }       /*  50% 100% */

本规范未定义内联元素上背景图像的平铺和定位方式。未来版本的 CSS 可能会定义内联元素上背景图像的平铺和定位方式。

如果背景图像在视口内固定(见'background-attachment'属性),则图像相对于视口而不是元素的内边距框放置。例如,

Example(s):

body { 
  background-image: url("logo.png");
  background-attachment: fixed;
  background-position: 100% 100%;
  background-repeat: no-repeat;
} 

在上述示例中,单一图像放置在视口的右下角。

名称: background
值: [<'background-color'> || <'background-image'> || <'background-repeat'> || <'background-attachment'> || <'background-position'>] | inherit
初始值: 见各属性
应用于: 所有元素
继承:
百分比: 允许在 'background-position' 中使用
媒体: 视觉
计算值: 见各属性

'background'属性是用于设置各个背景属性的简写属性(即,'background-color''background-image''background-repeat''background-attachment''background-position')。

给出有效的声明后,'background'属性首先将所有单独的背景属性设置为其初始值,然后分配声明中给出的显式值。

Example(s):

在以下示例的第一条规则中,只给出了'background-color'的值,其他单独的属性设置为其初始值。在第二条规则中,所有单独的属性都已指定。

BODY { background: red }
P { background: url("chess.png") gray 50% repeat fixed }