Skip to content

[翻译]CSS 的 background 属性

原文The Background Properties
(译文发布在伯乐在线,感谢刘唱校稿)

正如我之前所说,文档树中的元素都是一个方盒。每个盒都有背景层,它是透明的、有颜色的或一张图片。背景层由 8 个 CSS 属性(和 1 个简写属性)控制

background-color

background-color 属性设置元素背景颜色。它的值可以是一个合法的颜色值或 transparent 关键字。

.left { background-color: #ffdb3a; }
.middle { background-color: #67b3dd; }
.right { background-color: transparent; }

在由 background-clip 关键字指定的盒模型区域内填充背景颜色。如果也设置了背景图片,颜色层会在它们后面。图片层可以设置多个,每个元素只拥有一个颜色层。

background-image

background-image 属性为元素定义一个(或多个)背景图片。它的值是用 url() 符号定义的图片 url。none 也是允许的,它会被当做空的一层。

.left { background-image: url('ire.png'); }
.right { background-image: none; }

我们也可以指定多个背景图片,用逗号隔开。沿着 z 轴从前向后依次绘制每个图片。

.middle { 
  background-image: url('khaled.png'), url('ire.png');

  /* Other styles */
  background-repeat: no-repeat; 
  background-size: 100px;
}

background-repeat

background-size 指定大小和 background-position 指定位置后,background-repeat 属性控制如何平铺背景图片。

属性值可以是下面关键字之一 repeat-xrepeat-yrepeatspaceroundno-repeat。除了前两个(repeat-xrepeat-y)之外,其他关键字可以只写一次来同时定义 x 轴和 y 轴,或分开定义两个维度。

.top-outer-left { background-repeat: repeat-x; }
.top-inner-left { background-repeat: repeat-y; }
.top-inner-right { background-repeat: repeat; }
.top-outer-right { background-repeat: space; }

.bottom-outer-left { background-repeat: round; }
.bottom-inner-left { background-repeat: no-repeat; }
.bottom-inner-right { background-repeat: space repeat; }
.bottom-outer-right { background-repeat: round space; }

background-size

background-size 属性定义背景图片的大小。它的值可以是一个关键字、一个长度或一个百分比。

属性可用的关键字是 containcovercontain 会按比例将图片放大直到宽高完全适应区域。cover 会将其调整至能够完全覆盖该区域的最小尺寸。

.left { 
  background-size: contain;
  background-image: url('ire.png'); 
  background-repeat: no-repeat;
}
.right { background-size: cover; /* Other styles same as .left */ }

对于长度值和百分比,我们可以用来定义背景图片的宽高。百分比值通过元素的尺寸来计算。

.left { background-size: 50px; /* Other styles same as .left */ }
.right { background-size: 50% 80%; /* Other styles same as .left */ }

background-attachment

background-attachment 属性控制背景图片在可视区和元素中如何滚动。它有三个可能的值。

fixed 意思是背景图片相对于可视区固定,即使用户滚动可视区时也不移动。local 意思是背景在元素中位置固定。如果元素有滚动机制,背景图片会相对于顶端定位,当用户滚动元素时,背景图片会离开视野。最后,scroll 意思是背景图片固定,不会随着元素内容滚动。

.left { 
  background-attachment: fixed;
  background-size: 50%;
  background-image: url('ire.png'); 
  background-repeat: no-repeat;
  overflow: scroll;
}
.middle { background-attachment: local; /* Other styles same as .left */ }
.right { background-attachment: scroll; /* Other styles same as .left */ }

background-position

这个属性,结合 background-origin 属性,定义了背景图片起始位置。它的值可以是一个关键字、一个长度或一个百分比,我们可以依次定义 x 轴和 y 轴的位置。

可用的关键字有toprightbottomleftcenter。我们可以任意组合使用,如果只指定了一个关键字,另一个默认是 center

.top-left { 
  background-position: top;
  background-size: 50%;
  background-image: url('ire.png'); 
  background-repeat: no-repeat;
}
.top-middle { background-position: right;  /* Other styles same as .top-left */ }
.top-right { background-position: bottom;  /* Other styles same as .top-left */ }
.bottom-left { background-position: left;  /* Other styles same as .top-left */ }
.bottom-right { background-position: center;  /* Other styles same as .top-left */ }

对于长度值和百分比值,我们也可以依次定义 x 轴和 y 轴的位置。百分比值相对于容器元素。

.left { background-position: 20px 70px; /* Others same as .top-left */ }
.right { background-position: 50%; /* Others same as .top-left */ }

background-origin

background-origin 属性定义背景图片根据盒模型的哪个区域来定位。

可用的值有 border-box基于边框(Border)区域定位图片,padding-box 基于填充(Padding)区域,content-box 基于内容(Content)区域。

.left { 
  background-origin: border-box;
  background-size: 50%;
  background-image: url('ire.png'); 
  background-repeat: no-repeat;
  background-position: top left; 
  border: 10px dotted black; 
  padding: 20px;
}
.middle { background-origin: padding-box;  /* Other styles same as .left*/ }
.right { background-origin: content-box;  /* Other styles same as .left*/ }

background-clip

background-clip 属性决定背景绘制区域,也就是背景可以被绘制的区域。像 background-origin 属性一样,它也基于盒模型。

.left{ 
  background-clip: border-box;
  background-size: 50%;
  background-color: #ffdb3a; 
  background-repeat: no-repeat;
  background-position: top left; 
  border: 10px dotted black; 
  padding: 20px;
}
.middle { background-clip: padding-box;  /* Other styles same as .left*/ }
.right { background-clip: content-box;  /* Other styles same as .left*/ }

background

最后,background 属性是其他背景相关属性的简写。子属性的顺序并没有影响,因为每个属性的数据类型不同。然而,对于 background-originbackground-clip 属性,如果只指定了一个盒模型区域,会应用到两个属性。如果指定了两个,第一个设置为background-origin 属性。

Published inTranslate

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注