文本行高不适用于内联块div容器

SPG*_*SPG 5 css

这是jsfiddle.HTML:

<div class="main">
    <div class="div1"></div>
    Center with Red!
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.main{
    height: 50px;
    width: 100%;
    background-color: #000000;
    text-align: center;
    color: #ffffff;
    line-height: 50px;
    font-size: 24px;
}

.div1{
    display: inline-block;
    width: 50px;
    height: 50px;
    background-color: #ff0000;
}
Run Code Online (Sandbox Code Playgroud)

红色div和文本居中.但为什么行高不起作用.文本不是垂直居中的.我认为原因可能是线条高度在线性布局中不起作用,但父div是块布局.如何垂直和水平居中红色div和文本.文本可能会被更改,所以我不想设置它们的绝对位置并使用如下代码:

margin-left: -25px;
margin-top: -25px;
left: 50%;
top: 50%; 
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

Ale*_*har 6

您可以简单地添加vertical-align: top到.div1:

.main {
  height: 50px;
  width: 100%;
  background-color: #000000;
  text-align: center;
  color: #ffffff;
  line-height: 50px;
  font-size: 24px;
}
.div1 {
  display: inline-block;
  width: 50px;
  height: 50px;
  background-color: #ff0000;
  vertical-align: top;
}
Run Code Online (Sandbox Code Playgroud)
<div class="main">
  <div class="div1"></div>
  Center with Red!
</div>
Run Code Online (Sandbox Code Playgroud)

在@ chead24评论后编辑.

  • @nich - 因为`vertical-align:top`打破了div和文本必须位于同一基线上的对齐约束. (2认同)
  • 不,你的`div`目前是空的.在其中放入一些文字,然后看看.如果内部div中有文本,则不需要`vertical-align`. (2认同)