background 属性教程:网页设计的基石

background 是 CSS 中最常用、最重要的属性之一,它允许你为元素设置一个背景,可以是纯色、图片,甚至是渐变色,一个精心设计的背景能极大地提升网页的视觉效果和用户体验。

background使用教程
(图片来源网络,侵删)

第一部分:快速入门 - 单个属性详解

background 是一个简写属性,它将多个子属性合并在一起书写,我们先来了解它的每一个组成部分。

background-color - 背景颜色

这是最简单的背景设置,为元素填充一个纯色。

  • 语法: background-color: <color-value>;
  • 取值:
    • 关键字: red, blue, green, black, white 等。
    • HEX: #RRGGBB ( #ff0000 红色, #333333 深灰色)。
    • RGB/RGBA: rgb(r, g, b) ( rgb(255, 0, 0) 红色) 或 rgba(r, g, b, a) (a 代表透明度,0 为完全透明,1 为完全不透明)。
    • HSL/HSLA: hsl(h, s%, l%) (色相, 饱和度, 亮度),更符合人类对颜色的直觉。

示例:

body {
  background-color: #f0f2f5; /* 设置页面背景为一种柔和的灰色 */
}
.highlight-box {
  background-color: rgba(52, 152, 219, 0.8); /* 半透明的蓝色 */
}

background-image - 背景图片

用于为元素设置一张或多张背景图片。

background使用教程
(图片来源网络,侵删)
  • 语法: background-image: <image-source>;
  • 取值:
    • url('path/to/image.jpg'): 指定图片的路径。
    • none: 不设置背景图片(默认值)。

注意: 即使设置了背景图片,通常也建议同时设置一个 background-color,在图片加载失败或作为备用时,颜色可以显示出来。

示例:

.header {
  background-image: url('images/header-bg.jpg');
}

background-repeat - 背景重复

控制背景图片是否以及如何重复。

  • 语法: background-repeat: <repeat-value>;
  • 常用取值:
    • repeat: 默认值,在水平和垂直方向上都重复。
    • no-repeat: 不重复,只显示一次。
    • repeat-x: 仅在水平方向重复。
    • repeat-y: 仅在垂直方向重复。

示例:

background使用教程
(图片来源网络,侵删)
body {
  background-image: url('images/pattern.png');
  background-repeat: repeat; /* 默认值,铺满整个页面 */
}
.logo {
  background-image: url('images/logo.png');
  background-repeat: no-repeat; /* 只显示一次,不会平铺 */
}

background-position - 背景位置

控制背景图片在元素中的初始位置。

  • 语法: background-position: <position-x> <position-y>;
  • 常用取值:
    • 关键字: top, center, bottom, left, rightcenter center (居中), top right (右上角)。
    • 百分比: 50% 50% (居中), 100% 0 (右上角)。
    • 长度: 20px 30px (距离左边 20px,距离上边 30px)。

示例:

.button {
  background-image: url('images/icon-search.png');
  background-repeat: no-repeat;
  background-position: 10px center; /* 图片水平居中,距离左边 10px */
}

background-attachment - 背景附着

控制背景图片是随页面滚动而滚动,还是固定在视口中。

  • 语法: background-attachment: <attachment-value>;
  • 常用取值:
    • scroll: 默认值,背景会随着页面元素的滚动而滚动。
    • fixed: 背景固定在视口中,不随页面滚动,当你滚动页面时,背景图片会保持在原地。
    • local: 背景会随着元素的内部内容而滚动(较少使用)。

示例 (创建视差滚动效果):

.parallax-section {
  background-image: url('images/mountain.jpg');
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover; /* 后面会讲到 */
  height: 100vh; /* 视口高度 */
}

background-size - 背景尺寸

控制背景图片的大小。

  • 语法: background-size: <size-value>;
  • 常用取值:
    • auto: 默认值,图片保持其原始尺寸。
    • 长度: 100px 200px (宽度 100px,高度 200px)。
    • 百分比: 相对于元素的尺寸。100% 100% 会让图片拉伸以填满整个元素。
    • cover: 保持图片的宽高比,缩放图片直到它完全覆盖元素,图片的某些部分可能会被裁剪。
    • contain: 保持图片的宽高比,缩放图片直到它适应整个元素,如果元素的宽高比与图片不同,元素中可能会留有空白。

