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 个句之一:
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>