background 是一个 CSS 简写属性,用于设置任何元素的背景效果。它控制元素内容下方的绘制内容。

以下示例显示了可指定为元素创建任何背景效果的属性的完整列表:

header {
  background: color image positionX positionY / size repeat attachment origin clip;
  background: 
    plum          /* color */
    url('image/logo.jpg') /* image */ 
    top center /  /* position */
    150px 150px   /* size */
    no-repeat     /* repeat */
    padding-box   /* origin */
    content-box   /* clip */
    fixed;        /* attachment */
}

background 简写形式由八个属性组成。让我们深入了解它们每一个的用法。

background-color

CSS background-color 属性用于设置元素背景的颜色。如果图像需要时间加载,则可以将其与 background-image 属性组合作为备用选项。

background-color 值指定为颜色名称、十六进制值、RGB/RGBA 值或 HSL/HSLA 值。

默认值

background-color 的默认值是 transparent 关键字。

header {
  background-color: transparent;
}

用法

/* 关键字值 */
header {
  background-color: red;
}

/* 十六进制值 */
header {
  background-color: #bbff00;
}

/* RGB 值 */
header {
  background-color: rgb(255, 255, 128);        /* 完全不透明 */
}
header {
  background-color: rgba(117, 190, 218, 0.5);  /* 50% 透明 */
}

/* HSL 值 */
header {
  background-color: hsl(50, 33%, 25%);         /* 完全不透明 */
}
header {
  background-color: hsla(50, 33%, 25%, 0.75);  /* 75% 透明 */
}

background-image

background-image是一个 CSS 属性,用于将一个或多个图像设置为元素的背景。当指定多个图像时,它们显示为一个堆栈,一个在另一个之上。

默认值

background-image 的默认值是 none,这意味着不会显示任何图像。

header {
  background-image: none
}

用法

此示例仅指定单个图像。

header {
  background-image: url('test.jpg');
}

此示例将在 second 图像的顶部显示 first 图像。

header {
  background-image: 
    url('image/first.jpg'), 
    url('image/second.jpg');
}

此示例指定 banner 图像上方的线性渐变。

header {
  background-image: 
    linear-gradient(to bottom, rgba(255,255,0,0.5), rgba(0,0,255,0.5)),
    url('image/banner.jpg');
}

background-position

background-position 属性设置背景图像的起始位置。其值指定图像相对于元素边框的放置的坐标。

background-position 可以用关键字指定(lefttopbottomrightcenter);百分比(0%25% 等);或长度(0cm3px 等)。这些值可以组合在一起。

默认值

background-position 的默认值是 0% 0%,表示元素边框的左上角。

header {
  background-position: 0% 0% /* top left */
}

用法

header {
  background-position: top; /* 顶部居中 */
  background-position: left; /* 左侧居中 */
  background-position: center; /* 水平垂直居中 */
  background-position: 20% 50%; /* 距左侧20% 距顶部50% */
  background-position: bottom 20px left 50px; /* 距底部20% 距左侧50% */
  background-position: left 2cm bottom 5cm; /* 距左侧2cm 距底部5cm */
}

background-size

background-size 属性指定背景图像的大小。它定义了图像是被拉伸、以其原始大小显示还是填充整个可用空间。

值得注意的是,现在图像大小覆盖的空间将填充背景色。

关键字

background-size 可以使用关键字、百分比或长度指定。

  • cover:将图像缩放到尽可能大的位置,但不会拉伸图像。它还可以垂直或水平裁剪图像以覆盖任何空白区域。
  • contain:将图像缩放到尽可能大的位置,但不会裁剪或拉伸图像。
  • auto:按相应方向缩放图像,使图像保持其原始比例

默认值

background-size 的默认值是 auto

header {
  background-size: auto;
}

用法

header {
  background-size: auto /* 默认值 */
    | cover /* 拉伸以填充元素的框 */
    | contain; /* 缩放图像而不剪切/剪切。图像可以重复以填充元素的框 */
}

