background-image

CSS中background-image属性应用图形(例如PNG,SVG,JPG,GIF,WEBP)或者渐变到元素背景上。

你可以在CSS中包含两种不同样式的图片:常规图片和渐变。

图像

在背景上使用图像是相当简单:

body {
  background: url(sweettexture.jpg);
}

url()值允许你提供任何图片的文件路径,并且作为该元素的背景展示。

你可以为url()设置一个数据URI.看起来像这样:

body {
  /* Base64 encoded transparent gif */
  background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
}

这种技术删除了一个HTTP请求,这是一件好事。但是同样存在许多缺点,所以在你开始替换所有图像之前,请确保考虑数据URI的所有优缺点。

你还可以使用background-image来实现图片,这是另一种减少HTTP请求的有用方法。

渐变

使背景的另一种选择是告知浏览器创建一个渐变。这是一个极好的简单线性渐变的例子。

body {
  background: radial-gradient(circle, black, white);
}

从技术上将,渐变只是背景图片的另一种形式。区别在于浏览器会为你制作图片。以下是如何书写它们:CSS3渐变语法

上面的示例仅仅是一个渐变,但你也可以叠加多个渐变。你使用这种技术可以创建一些非常棒的模式。

设置回退颜色

如果背景图片加载失败,或者在不支持渐变的浏览器上查看渐变背景,浏览器将查找一个背景颜色座位回退。你可以像这样指定回退颜色:

body {
  background: url(sweettexture.jpg) blue;
}

多背景图片

你可以为背景使用多个图片或者图片和渐变的混合。现在多个背景图片已经获得了较好的支持(所有现代浏览器以及IE9+支持图形图片,IE10+支持渐变)。

当使用多背景图片时,请注意一些反直觉的堆叠顺序。列出应该位于前面的图片以及应该位于后面的图片,如下所示:

body {
  background: url(logo.png), url(background-pattern.png);
}

  

当你使用多背景图片,你通常需要为背景设置更多值来让所有内容再正确的位置。如果想要使用background简写,你可以单独为每个图片设置值。简写看起来像这样(请注意将第一个图像和它的值与第二个图像和它的值用逗号分隔开):

body {
  background:
    url(logo.png) bottom center no-repeat,
    url(background-pattern.png) repeat;
}

  

设置背景图片的数量并没有限制,你可以做一些很酷的事情,比如为背景图像设置动画。在David Walsh的博客上有一个很好的带动画背景图片的例子。

演示

HTML代码

  <h2>Image Background</h2>
  <div id="imageonly">
    <!-- 图片不易察觉-->
  </div>

  <h2>Gradient Background: Linear</h2>
  <div id="linear-gradient">
  </div>

  <h2>Gradient Background: Radial</h2>
  <div id="radial-gradient">
  </div>

  <h2>Multiple Backgound Images</h2>
  <p>Two images: CodePen logo & off-white pattern.</p>
  <div id="multiimage">
  </div>

  

CSS代码

    /* 图片背景 */
    #imageonly {
      background: url(https://img2018.cnblogs.com/blog/1378575/201908/1378575-20190830141838937-2076740451.png);
    }

    /* 线性渐变背景 */
    #linear-gradient {
      background: linear-gradient(black, white);
    }

    /* 径向渐变背景 */
    #radial-gradient {
      background: radial-gradient(circle, black, white);
    }

    /*多背景图片*/

    #multiimage {
      background:
        url(https://img2018.cnblogs.com/blog/1378575/201908/1378575-20190830141855018-1747049510.png
) bottom center no-repeat,
        url(https://img2018.cnblogs.com/blog/1378575/201908/1378575-20190830141838937-2076740451.png) repeat;
    }

    /* 外围元素样式, 与背景无关 */
    body {
      font-family: sans-serif;
    }

    div {
       300px;
      height: 300px;
      margin-bottom: 1.5em;
    } 

图片背景

渐变背景:线性渐变

 

渐变背景:径向渐变

 

多背景图片

 
原文地址:https://www.cnblogs.com/f6056/p/11434794.html