垂直居中

    xiaoxiao2021-03-25  72

    垂直居中-父元素高度确定的单行文本

    我们在实际工作中也会遇到需要设置垂直居中的场景,比如好多报纸的文章标题在左右一侧时,常常会设置为垂直居中,为了用户体验性好。

    这里我们又得分两种情况:父元素高度确定的单行文本,以及父元素高度确定的多行文本

    本节我们先来看第一种父元素高度确定的单行文本, 怎么设置它为垂直居中呢?

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

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

    这种文字行高与块高一致带来了一个弊端:当文字内容的长度大于块的宽时,就有内容脱离了块。

    如下代码:

    <div class="container"> hi,imooc! </div>

    css代码:

    <style> .container{ height:100px; line-height:100px; background:#999; } </style>

     

    垂直居中-父元素高度确定的多行文本(方法一)

    父元素高度确定的多行文本图片等的竖直居中的方法有两种:

    方法一:使用插入 table  (包括tbodytrtd)标签,同时设置 vertical-alignmiddle

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

    html代码:

    <body> <table><tbody><tr><td class="wrap"> <div> <p>看我是否可以居中。</p> </div> </td></tr></tbody></table> </body>

    css代码:

    table td{height:500px;background:#ccc}

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

    垂直居中-父元素高度确定的多行文本(方法二)

    除了上一节讲到的插入table标签,可以使父元素高度确定的多行文本垂直居中之外,本节介绍另外一种实现这种效果的方法。但这种方法兼容性比较差,只是提供大家学习参考。

    chromefirefox IE8 以上的浏览器下可以设置块级元素的 display table-cell(设置为表格单元显示),激活 vertical-align 属性,但注意 IE67 并不支持这个样式, 兼容性比较差

    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>

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

    转载请注明原文地址: https://ju.6miu.com/read-35940.html

    最新回复(0)