调整大小时,文本在图像上垂直和水平居中

Center text vertically and horizontally over image when resized

我正在尝试让文字在图片上居中;但是,每当我调整它的大小时,文本不会保持垂直居中。

.hero-image {
  margin: 0 auto;
}

.hero-image img {
  width: 100%;
}

.hero-text {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
}
<div class="hero-image">
  <img src="https://content.codecademy.com/courses/freelance-1/unit-4/img-mission-background.jpg">
  <div class="hero-text">
    Here is the hero text
  </div>
</div>

情况如下: 好好工作:

调整大小时垂直居中关闭:

您需要为定位child设置容器的边界。将 position: relative 添加到 .hero-image class。否则它将使用下一个亲戚 parent。

.hero-image {
  margin: 0 auto;
  position: relative;
}

.hero-image img {
  width: 100%;
}

.hero-text {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  color: red;
}
<div class="hero-image">
  <img src="https://content.codecademy.com/courses/freelance-1/unit-4/img-mission-background.jpg">
  <div class="hero-text">
    Here is the hero text
  </div>
</div>

您的 css 英雄文字看起来不错 – 如果我正确理解您的问题,我认为图像应该修改为使用 100 视口宽度/高度而不是 100%。

body {
  margin: 0;
}

.hero-image img {
  width: 100vw;
  height: 100vh;
  object-fit: cover;
}

.hero-text {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
}

您可以试试这个免翻译解决方案:

.hero-text {
    position: absolute;
    top: 33vw;
    text-align: center;
    width: 100%;
}

如果您打算在整个宽度上保持图片拉伸。

你可以用“display: flex”来实现。

.hero-image {
    background-image: url(https://content.codecademy.com/courses/freelance-1/unit-4/img-mission-background.jpg);
    background-size: cover;
    background-position: center;
    width: 100%;
    height: 100vh;
    display: flex;
  justify-content: center;
  align-items: center;
  }
  
  .hero-image img {
    width: 100%;
  }
  
  .hero-text {
  }