【问题标题】:Centering text vertically and horizontally in a flex item在弹性项目中垂直和水平居中文本
【发布时间】:2016-10-28 07:35:33
【问题描述】:

我试图按照 flexbox 示例进行操作,但我的 line-height 不适用于此问题。

文本应该垂直居中,但事实并非如此。它仅水平居中保持在顶部。

在代码 sn-p 中,它似乎工作正常,但只是为了证明这很奇怪,我将给出我所看到的图片。

我在 Chrome 和 IE 中都对此进行了测试,但它不是垂直居中的。

我确实更改了 sn-p 中的大小,但我认为不会这样做。

.flex-container {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-around;
  padding: 0;
  margin: 0;
  list-style: none;
  display: -webkit-box;
  display: moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  -webkit-flex-flow: row wrap;
}
.flex-item {
  background: tomato;
  padding: 5px;
  width: 50px;
  height: 50px;
  margin-top: 10px line-height: 50px;
  color: white;
  font-weight: bold;
  font-size: 3em;
  text-align: center;
}
<ul class="flex-container">
  <li class="flex-item">1</li>
  <li class="flex-item">2</li>
  <li class="flex-item">3</li>
  <li class="flex-item">4</li>
  <li class="flex-item">5</li>
  <li class="flex-item">6</li>
</ul>

【问题讨论】:

  • 关闭margin-top: 10px
  • 对不起....我希望文本垂直和水平居中:/我只是想使用 line-height 来实现这一点但是其他人已经回答了
  • @Shinji-san,它必须以line-height 为中心吗?由于您使用的是 flexbox,因此有一些 flex 属性可以垂直和水平居中。
  • @Michael_B 我只是按照这个例子。但是既然你提到了它,你会怎么做,因为项目是弹性框的孩子,但孩子中的文本不是弹性项目,所以我不确定我会使用哪个属性。
  • 弹性项目也可以是弹性容器。您可以通过使父元素成为弹性容器来将弹性属性应用于元素。看我的回答。另见这篇文章:stackoverflow.com/a/37844240/3597276

标签: html css flexbox centering


【解决方案1】:

要使每个 flex 项中的文本垂直和水平居中,请对您的代码进行以下调整:

.flex-container {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-around;
  padding: 0;
  margin: 0;
  list-style: none;
  display: -webkit-box;
  display: moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  -webkit-flex-flow: row wrap;
}
.flex-item {
  display: flex;                /* create nested flex container */
  justify-content: center;      /* center text horizontally */
  align-items: center;          /* center text vertically */
  background: tomato;
  padding: 5px;
  width: 50px;
  height: 50px;
  color: white;
  font-weight: bold;
  font-size: 3em;
}
<ul class="flex-container">
  <li class="flex-item">1</li>
  <li class="flex-item">2</li>
  <li class="flex-item">3</li>
  <li class="flex-item">4</li>
  <li class="flex-item">5</li>
  <li class="flex-item">6</li>
</ul>

更多详情见:Flexbox: center horizontally and vertically

【讨论】:

    【解决方案2】:

    你错过了一个“;”在 flex-item 中的 margin-top 之后,使 line-height 无效

    【讨论】:

      猜你喜欢
      • 2015-09-25
      • 2017-11-28
      • 2012-03-14
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多