CSS 背景

CSS 允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果。

CSS 在这方面的能力远远在 HTML 之上。

背景色

可以使用 background-color 属性为元素设置背景色。这个属性接受任何合法的颜色值。

这条规则把元素的背景设置为灰色:

  1. p {background-color: gray;}

如果您希望背景色从元素中的文本向外少有延伸,只需增加一些内边距:

  1. p {background-color: gray; padding: 20px;}

可以为所有元素设置背景色,这包括 body 一直到 em 和 a 等行内元素。

background-color 不能继承,其默认值是 transparent。transparent 有“透明”之意。也就是说,如果一个元素没有指定背景色,那么背景就是透明的,这样其祖先元素的背景才能可见。

背景图像

要把图像放入背景,需要使用 background-image 属性。background-image 属性的默认值是 none,表示背景上没有放置任何图像。

如果需要设置一个背景图像,必须为这个属性设置一个 URL 值:

  1. body {background-image: url(/i/eg_bg_04.gif);}

大多数背景都应用到 body 元素,不过并不仅限于此。

下面例子为一个段落应用了一个背景,而不会对文档的其他部分应用背景:

  1. p.flower {background-image: url(/i/eg_bg_03.gif);}

您甚至可以为行内元素设置背景图像,下面的例子为一个链接设置了背景图像:

  1. a.radio {background-image: url(/i/eg_bg_07.gif);}

理论上讲,甚至可以向 textareas 和 select 等替换元素的背景应用图像,不过并不是所有用户代理都能很好地处理这种情况。

另外还要补充一点,background-image 也不能继承。事实上,所有背景属性都不能继承。

背景重复

如果需要在页面上对背景图像进行平铺,可以使用 background-repeat 属性

属性值 repeat 导致图像在水平垂直方向上都平铺,就像以往背景图像的通常做法一样。repeat-x 和 repeat-y 分别导致图像只在水平或垂直方向上重复,no-repeat 则不允许图像在任何方向上平铺。

默认地,背景图像将从一个元素的左上角开始。请看下面的例子:

  1. body
  2. {
  3. background-image: url(/i/eg_bg_03.gif);
  4. background-repeat: repeat-y;
  5. }

背景定位

可以利用 background-position 属性改变图像在背景中的位置。

下面的例子在 body 元素中将一个背景图像居中放置:

  1. body
  2. {
  3. background-image:url('/i/eg_bg_03.gif');
  4. background-repeat:no-repeat;
  5. background-position:center;
  6. }

为 background-position 属性提供值有很多方法。首先,可以使用一些关键字:top、bottom、left、right 和 center。通常,这些关键字会成对出现,不过也不总是这样。还可以使用长度值,如 100px 或 5cm,最后也可以使用百分数值。不同类型的值对于背景图像的放置稍有差异。

关键字

图像放置关键字最容易理解,其作用如其名称所表明的。例如,top right 使图像放置在元素内边距区的右上角。

根据规范,位置关键字可以按任何顺序出现,只要保证不超过两个关键字 - 一个对应水平方向,另一个对应垂直方向。

如果只出现一个关键字,则认为另一个关键字是 center。

所以,如果希望每个段落的中部上方出现一个图像,只需声明如下:

  1. p
  2. {
  3. background-image:url('bgimg.gif');
  4. background-repeat:no-repeat;
  5. background-position:top;
  6. }

下面是等价的位置关键字:

单一关键字 等价的关键字
center center center
top top center 或 center top
bottom bottom center 或 center bottom
right right center 或 center right
left left center 或 center left

百分数值

百分数值的表现方式更为复杂。假设你希望用百分数值将图像在其元素中居中,这很容易:

  1. body
  2. {
  3. background-image:url('/i/eg_bg_03.gif');
  4. background-repeat:no-repeat;
  5. background-position:50% 50%;
  6. }

这会导致图像适当放置,其中心与其元素的中心对齐。换句话说,百分数值同时应用于元素和图像。也就是说,图像中描述为 50% 50% 的点(中心点)与元素中描述为 50% 50% 的点(中心点)对齐。

如果图像位于 0% 0%,其左上角将放在元素内边距区的左上角。如果图像位置是 100% 100%,会使图像的右下角放在右边距的右下角。

