HTML5+css 垂直居中-父元素高度确定的单行文本 隐性改变display类型

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

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

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

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

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

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <title>无标题文档</title>
 6 <style type="text/css">
 7 .wrap{
 8     height:300px;
 9     background:#ccc;
10     
11 }
12 p{
13     line-height:20px;
14 }
15 </style>
16 </head>
17 
18 <body>
19 <table><tbody><tr><td class="wrap">
20 <div>
21 <p>喜欢你没道理</p>
22 <p>喜欢你没道理</p>
23 <p>喜欢你没道理</p>
24 <p>喜欢你没道理</p>
25 <p>喜欢你没道理</p>
26 </div>
27 </td></tr></tbody></table>
28 <div>
29 <img src="http://image1.webscache.com/baike/haibao/small/2013-05/203228459-121-2013-05-02-15-06-15.jpg">
30 </div>
31 </body>
32 </html>

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

不推荐使用

css代码

 

1 .container{
2     height:300px;
3     background:#ccc;
4     
5     display:table-cell;/*IE8以上及Chrome、Firefox*/
6     vertical-align:middle;/*IE8以上及Chrome、Firefox*/
7 }

 

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

隐性改变display类型

有一个有趣的现象就是当为元素(不论之前是什么类型元素,display:none 除外)设置以下 2 个句之一:

 1. position : absolute 

 2. float : left 或 float:right 

简单来说,只要html代码中出现以上两句之一,元素的display显示类型就会自动变为以 display:inline-block(块状元素)的方式显示,当然就可以设置元素的 width 和 height 了,且默认宽度不占满父元素。

如下面的代码,小伙伴们都知道 a 标签是 行内元素 ,所以设置它的 width 是 没有效果的,但是设置为 position:absolute 以后,就可以了。

css代码

<style>
.container a{
    position:absolute;
    width:200px;
    background:#ccc;
}
</style>

html代码

<div class="container">
    <a href="#" title="">进入课程请单击这里</a>
</div>

  

 

posted @ 2017-03-22 20:26  943987243  阅读(564)  评论(0编辑  收藏  举报