让文本等内容在div中水平居中显示很容易,直接text-align:center就可以搞定,但是在很久之前我也是比较头疼垂直居中问题,现在我简单介绍一下方法吧,用css3的vertical-align:middle;来实现。
先看一下W3C上对vertical-align的定义:vertical-align 属性设置元素的垂直对齐方式。该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。我第一次看就感觉:我靠……能不能说点人话,完全看不懂啊!小伙伴们有没有同感?通过一晚上的研究,大体搞懂了,现在来总结一下。
第一种用法,先看后面一句“在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。”这很容易理解,如果给一个表格的td加一个vertical-align:middle的样式,表格里面的内容会垂直居中,同样的如果给一个vertical-align:bottom就会底部对齐,如果给一个vertical-align:top就会顶部对齐。
第二种用法,看前页一句“该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。”专业的语言我不会说的,可以打个比喻:假设有两个行内元素a和b,a和b都是img,当a加了一个vertical-align:middle样式之后,b的底部(基线)就会对齐a的中间位置,如下图:
如果a和b都加了一个vertical-align:middle样式,那么就互相对齐了对方的中间位置,也就是它们在垂直方向上的中线对齐了,如下图:
说到这里,思路就清晰了(PS:理应知道vertical-align可以设middle,top,bottom等等,甚至可以设置具体的值或百分比,如果想知道会有怎样的效果,可以自己实验一下,这里就不多说了。)
我个人总结出一套文本垂直居中的模板,如下:
css代码
* {margin: 0;padding: 0;}
.content{ height:300px; width:200px; background:#4DB6E9;text-align:center;}
.wenzi{
vertical-align:middle; /*必须*/
display:inline-block; /*必须*/
width:191px;
background:#5DE35F;}
.vertical_align{
vertical-align:middle; /*必须*/
height:100%; /*必须*/
display:inline-block;/*必须*/
}
效果图:
以上代码亲测可以用。
文章评论