垂直居中之父元素高度确定的文本

父元素高度确定的文本分为:单行文本和多行文本

1、如何设置单行文本垂直居中呢?

  父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的 height  line-height 高度一致来实现的。(height: 该元素的高度,line-height: 顾名思义,行高(行间距),指在文本中,行与行之间的基线间的距离 )。

  line-height 与 font-size 的计算值之差,在 CSS 中成为“行间距”。分为两半,分别加到一个文本行内容的顶部和底部。如下图所示:

 使用单行文本的缺点:当文字内容的长度大于块的宽时,就有内容脱离了块。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5     <meta charset="utf-8">
 6     <style>
 7         .wrap h2{
 8             margin:0;
 9             height:100px;
10             line-height:100px;
11             background:#ccc;
12         }
13     </style>
14 </head>
15 <body>
16     <div class="wrap">
17         <h2>hi,imooc!</h2>
18     </div>
19 </body>
20 </html> 

结果如下:

 

2、如何设置多行文本垂直居中呢?

方法一:使用插入 table  (包括tbody、tr、td)标签,同时设置 vertical-align:middle。

css 中有一个用于竖直居中的属性 vertical-align,在父元素设置此样式时,会对inline-block类型的子元素都有用。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5     <meta charset="utf-8">
 6     <style>
 7         .wrap{height:300px;background:#ccc}
 8     </style>
 9 </head>
10 <body>
11     <table><tbody><tr><td class="wrap">
12         <div>
13             <p>看我是否可以居中。</p>
14             <p>看我是否可以居中。</p>
15             <p>看我是否可以居中。</p>
16             <p>看我是否可以居中。</p>
17             <p>看我是否可以居中。</p>
18         </div>
19     </td></tr></tbody></table>
20 </body>
21 </html>

结果如下:

注: td 标签默认情况下就默认设置了 vertical-align 为 middle,所以我们不需要显式地设置了。

方法二: chrome、firefox 及 IE8 以上的浏览器下可以设置块级元素的 display 为 table-cell(设置为表格单元显示),激活 vertical-align属性,但注意 IE6、7 并不支持这个样式, 兼容性比较差。

注:这种方法的好处是不用添加多余的无意义的标签,但缺点也很明显,它的兼容性不是很好,不兼容 IE6、7而且这样修改display的block变成了table-cell,破坏了原有的块状元素的性质。

HTML代码:

<div class="container">
    <div>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
    </div>
</div>

CSS代码:

<style>
.container{
    height:300px;
    background:#ccc;
    display:table-cell;/*IE8以上及Chrome、Firefox*/
    vertical-align:middle;/*IE8以上及Chrome、Firefox*/
}
</style>
原文地址:https://www.cnblogs.com/snow1234/p/6682782.html