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 {
width: 300px;
height: 300px;
margin-bottom: 1.5em;
}
图片背景
渐变背景:线性渐变
渐变背景:径向渐变
多背景图片


浙公网安备 33010602011771号