在HTML / CSS中,你可以像在后台一样重复前景中的图像吗?

时间:2012-08-08 08:24:32

标签: html css

这是我的CSS

.test {
  background-image:url('images/smiley.gif');
  background-repeat:repeat;
}

这是我的HTML:

<div class="test" id="xyz">some code which should come background to image</div>

我写的代码设置了背景图片。

但是我想在文本的顶部放置一个图像,而不是在它后面,以便它覆盖文本。 (我也希望它能自动重复填充元素,可以是任何大小。)

我该怎么做?

3 个答案:

答案 0 :(得分:4)

这应该可以解决问题。 :before选择器会使用给定的div创建一个假content(这里是一个空格,因为没有内容属性,我认为使用空字符串内容,假div没有创建),可以设置样式。因此,假冒div已创建,并使用background-image,给定heightwidth以及z-index 1进行样式设置,同时真实div的z-index为零,显示在下方。

<!DOCTYPE html>
<html>
  <head>
    <title>Test page</title>
    <style>
.test:before {
    content: " ";
    position: absolute;
    width: 100px; height: 100px;
    background-image:url('http://upload.wikimedia.org/wikipedia/commons/a/a4/Smiley_transparent.png');
    background-repeat:repeat;
    z-index: 1;
}
.test {
    z-index: 0;
}
    </style>
  </head>
  <body>
    <div class="test" id="xyz">some code which should come background to image</div>
  </body>
</html>

将此与Paul D. Waiteanswer相结合,可避免在代码中显示明确的范围。

我认为:before必须应用于.test :first-child:before,因此它将是xyz div的孩子,而不是兄弟姐妹,但似乎没有必要(尽管它让我失望)。

您可以实时测试结果on jsfiddle

<!DOCTYPE html>
<html>
  <head>
    <title>Test page</title>
      <style>
.test {
    position: relative;
}

.test:before {
  content: " ";
  position: absolute;
  top: 0;
  bottom: 0;
  height: auto;
  left: 0;
  right: 0;
  width: auto;
  background-image:url('http://upload.wikimedia.org/wikipedia/commons/a/a4/Smiley_transparent.png');
  background-repeat:repeat;
}
    </style>
  </head>
  <body>
      Some text before.
      <div class="test" id="xyz">some code which should come background to image</div>
      Some text after.
  </body>
</html>

答案 1 :(得分:2)

有趣的任务。如果您愿意添加额外的HTML元素,我认为应该这样做。 (或者,使用.test:before代替.test .foregroundImage,例如Georges’ answer)。

HTML

<div class="test" id="xyz"><span class="foregroundImage"></span>some code which should come background to image</div>

CSS

.test {
    position: relative;
}

.test .foregroundImage {
  position: absolute;
  top: 0;
  bottom: 0;
  height: auto;
  left: 0;
  right: 0;
  width: auto;
  background-image:url('images/smiley.gif');
  background-repeat:repeat;
}

有关工作示例,请参阅http://jsfiddle.net/RUJYf/

答案 2 :(得分:1)

CSS

  <style type="text/css">
    .test { position: relative; }
    .test img, .test p { position: absolute; top: 0; }
    .test img { z-index: 10; }
    .test p { margin: 0; padding: 0; }
  </style>

HTML

<div class="test">
  <img src="images/smiley.gif" />
  <p>some code which should come background to image</p>
</div>