一、简介

background 是一种 CSS 简写属性,用于一次性集中定义各种背景属性

  1. background-image:用于为一个元素设置一个或者多个背景图像
  2. background-repeat:定义背景图像的重复方式
  3. background-position:为每一个背景图片设置初始位置
  4. background-size:设置背景图片大小
  5. background-origin:规定了指定背景图片 background-image 属性的原点位置的背景相对区域
  6. background-clip:设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面
  7. background-attachment:决定背景图像的位置是在视口内固定,或者随着包含它的区块滚动
  8. background-color:设置元素的背景色

当使用 background 属性时,各个背景属性都有初始值

  1. .test{
  2. background-image: none;
  3. background-repeat: repeat;
  4. background-position: 0% 0%;
  5. background-size: auto auto;
  6. background-origin: padding-box;
  7. background-clip: border-box;
  8. background-attachment: scroll;
  9. background-color: transparent;
  10. }

二、各个属性

1. background-image

用于为一个元素设置一个或者多个背景图像

  • 在绘制时,图像以 z 方向堆叠的方式进行,第一个图像“最接近用户”。
  • border 在 background-image 之上绘制
  • background-color 在 background-image 之下绘制
  • 图像的绘制与盒子及边框的关系由 bakground-clip、background-origin 中定义
  • 默认值为 none
  • 渐变是一种特殊的图片类型,常用的有线性渐变 linear-gradient()、圆锥形渐变 conic-gradient()

    1. .test {
    2. background-image: url("//placekitten.com/200/300"), url("//placekitten.com/300/300")
    3. }

    linear-gradient() 用法贴士

  • 先指定渐变的角度,然后写 color 值并可跟随一个终点位置

  • 角度默认值为 to bottom
  • 第一个 color 终点之前的颜色都是第一个 color,最后一个 color 终点之后的颜色都是最后一个 color

    1. .test {
    2. background-image: linear-gradient(to bottom, red, green, blue)
    3. })

    conic-gradient() 用法贴士

  • 先指定渐变角度及渐变位置,然后写 color 值并可跟随一个终点位置

  • 角度及渐变位置默认为 from 0 at 50% 50%
  • 第一个 color 终点之前的颜色都是第一个 color,最后一个 color 终点之后的颜色都是最后一个 color
  • 用法和 linear-gradient 一样,主要区别就是颜色方向的调整从一条直线变成一个圈
  • 角度渐变在 Chrome 中2018 年才正式开始支持
    1. .test{
    2. background-image: conic-gradient(from 0 at 50% 50%, red 120deg,green 120deg,green 240deg,blue 240deg, blue 360deg);
    3. }

2. background-repeat

定义背景图像的重复方式

  • 可以在 x、y 方向上分别设置重复方式,我写的最多的是 no-repeat,对图片在 x、y 方向上都不重复
    1. /* x、y 方向上都不重复 */
    2. .test{
    3. background-repeat: no-repeat;
    4. }
    5. /* 只在 x 方向上重复 */
    6. .test2{
    7. background-repeat: repeat-x;
    8. }
    9. /* 只在 y 方向上重复 */
    10. .test3{
    11. background-repeat: no-repeat repeat;
    12. }

3. background-position

为每一个背景图片设置初始位置,这个位置是相对于 background-origin 定义的位置涂层

  • 设置位置时,可以直接写关键字、百分数、像素,写法很多
  • 当有多个图片时,可以写多个位置,用逗号隔开,如果只写一种位置,就会为这些图片都设置成这个位置 ```css .test{ background-position: center; }

/ 设置两个图片的位置 / .test2{ background-position: center, left 0, top 20px; }

  1. <a name="dUTlc"></a>
  2. ### 4. background-size
  3. 设置背景图片大小。图片可以保有其原有的尺寸,或者拉伸到新的尺寸,或者保持其原有比例的同时缩放到元素的可用空间的尺寸
  4. - 设置背景图片大小时,可以写关键字、百分数、像素,写法很多
  5. - 当有多个图片时,可以写多个大小,用逗号隔开,如果只写一种位置,就会为这些图片都设置成这个大小
  6. ```css
  7. .test{
  8. background-size: contain;
  9. }
  10. .test2{
  11. background-size: cover;
  12. }
  13. .test3{
  14. background-size: 50%, 30%;
  15. }

5. background-origin

规定了指定背景图片background-image 属性的原点位置的背景相对区域

  • 一般不设置它,遇到特殊情况时会调节一下,可以设置三种值 ```css /背景图片的摆放以padding区域为参考/ .test{ background-origin: padding-box; }

/背景图片的摆放以border区域为参考/ .test2{ background-origin: border-box; }

/背景图片的摆放以content区域为参考/ .test3{ background-origin: content-box; }

  1. <a name="t1K3e"></a>
  2. ### 6. background-clip
  3. 设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面
  4. - 一般不设置它,遇到特殊情况时会调节一下,可以设置三种值
  5. ```css
  6. /* 背景延伸至边框外沿(但是在边框下层)*/
  7. .test{
  8. background-clip: border-box;
  9. }
  10. /*背景延伸至内边距(padding)外沿。不会绘制到边框处*/
  11. .test2{
  12. background-clip: padding-box;
  13. }
  14. /*背景被裁剪至内容区(content box)外沿*/
  15. .test3{
  16. background-clip: content-box;
  17. }

chrome 浏览器中,加上前缀,将其值设为 text,可以设置背景附着到文字上

  1. /*背景被裁剪成文字的前景色*/
  2. .test{
  3. -webkit-background-clip: text;
  4. color: transparent;
  5. }

7. background-attachment

决定背景图像的位置是在视口内固定,或者随着包含它的区块滚动

  • 一般不设置它,遇到特殊情况时会调节一下,可以设置三种值 ```css /背景相对于元素本身固定/ .test{ background-attachment: scroll; }

/背景相对于元素的内容固定/ .test2{ background-attachment: local; }

/背景相对于视口固定/ .test3{ background-attachment: fixed; }

  1. <a name="kD3J7"></a>
  2. ### 8. background-color
  3. 设置元素的背景色
  4. - 属性值为色值或关键字
  5. ```css
  6. .test{
  7. background-color: rgba(0,0,0,0.2);
  8. }
  9. .test2{
  10. background-color: transparent;
  11. }

三、一些例子

1. 透明格子背景

  1. .test{
  2. background: linear-gradient(45deg, #F2F3F7 25%, transparent 25%, transparent 75%, #F2F3F7 75%) 0 0/16px 16px, linear-gradient(45deg, #F2F3F7 25%, transparent 25%, transparent 75%, #F2F3F7 75%) 8px 8px/16px 16px, #FFF;p
  3. }

2. 背景图片居中

  1. /* 优先撑满容器 */
  2. .test{
  3. background: url("//placekitten.com/200/300") no-repeat center/contain tan;
  4. }
  5. /* 优先完整展示图片 */
  6. .test2{
  7. background: url("//placekitten.com/200/300") no-repeat center/cover tan;
  8. }

四、参考链接

background - MDN:https://developer.mozilla.org/en-US/docs/Web/CSS/background
background - CSS Tricks:https://css-tricks.com/almanac/properties/b/background/