html - flexbox 1 div 中的 2 个元素堆叠

标签 html css flexbox

我正在尝试使用 Flexbox 将文本放在 div 内的图像之上。尝试了各种方法,但它们仍然表现为单独的 flex 元素并且彼此相邻出现。

问题是,每当 Flexbox 容器中有超过 1 个元素彼此相邻出现时,我还没有找到一种方法来让它们位于图像的顶部并居中。

除了下面的内容之外,我还尝试从 .inner 中删除 Flexbox 属性,并且令 .inner 内的元素仍然表现得像 Flex 元素一样令人惊讶。

header {
  text-align: center;
}

.outer {
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.inner {
  display: flex;
  justify-content: center;
  align-items: center;
}

.inner-item {
  position: absolute;
  align-self: center;
}

.inner-img {
  max-width: 100px;
}

footer {
  text-align: center;
  margin-top: 60px;
}
<header>
  <h1>Header</h1>
</header>
<div class="outer">
  <div class="inner">
    <img class="inner-item inner-img" src="http://klequis.com/so/green.circle.svg" />
    <span class="inner-item">Item Text</span>
  </div>
  <div class="inner">
    <img class="inner-item inner-img" src="http://klequis.com/so/green.circle.svg" />
    <span class="inner-item">Item Text</span>
  </div>
  <div class="inner">
    <img class="inner-item inner-img" src="http://klequis.com/so/green.circle.svg" />
    <span class="inner-item">Item Text</span>
  </div>
</div>
<footer>
  <h1>Footer</h1>
</footer>

codepen 上的链接 codepen

最佳答案

.inner设置为position:relative,然后将文本绝对定位在图像的中心。

.outer {
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.inner {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
}

.inner-img {
  max-width: 100px;
}

span.inner-item {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
}
<div class="outer">
  <div class="inner">
    <img class="inner-item inner-img" src="http://klequis.com/so/green.circle.svg" />
    <span class="inner-item">Item Text</span>
  </div>
  <div class="inner">
    <img class="inner-item inner-img" src="http://klequis.com/so/green.circle.svg" />
    <span class="inner-item">Item Text</span>
  </div>
  <div class="inner">
    <img class="inner-item inner-img" src="http://klequis.com/so/green.circle.svg" />
    <span class="inner-item">Item Text</span>
  </div>
</div>

关于html - flexbox 1 div 中的 2 个元素堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937135/

相关文章:

html - CSS 中 Angular 一致的三 Angular 形边

java - 在 java 中包含 css(用于 href 标签)

ios - iPad 上的 CSS 灵活框布局

javascript - 禁用调整固定 flex 的大小

html - 将两个元素设置为 100% 宽度,但一个看起来比另一个宽得多

javascript - jQuery 在元素可见时更改元素的 css 属性

html - 当我没有标签文本时,如何避免我的标签在我的自定义复选框中折叠?

html - 如何使 div 的高度在聊天中的所有设备上响应?

php - 展开链接以显示图像,无需使用 JavaScript

html - 在 flex 元素中垂直和水平居中文本