cover vs contain 对比:

  • cover: 适合做全屏背景,确保没有空白,但可能裁剪图片。
  • contain: 适合做图标或需要完整显示图片的场景,但可能无法填满整个元素。

示例:

.hero-banner {
  background-image: url('images/banner.jpg');
  background-size: cover; /* 横向或纵向拉伸,确保铺满,可能会有裁剪 */
}
.icon-bg {
  background-image: url('images/icon.svg');
  background-size: contain; /* 保持比例,确保图标完整显示 */
}

第二部分:核心技能 - background 简写属性

在实际开发中,我们通常使用 background 的简写形式,它可以将多个属性写在一行,代码更简洁。

语法规则

background: [background-color] [background-image] [background-repeat] [background-position] / [background-size] [background-attachment] [origin] [clip];

  • 顺序不重要:浏览器会根据你提供的值自动匹配到对应的属性。
  • 分隔符background-size 必须用 与其他属性分隔开。
  • 可以省略:可以只写你需要的属性,未写的部分会使用默认值。

简写示例

示例 1:简单的纯色背景

div {
  background: #4CAF50; /* 等同于 background-color: #4CAF50; */
}

示例 2:带平铺的背景图片

body {
  background: url('images/texture.png') repeat; /* 等同于 background-image + background-repeat */
}

示例 3:完整的背景图片设置 (最常用)

.hero {
  background: url('images/hero.jpg') no-repeat center center / cover;
  /* 解读:
     - url('images/hero.jpg') -> background-image
     - no-repeat -> background-repeat
     - center center -> background-position
     - / cover -> background-size
  */
}

示例 4:包含所有属性的复杂背景

.footer {
  background: #333 url('images/footer-logo.png') no-repeat right center / 50px fixed;
  /* 解读:
     - #333 -> background-color
     - url(...) -> background-image
     - no-repeat -> background-repeat
     - right center -> background-position
     - / 50px -> background-size (宽度为 50px,高度为 auto)
     - fixed -> background-attachment
  */
}

第三部分:高级技巧与最佳实践

多重背景

CSS 允许你为同一个元素设置多个背景,它们会按从上到下的顺序堆叠,第一个在最顶层。

  • 语法: 用逗号 分隔每个背景的声明。

示例:

.card {
  /* 第一个背景:渐变 */
  background: 
    linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)),
    /* 第二个背景:图片 */
    url('images/card-bg.jpg'),
    /* 第三个背景:纯色(备用) */
    #222;
  /* 为所有背景设置通用属性 */
  background-size: cover, 100%, auto;
  background-position: center, center, center;
  background-repeat: no-repeat, no-repeat, repeat;
  background-attachment: fixed, scroll, scroll;
}

解读:

  1. 首先显示一个半透明的黑色渐变。
  2. 在渐变之下,显示图片 card-bg.jpg
  3. 如果图片加载失败,则显示深灰色 #222
  4. background-size 等属性也用逗号分隔,分别对应上面的背景。

最佳实践

  1. 始终提供备用色:为背景图片设置一个相近的 background-color,以防图片加载失败或用户关闭了图片显示。
  2. 注意性能:大尺寸的背景图片会拖慢页面加载速度,请使用压缩过的图片,并根据需要使用 background-size: coverbackground-size: contain 来加载适当分辨率的图片。
  3. 可读性优先:确保背景(无论是颜色还是图片)不会干扰前景文字的可读性,对比度要足够高。
  4. 使用现代格式:对于背景图标,优先使用 .svg 格式,因为它无损且体积小,对于照片,考虑使用 .webp 格式,它通常比 .jpg.png 更小。

第四部分:总结与速查表

属性 作用 示例值
background-color 设置背景颜色 #fff, black, rgba(255,255,255,0.5)
background-image 设置背景图片 url('image.jpg')
background-repeat 设置背景重复方式 no-repeat, repeat-x, repeat-y
background-position 设置背景位置 center, top right, 20px 30px
background-attachment 设置背景滚动方式 scroll, fixed
background-size 设置背景图片大小 cover, contain, 100% 100%
background (简写) 合并所有背景属性 #ccc url(img.png) no-repeat center / cover

通过这份教程,你应该已经掌握了 background 属性从基础到高级的所有用法,你可以开始尝试为你的网页创建美观、实用的背景了!