因此,如果你想把一个图像放在水平方向 2/3、垂直方向 1/3 处,可以这样声明:

  1. body
  2. {
  3. background-image:url('/i/eg_bg_03.gif');
  4. background-repeat:no-repeat;
  5. background-position:66% 33%;
  6. }

如果只提供一个百分数值,所提供的这个值将用作水平值,垂直值将假设为 50%。这一点与关键字类似。

background-position 的默认值是 0% 0%,在功能上相当于 top left。这就解释了背景图像为什么总是从元素内边距区的左上角开始平铺,除非您设置了不同的位置值。

长度值

长度值解释的是元素内边距区左上角的偏移。偏移点是图像的左上角。

比如,如果设置值为 50px 100px,图像的左上角将在元素内边距区左上角向右 50 像素、向下 100 像素的位置上:

  1. body
  2. {
  3. background-image:url('/i/eg_bg_03.gif');
  4. background-repeat:no-repeat;
  5. background-position:50px 100px;
  6. }

注意,这一点与百分数值不同,因为偏移只是从一个左上角到另一个左上角。也就是说,图像的左上角与 background-position 声明中的指定的点对齐。

背景关联

如果文档比较长,那么当文档向下滚动时,背景图像也会随之滚动。当文档滚动到超过图像的位置时,图像就会消失。

您可以通过 background-attachment 属性防止这种滚动。通过这个属性,可以声明图像相对于可视区是固定的(fixed),因此不会受到滚动的影响:

  1. body
  2. {
  3. background-image:url(/i/eg_bg_02.gif);
  4. background-repeat:no-repeat;
  5. background-attachment:fixed
  6. }

background-attachment 属性的默认值是 scroll,也就是说,在默认的情况下,背景会随文档滚动。

CSS 背景实例

设置背景颜色