/* 按 20% 宽度缩放图像,并自动调整高度。图像可以重复以填充元素的框 */
header {
  background-size: 20% auto;
}

/* 按 3em 宽和 25% 高缩放图像。图像可以重复以填充元素的框 */
header {
  background-size: 3em 25%;
}

/* 可以为多个背景指定更多值 */
header {
  background-size: 50%, 25%, 60%;
}

background-repeat

background-repeat 属性定义背景图像的重复方式。背景图像可以沿着水平、垂直、水平垂直重复,或者根本不重复。

由于默认情况下图像被剪裁为其元素的大小,因此也可以使用 background-repeat 属性缩放图像以适应或填充元素的区域。

关键字

background-repeat 属性是使用关键字值指定的。

  • repeat:重复图像以覆盖整个背景
  • no-repeat: 不会重复图片
  • space:重复图像而不剪裁,并在重复图像之间均匀分布空白
  • round:重复图像,并填充重复图像之间的空白
  • repeat-x:仅沿 x 轴重复图像
  • repeat-y:仅沿 y 轴重复图像

默认值

background-repeat 的默认值就是 repeat,它会重复图像,直到图像填充整个元素背景。

header {
  background-repeat: repeat;
}

用法

header {
  background-repeat: repeat-x /* 相当于 repeat no-repeat */
    | repeat-y /* 相当于 no-repeat repeat */
    | repeat     /* 相当于 repeat repeat */
    | space      /* 相当于 space space */
    | round      /* 相当于 round round */
    | no-repeat; /* 相当于 no-repeat no-repeat */
}

background-attachment

background-attachment 属性指定背景图像应可滚动还是固定到视口。

关键字

background-attachment 属性仅使用关键字指定。

  • scroll:将背景图像固定到其元素。不滚动包含内容的背景图像
  • fixed:将背景图像固定到视口。即使内容可滚动,背景图像也不会滚动
  • local:修复相对于元素内容的背景图像,从而允许背景图像随着内容滚动而滚动

默认值

background-attachment 的默认值为 scroll

header {
  background-attachment: scroll;
}

用法

header {
  background-attachment: scroll /* 将图像固定到元素(仅当元素正在滚动而不是元素的内容时才能滚动) */
    | fixed /* 将图像固定到视口 */
    | local; /* 滚动包含内容的图像 */
}

/* 在多个图像上,我们可以指定双值 */
header {
  background-image: url('pic1.gif'), url('pic2.gif');
  background-attachment: fixed, scroll;
}

background-origin

background-origin 属性指定在何处绘制背景图像。使用 content-box 值将跨越整个元素,在边框内使用 border-box 值或在填充内使用 padding-box 值。

请注意,当 background-attachment 设置为 fixed 时,background-origin 将被忽略,并且 background-originbackground-clip 相同,只是它调整背景的大小而不是剪辑。

关键字

background-origin 属性是使用关键字值指定的。

  • content-box:相对于内容区域定位背景
  • border-box:相对于边框区域定位背景
  • padding-box:相对于填充区域定位背景

默认值

background-origin 的默认值是 padding-box 关键字。

header {
  background-origin: padding-box;
}

用法

header {
  background-origin: border-box | padding-box | content-box;
}

/* 我们可以为多个图像指定双值 */
header {
  background-image: url('logo.jpg'), url('banner.png');
  background-origin: content-box, padding-box;
}

background-clip

background-clip 属性用于设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面。

请注意,此属性仅在指定了背景图像或背景颜色时才具有实际效果;否则,它将仅在边界上具有视觉效果。

关键字

background-clip 属性是使用关键字值指定的。

  • border-box:默认值,将背景延伸到元素的边框区域外沿
  • content-box:将背景裁剪至内容区域外沿。
  • padding-box:将背景延伸到元素的填充区域外沿
  • text:将背景被裁剪成文字的前景色。(实验值

默认值

background-clip 的默认值是 border-box 关键字。

header {
  background-clip: border-box;
}

用法

header {
  background-clip: border-box | padding-box | content-box;
}