6

这是我的 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>

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

但我想将图像放在文本之上,而不是在其后面,以便它覆盖文本。(我还希望它自动重复填充元素,可以是任何大小。)

我怎样才能做到这一点?

4

3 回答 3

4

这应该可以解决问题。选择:beforediv使用给定的content(这里是空格,因为没有内容属性,并且我认为使用空字符串内容,div不会创建假),并且可以设置样式。因此,假货div被创建,并使用 a background-image、给定的heightandwidth和 a z-indexof 进行样式设置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. Waite答案结合起来,避免了代码中的显式跨度。

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

您可以在 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>
于 2012-08-08T08:32:50.113 回答
2

有趣的任务。如果您愿意添加额外的 HTML 元素,我认为应该这样做。(或者,使用.test:before代替.test .foregroundImage,就像在乔治的回答中一样)。

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/ 。

于 2012-08-08T08:43:50.923 回答
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>
于 2012-08-08T08:38:21.333 回答