319

是否可以有两个背景图像?例如,我想让一个图像在顶部重复(repeat-x),另一个在整个页面上重复(repeat),其中整个页面上的图像在顶部重复的图像后面。

我发现可以通过设置html和body的背景来实现两张背景图片想要的效果:

html {
    background: url(images/bg.png);
}

body {
    background: url(images/bgtop.png) repeat-x;
}

这是“好”的 CSS 吗?有没有更好的方法?如果我想要三个或更多背景图像怎么办?

4

8 回答 8

379

CSS3 允许这种事情,它看起来像这样:

body {
    background-image: url(images/bgtop.png), url(images/bg.png);
    background-repeat: repeat-x, repeat;
}

所有主流浏览器的当前版本现在都支持它,但是如果您需要支持 IE8 或更低版本,那么您可以解决它的最佳方法是拥有额外的 div:

<body>
    <div id="bgTopDiv">
        content here
    </div>
</body>
body{
    background-image: url(images/bg.png);
}
#bgTopDiv{
    background-image: url(images/bgTop.png);
    background-repeat: repeat-x;
}
于 2009-01-08T03:45:22.590 回答
36

我发现在一个 div 中使用两个不同背景图像的最简单方法是使用这行代码:

body {
    background:url(image1.png) repeat-x, url(image2.png) repeat;
}

显然,这不仅仅适用于网站的主体,您可以将其用于您想要的任何 div。

希望有帮助!如果有人需要进一步的说明或帮助,我的博客上有一篇文章会更深入地讨论这个问题 - http://blog.thelibzter.com/css-tricks-use-two-background-images-for-one-分区

于 2011-03-11T02:48:28.237 回答
27

用这个

body {
background: url(images/image-1.png), url(images/image-2.png),url(images/image-3.png);
background-repeat: no-repeat, repeat-x, repeat-y;
background-position:10px 20px , 20px 30px ,15px 25px;
}

一种使用背景位置调整每个图像位置的简单方法:并使用背景重复设置重复属性:为每个图像单独设置

于 2013-07-23T08:27:10.990 回答
13

当前版本的 FF 和 IE 以及其他一些浏览器在单个 CSS2 声明中支持多个背景图像。看这里http://dense13.com/blog/2008/08/31/multiple-background-images-with-css2/和这里http://www.quirksmode.org/css/multiple_backgrounds.html和这里http:// /nicolasgallagher.com/multiple-backgrounds-and-borders-with-css2/

对于 IE,您可能会考虑添加一个行为。看这里:http ://css3pie.com/

于 2010-10-30T23:00:16.103 回答
4

是的,这是可能的,并且已由流行的可用性测试网站Silverback实施。如果您查看源代码,您可以看到背景是由多个图像组成的,它们相互叠加。

这是一篇演示如何在维生素上找到效果的文章。可以在A List Apart上找到用于包裹这些“洋葱皮”层的类似概念。

于 2009-01-08T03:51:09.753 回答
4

如果您想要多个背景图像但不希望它们重叠,您可以使用这个 CSS:

body {
  font-size: 13px;
  font-family:Century Gothic, Helvetica, sans-serif;
  color: #333;
  text-align: center;
  margin:0px;
  padding: 25px;
}

#topshadow {
  height: 62px
  width:1030px;
  margin: -62px
  background-image: url(images/top-shadow.png);
}

#pageborders {
width:1030px;
min-height:100%;
margin:auto;        
    background:url(images/mid-shadow.png);
}

#bottomshadow {
    margin:0px;
height:66px;
width:1030px;
background:url(images/bottom-shadow.png);
}

#page {
  text-align: left;
  margin:62px, 0px, 20px;
  background-color: white;
  margin:auto;
  padding:0px;
  width:1000px;
}

使用此 HTML 结构:

<body 

<?php body_class(); ?>>

  <div id="topshadow">
  </div>

  <div id="pageborders">

    <div id="page">
    </div>
  </div>
</body>
于 2011-02-02T07:28:46.227 回答
2

#example1 {
    background: url(http://www.w3schools.com/css/img_flwr.gif) left top no-repeat, url(http://www.w3schools.com/css/img_flwr.gif) right bottom no-repeat, url(http://www.w3schools.com/css/paper.gif) left top repeat;
    padding: 15px;
    background-size: 150px, 130px, auto;
background-position: 50px 30px, 430px 30px, 130px 130px;
}
<!DOCTYPE html>
<html>
<head>

</head>
<body>

<div id="example1">
<h1>Lorem Ipsum Dolor</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
<p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
</div>

</body>
</html>

我们可以使用 CSS3 轻松添加多个图像。我们可以在这里详细阅读http://www.w3schools.com/css/css3_backgrounds.asp

于 2016-04-06T18:05:05.527 回答
1

您可以为顶部设置一个 div,一个背景,另一个用于主页,并将它们之间的页面内容分开,或者将内容放在另一个 z 级别的浮动 div 中。您这样做的方式可能有效,但我怀疑它是否适用于您遇到的每个浏览器。

于 2009-01-08T03:44:13.577 回答