【问题标题】:Vertically align two lines of text inside a div垂直对齐 div 内的两行文本
【发布时间】:2020-08-06 06:01:08
【问题描述】:

在这篇文章之前,我阅读了几篇关于该主题的文章,并且我已经了解了一些用于垂直对齐的技巧 - 单行文本的行高、几个 div 和 Flexbox 的 display:table在 CSS3 中。但我仍然需要帮助来对齐 div 内的两条线:

.keys {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  min-height: 70vh;
}

.key {
  border: 0.1rem solid white;
  margin: 1rem;
  width: 5rem;
  height: 5rem;
  padding: 0.5rem 0;
  text-align: center;
  color: white;
}

kbd {
  display: block;
}
<div class="keys">
  <div class="key" data-key="65"><kbd>A</kbd><span class="sound">text</span></div>
  <div class="key" data-key="83"><kbd>S</kbd><span class="sound">text</span></div>
  <div class="key" data-key="68"><kbd>D</kbd><span class="sound">text</span></div>
  <div class="key" data-key="70"><kbd>F</kbd><span class="sound">text</span></div>
</div>

如您所见,我已经有一个 flexbox 容器,要使用 display:table 需要一个额外的 div。也许使用填充或一些相对定位将是答案。将此文本内容垂直居中的最佳方式是什么?

【问题讨论】:

  • 你能创建一个小提琴吗?我也不确定您所说的 vert align div 内的两行是什么意思。
  • 你应该将你的边框和文本设置为黑色,否则很难看到你的例子。

标签: html css flexbox


【解决方案1】:

评论后更改答案:

将此添加到.key 以使其成为一个弹性容器,使其内容彼此居中(已经存在的text-align: center 进行水平文本居中):

display: flex;
flex-direction: column;
justify-content: center;

(注意:由于一切都是白色的,因此仍然是不可见的,我为.key 元素添加了黑色背景)

.keys {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  min-height: 70vh;
}

.key {
  display: flex;
  flex-direction: column;
  justify-content: center;
  border: 0.1rem solid white;
  margin: 1rem;
  width: 5rem;
  height: 5rem;
  padding: 0.5rem 0;
  text-align: center;
  color: white;
  background: black;
}

kbd {
}
<div class="keys">
  <div class="key" data-key="65"><kbd>A</kbd><span class="sound">text</span></div>
  <div class="key" data-key="83"><kbd>S</kbd><span class="sound">text</span></div>
  <div class="key" data-key="68"><kbd>D</kbd><span class="sound">text</span></div>
  <div class="key" data-key="70"><kbd>F</kbd><span class="sound">text</span></div>
</div>

【讨论】:

  • 我想我没能很好地解释我想要实现的目标,对此感到抱歉。我需要的是位于字母下方的“文本”一词,并且两条线都垂直和水平居中。该怎么做?
  • 啊好吧 - 请注意我的更改答案
  • 谢谢!所以 flexbox 的子元素也可以显示为 flexbox ??这很酷 !应用于 flex-grow、flex-shrink 等子元素的属性怎么样?它们是否仍然有效?
  • 是的,您可以将任何 flex-child 设为 flex-container,并应用所有常用规则
  • 天哪,我花了一段时间才找到对我有用的答案哈哈。谢谢!
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 2012-12-09
  • 2017-06-29
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多