本例演示如何为元素设置背景颜色。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body {background-color: yellow}
  5. h1 {background-color: #00ff00}
  6. h2 {background-color: transparent}
  7. p {background-color: rgb(250,0,255)}
  8. p.no2 {background-color: gray; padding: 20px;}
  9. </style>
  10. </head>
  11. <body>
  12. <h1>这是标题 1</h1>
  13. <h2>这是标题 2</h2>
  14. <p>这是段落</p>
  15. <p class="no2">这个段落设置了内边距。</p>
  16. </body>
  17. </html>

设置文本的背景颜色

本例颜色如何设置部分文本的背景颜色。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. span.highlight
  5. {
  6. background-color:yellow
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <p>
  12. <span class="highlight">这是文本。</span> 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 这是文本。 <span class="highlight">这是文本。</span>
  13. </p>
  14. </body>
  15. </html>

将图像设置为背景

本例演示如何将图像设置为背景。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body {background-image:url(/i/eg_bg_04.gif);}
  5. </style>
  6. </head>
  7. <body></body>
  8. </html>

将图像设置为背景 2

本例演示如何为多个元素同时设置背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body {background-image:url(/i/eg_bg_04.gif);}
  5. p.flower {background-image: url(/i/eg_bg_03.gif); padding: 20px;}
  6. a.radio {background-image: url(/i/eg_bg_07.gif); padding: 20px;}
  7. </style>
  8. </head>
  9. <body>
  10. <p class="flower">我是一个有花纹背景的段落。<a href="#" class="radio">我是一个有放射性背景的链接。</a></p>
  11. <p><b>注释:</b>为了清晰地显示出段落和链接的背景图像,我们为它们设置了少许内边距。</p>
  12. </body>
  13. </html>

如何重复背景图像

本例演示如何重复背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image:
  7. url(/i/eg_bg_03.gif);
  8. background-repeat: repeat
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. </body>
  14. </html>

如何在垂直方向重复背景图像

本例演示如何垂直地重复背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image:
  7. url(/i/eg_bg_03.gif);
  8. background-repeat: repeat-y
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. </body>
  14. </html>

如何在水平方向重复背景图像

本例演示如何水平地重复背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image:
  7. url(/i/eg_bg_03.gif);
  8. background-repeat: repeat-x
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. </body>
  14. </html>

如何仅显示一次背景图像

本例演示如何仅显示一次背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image: url('/i/eg_bg_03.gif');
  7. background-repeat: no-repeat
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. </body>
  13. </html>

如何放置背景图像

本例演示如何在页面上放置背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image:url('/i/eg_bg_03.gif');
  7. background-repeat:no-repeat;
  8. background-attachment:fixed;
  9. background-position:center;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <body>
  15. <p><b>提示:</b>您需要把 background-attachment 属性设置为 "fixed",才能保证该属性在 Firefox 和 Opera 中正常工作。</p>
  16. </body>
  17. </body>
  18. </html>

如何使用%来定位背景图像

本例演示如何使用百分比来在页面上定位背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image: url('/i/eg_bg_03.gif');
  7. background-repeat: no-repeat;
  8. background-attachment:fixed;
  9. background-position: 30% 20%;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <p><b>注释:</b>为了在 Mozilla 中实现此效果,background-attachment 属性必须设置为 "fixed"。</p>
  15. </body>
  16. </html>

如何使用像素来定位背景图像

本例演示如何使用像素来在页面上定位背景图像。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image: url('/i/eg_bg_03.gif');
  7. background-repeat: no-repeat;
  8. background-attachment:fixed;
  9. background-position: 50px 100px;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <p><b>注释:</b>为了在 Mozilla 中实现此效果,background-attachment 属性必须设置为 "fixed"。</p>
  15. </body>
  16. </html>

如何设置固定的背景图像

本例演示如何设置固定的背景图像。图像不会随着页面的其他部分滚动。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background-image:url(/i/eg_bg_02.gif);
  7. background-repeat:no-repeat;
  8. background-attachment:fixed
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <p>图像不会随页面的其余部分滚动。</p>
  14. <p>A</p>
  15. <p>B</p>
  16. <p>C</p>
  17. <p>D</p>
  18. <p>E</p>
  19. <p>F</p>
  20. <p>G</p>
  21. <p>H</p>
  22. <p>I</p>
  23. <p>J</p>
  24. <p>K</p>
  25. <p>L</p>
  26. <p>M</p>
  27. <p>N</p>
  28. <p>O</p>
  29. <p>P</p>
  30. <p>Q</p>
  31. <p>R</p>
  32. <p>S</p>
  33. <p>T</p>
  34. <p>W</p>
  35. <p>X</p>
  36. <p>Y</p>
  37. <p>Z</p>
  38. <p>1</p>
  39. <p>2</p>
  40. <p>3</p>
  41. <p>4</p>
  42. <p>5</p>
  43. <p>6</p>
  44. <p>7</p>
  45. <p>8</p>
  46. <p>9</p>
  47. </body>
  48. </html>

所有背景属性在一个声明之中

本例演示如何使用简写属性来将所有背景属性设置在一个声明之中。

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. body
  5. {
  6. background: #ff0000 url(/i/eg_bg_03.gif) no-repeat fixed center;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <p>这是一些文本。</p>
  12. <p>这是一些文本。</p>
  13. <p>这是一些文本。</p>
  14. <p>这是一些文本。</p>
  15. <p>这是一些文本。</p>
  16. <p>这是一些文本。</p>
  17. <p>这是一些文本。</p>
  18. <p>这是一些文本。</p>
  19. <p>这是一些文本。</p>
  20. <p>这是一些文本。</p>
  21. <p>这是一些文本。</p>
  22. <p>这是一些文本。</p>
  23. <p>这是一些文本。</p>
  24. <p>这是一些文本。</p>
  25. <p>这是一些文本。</p>
  26. <p>这是一些文本。</p>
  27. <p>这是一些文本。</p>
  28. <p>这是一些文本。</p>
  29. <p>这是一些文本。</p>
  30. <p>这是一些文本。</p>
  31. <p>这是一些文本。</p>
  32. <p>这是一些文本。</p>
  33. <p>这是一些文本。</p>
  34. <p>这是一些文本。</p>
  35. </body>
  36. </html>

CSS 背景属性

属性 描述
background 简写属性,作用是将背景属性设置在一个声明中。
background-attachment 背景图像是否固定或者随着页面的其余部分滚动。
background-color 设置元素的背景颜色。
background-image 把图像设置为背景。
background-position 设置背景图像的起始位置。
background-repeat 设置背景图像是否及如何重复。