调整浏览器大小时文本不会与图像重叠并向上移动

Text Won't Overlap Image and Moves up When Resizing Browser

我正在尝试使内部文本与 link 内部的图像重叠。问题是我尝试使用 top。它有效,但如果我尝试调整浏览器的大小,它会向上移动并且不会停留在图像的中间。

    .background1 {
      padding: 40px 20px;
      max-width: 500px;
      margin: 20px;
      transition: 0.5s;
    }

    .background1 a {
      text-decoration: none;
      color: white;
    }

    .background1 a .overlay h2 {
      position: relative;
      text-align: center;
    }

    .background1 img {
      width: 100%;
      border: 3px solid grey;
      transition: 0.5s;
    }

   .overlay{
     color: white;
     text-shadow: 0 2px 4px black;
    }
  <div class="content">
    <div class="background1">
      <a href="#">
        <img src="icon1.jpg"></a>
      <div class="overlay">
        <h2>Web Design</h2>
      </div>
      </a>
    </div>
    <div class="background1">
      <a href="#">
        <img src="icon2.jpg"></a>
      <div class="overlay">
        <h2>JAVA</h2>
      </div>
      </a>
    </div>
    <div class="background1">
      <a href="#">
        <img src="icon3.jpg"></a>
      <div class="overlay">
        <h2>CSS</h2>
      </div>
      </a>
    </div>
    <div class="background1">
      <a href="#">
        <img src="icon4.jpg"></a>
      <div class="overlay">
        <h2>HTML</h2>
      </div>
      </a>
    </div>
</div>

如果我就这样离开。 h2 文本将位于图像的底部中心。 如果我添加 top: -120px;,那么文本会转到图像的中间。但是,当我尝试调整大小以查看它在移动设备中的外观时 phone,它开始向上远离图像。

我该如何解决这个问题?另外,我想将它保留在 css 中。我还在学习中,所以我不想深入研究一些奇怪的功能或编码。

我想这就是您想要的。您需要将叠加层 放在锚点内 并将其放置在绝对位置,以便它完全覆盖图像。然后将文本置于该叠加层的中心。当您调整视口大小时,文本将留在中间,但当然它会相对于图像变大。 (如有必要,这可以通过媒体查询进行调整)。

* {
  box-sizing: border-box;
}

.content {
  display: flex;
  flex-wrap: wrap;
  background: blanchedalmond;
}

.background1 {
  width: 40%;
  background: oldlace;
  margin: 10px;
}

.background1 a {
  text-decoration: none;
  color: white;
  padding: 40px;
}

.anchor {
  border: 3px solid grey;
  position: relative;
  display: inline-block;
  text-align: center;
  box-shadow: -2px 2px 5px 2px rgba(0, 0, 0, 0.2);
}

img {
  width: 100%;
  vertical-align: middle;
}

.overlay {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  display: flex;
}

h2 {
  margin: auto;
}
<div class="content">
  <div class="background1">
    <a class="anchor" href="#">
      <img src="https://i.guim.co.uk/img/media/a1e119a48076615b6502ceccd369bc72bcf5d93a/0_374_5616_3370/master/5616.jpg?width=1200&height=1200&quality=85&auto=format&fit=crop&s=68a05c30b5154497160d38f176556727">
      <div class="overlay">
        <h2>Web Design</h2>
      </div>
    </a>
  </div>
  <div class="background1">
    <a class="anchor" href="#">
      <img src="https://i.guim.co.uk/img/media/a1e119a48076615b6502ceccd369bc72bcf5d93a/0_374_5616_3370/master/5616.jpg?width=1200&height=1200&quality=85&auto=format&fit=crop&s=68a05c30b5154497160d38f176556727">
      <div class="overlay">
        <h2>JAVA</h2>
      </div>
    </a>
  </div>
  <div class="background1">
    <a class="anchor" href="#">
      <img src="https://i.guim.co.uk/img/media/a1e119a48076615b6502ceccd369bc72bcf5d93a/0_374_5616_3370/master/5616.jpg?width=1200&height=1200&quality=85&auto=format&fit=crop&s=68a05c30b5154497160d38f176556727">
      <div class="overlay">
        <h2>CSS</h2>
      </div>
    </a>
  </div>
  <div class="background1">
    <a class="anchor" href="#">
      <img src="https://i.guim.co.uk/img/media/a1e119a48076615b6502ceccd369bc72bcf5d93a/0_374_5616_3370/master/5616.jpg?width=1200&height=1200&quality=85&auto=format&fit=crop&s=68a05c30b5154497160d38f176556727">
      <div class="overlay">
        <h2>HTML</h2>
      </div>
    </a>
  </div>
</div>