CSS将文本垂直对齐到div的中间

Rog*_*ger 12 html css

强制div中的文本垂直对齐到中间的正确方法是什么?我发现了一些'技巧',但我需要一些适用于单行和多行的东西.希望我错过了一些简单的愚蠢:

http://jsfiddle.net/rogerguess/DawFy/

.header {
    display: inline-block;    
    text-align: center;
    width: 123px;
    background: green;
    border-radius: 4px 4px 4px 4px;
    height: 80px;
    vertical-align: middle;
}

<div >
    <div class="header">test1 </div>
    <div class="header">some text that will wrap</div>
    <div class="header">test3</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Tia*_*ira 19

更改display: inline-block;display: table-cell;


cim*_*non 8

如果您的多行元素需要换行以便出于响应原因,那么最好的选择是使用Flexbox.由于Firefox 2009的Flexbox实现的瑕疵,它的处理方式与现代Flexbox实现的处理方式略有不同.

http://codepen.io/cimmanon/pen/mxuFa

<ul>
  <li>One lorem ipsum dolor sit amet</li><!--
  --><li>Two</li><!--
  --><li>Three</li><!--
  --><li>Four</li><!--
  --><li>Five</li>
</ul>

li {
  text-align: center;
  vertical-align: middle;
  /* fallback for non-Flexbox browsers */
  display: inline-block;
  /* Flexbox browsers */
  display: -webkit-inline-box;
  display: -moz-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
  /* vertical centering for legacy, horizontal centering for modern */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
  /* modern Flexbox only */
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  /* legacy Flexbox only */
  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
}
Run Code Online (Sandbox Code Playgroud)