垂直水平局中(兼容IE及Firefox)
在FF下实现垂直局中可以根据CCS2中的效果实现
在需要垂直局中的上级标签中添加display:table;
在效果标签中添加vertical-align:middle;
就可以基本实现垂直局中了
但IE中不支持display:table;等把块元素转换为表格的CSS样式,就需用用到IE中的BUG来实现这个功能
在网上我找到了几种方法,其中只有一种是可以在和FF同样的HTML代码格式下,进行HACK来实现垂直局中效果,也是最方便的一种
在需要垂直局中的上级标签中添加height,width,font-size
通过网上的说法和本人自己的测试,font-size是height的0.87倍,这个值也就是上下1px左右的偏差,需要对应具体环境进行修改,在IE6与IE7中大概是因为计算方法不同的缘故,也有一定的偏差,也需要编写者自行进行调试
在效果标签中添加vertical-align:middle;
根据2者的结合hack写法就是
div{display:table !important;*height:xpx;*width:ypx;*font-size:x*0.87px;}
img{vertical-align:middle;}
以上就是垂直局中了,IE有明显的局限,不能自动高度,操作起来也颇为复杂
自定义宽高的写法:需要添加一层元素来满足css要求
原先:<div><img /></img></div>
现在:<div><span><img /></span></div>
div{display:table;table-layout:fixed;/*IE8下对max-widht有BUG,该属性可以修复*/*display:inline;*position:relative;width:xpx;height:xpx;float:left;}/*必须要浮动,主要是IE7*/
span{display:table-cell;*position:absolute;*top:50%;*left:50%;vertical-align:middle;text-align:center;}
img{*position:relative;*top:-50%;*left:-50%;vertical-align:middle;}
水平局中2者也有差异,首先是小标签元素如<img>,2者都可以通过上级标签的text-align:center;来进行水平局中
但涉及到块元素的水平局中2者就有区别了
首先是IE6:通过对text-align:center;的继承,可以直接实现效果
FF等:需要通过margin:0 auto;的设置来实现
2者都需要定义块级宽度,2者结合的写法就是
根据2者的结合hack写法就是
div1{text-align:center;}
div2{margin:0 auto;width:xpx;}