如何在容器中的图像上叠加文本 - 并将文本保留在容器中

时间:2017-09-26 23:09:34

标签: html css image background-image overlay

我正在使用relativeabsolute定位关注如何在图像上叠加文字的解决方案。问题是带有position: absolute的文本会从其容器中弹出,并最大限度地使用topright等。

我很乐意使用背景图片,但是我需要一些技巧来让容器与图像的大小相匹配,而且我不知道如何让它变得流畅。

似乎是一个非常简单的问题,人们总是在寻找解决方案。也是在不透明图像上叠加文本并需要使用:after的事情。希望这些情况有明确的选择。

.container {
  margin: 0 10%;
}
.container img {
  position: relative;
  width: 100%;
}

#div1 .text {
  position: absolute;
  bottom: 0;
  right: 0;
}

#div2 .text {
  position: absolute;
  top: 0;
  left: 0;
}
<div id="div1" class="container">
  <img src="http://placehold.it/800x200" />
  <div class="text">
    <h3>Top Image</h3>
    <p>This text should be in the bottom right of the top image.</p>
  </div>
</div>

<div><p>A bunch of miscellaneous text here.</p></div>

<div id="div2" class="container">
  <img src="http://placehold.it/800x200" />
  <div class="text">
    <h3>Lower Image</h3>
    <p>This should be in the top left of the lower image.</p>
  </div>
</div>

2 个答案:

答案 0 :(得分:2)

您需要在position:relative上设置.container,这是.text的正确容器。请注意,img.text的兄弟,而不是其容器。

&#13;
&#13;
.container {
  margin: 0 10%;
  position: relative;
}
.container img {
  width: 100%;
}

#div1 .text {
  position: absolute;
  bottom: 0;
  right: 0;
}

#div2 .text {
  position: absolute;
  top: 0;
  left: 0;
}
&#13;
<div id="div1" class="container">
  <img src="http://placehold.it/800x200" />
  <div class="text">
    <h3>Top Image</h3>
    <p>This text should be in the bottom right of the top image.</p>
  </div>
</div>

<div><p>A bunch of miscellaneous text here.</p></div>

<div id="div2" class="container">
  <img src="http://placehold.it/800x200" />
  <div class="text">
    <h3>Lower Image</h3>
    <p>This should be in the top left of the lower image.</p>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我不太确定有足够的信息。我假设您的容器宽800像素,高200像素(我已经使用了最小高度以防容器增加其高度)。如果你能提供更好的更具体的信息(有更复杂的方法使用对象位置属性(等)使这一点变得更聪明&#34;更聪明&#34;。

img {
  max-width: 100%;
  display: block;
  height: auto;
}

.container {
  position: relative;
  min-height: 200px;
  width: 800px;
  margin: 0 10%;
}

.container img {
  z-index: 500;
  top: 0;
  left: 0;
}

.container .text {
  position: absolute;
  z-index: 1000;
}

#div1 .text {
  bottom: 0;
  right: 0;
}

#div2 .text {
  position: absolute;
  top: 0;
  left: 0;
}