垂直居中
垂直居中是个老生常谈的问题,最常见的解决办法就是设置line-height和height为相同的值,但是这个方法也不是处处适用,比如下面的例子:
<!doctype html>
<html>
<head>
<title>test</title>
<style type="text/css">
span {
line-height:20px;
height:20px;
}
</style>
</head>
<body>
<span><input type="checkbox">text</span>
</body>
</html>
结果为:

很明显是底边对齐,不是垂直居中,其实这种问题还出现在input是图片的情况下,怎么办呢?
CSS还有一个属性:vertical-align,看名字似乎就是专门解决垂直对齐问题的,但这东西确实不好用。
这个属性只适合两种元素:表格的单元格 和 行内元素。这个属性最好别用在其他元素上,比如div,这会导致子行内元素继承这个属性。
知道这个有什么用?好像也没什么用,我知道了也不会用...
换个思路,不管是img还是input,我们可以把它抽象成一个 “和文本高度不匹配的东西”,要么比文本高度更高,要么更低。
如果这个东西是浮动的呢?还是刚才那个例子,如果CSS这样写:
input {
float: left;
margin: 0;
padding: 0;
}
这样span就完全属于文本了,于是我们再用 line-height 和 height 同值的办法,就可让文本居中,问题再次变成高度到底是多少呢?
这个值取决于浮动对象的高度,比如这里的input,每个浏览器的高度都是13px,于是CSS该这样写:
input {
float: left;
margin: 0;
padding: 0;
}
span {
height: 13px;
line-height: 13px;
}
别以为这样就完事了,IE这恶心的家伙貌似无视了margin和padding,我试着加了height,又好使了,神奇。。
input {
float: left;
margin: 0;
padding: 0;
height: 13px;
}

浙公网安备 33010602011771号