1. 首先设置一个层height,line-height 30px,文字12px开始测试。

    IE下如图:

   

火狐如图:

   


   从这里我们看到了IE和火狐差异,大家可能比较奇怪的是明明十二号的字,怎么变成了11px,呵呵,我也奇怪,一会还有更奇怪的。

2. height,line-height 29px,文字12px开始测试:

   ie如图:

   

火狐如图:

   

   天哪,怎么一样了,无语,12px的字还是显示了11px,继续测试。

3.height,line-height 30px,文字12px,加下划线开始测试:

ie如图:

   
  

火狐如图:

   
   加下滑线的12px的字竟然变成了13px,刚才是11px,狂晕。

4.height,line-height 29px,文字12px,加下划线开始测试:

ie如图:

   
火狐如图:

   
看到这里,如果文字的高度是按照加下滑线的总高度来算的话,我大致推理出算法了。

如果所有文字都按照加了下滑线算(就算你没设置下划线,其实由上面的几组图也能推出来下划线在算法里其实是一直存在的),那么12px的文字实际上就是13px。那么上面的几组数据就可以直接分为两组。

1)height,line-height 30px 文字12px;

2)height,lineheight 29px 文字12px;

对于第一组,30的高减去13的文字高度还剩下17,除2除不尽,呵 呵,就是因为这除不尽,IE和火狐的不兼容就来了,请仔细观察带下划线的height 30px带下划线的那组IE和火狐对比图,就会发现当除不尽时,IE为上空白分配了8px,为下空白分配9px,火狐恰恰相反,上面分配了9px,下面分 配了8px,所以说这种情况下IE的文字感觉就高些了。

对于第二组,29的高减去13的文字高还剩下16,除2刚好除尽,所以IE和火狐上下空白等分配了8px,所以就一模一样了,大家可以参考height 29px带下划线那组IE和火狐对比图。

呵呵,那么结论就很简单了,如果你想要你的line-height文字居中兼容IE和火狐,那么你就要使你的行高设定和文字大小设定要满足他们相减是偶数,能被2除。

公式:(行高-(文字高+1))%2=0(比如行高29px那组:(29-(12+1))/2=8 刚好能被2除)

通过这个公式,我将验证下面两组组合:

1 行高30px 文字高度13px 公式:(30-(13+1))/2=8

ie结果如图:

  
火狐结果如图:

  
结果一模一样,不知道是不是巧合,再测一组

2 行高31px 文字高度14px 公式:(31-(14+1))/2=8

IE结果如图:

  
火狐结果如图:

  
还是一样,呵呵大家要有兴趣的话再测测,这个也只是我无聊研究出来的,有什么不正确的请大家多指正,重要的是给同行们提供一些帮助和解决问题的思路。

注:IE 和火狐的测试都是在网页设置了默认字体下完成的,以上的IE版本为IE6和IE7,IE8的宋体line-height我觉得很有问题,大家可以用一句 meta兼容(像网易、新浪、QQ等大型门户都是这么做的,看来也都是真的没有精力兼容IE8了),我设置默认字体为:

         body{font-size:12px;font-family:宋体,Arial Narrow,arial,serif}

         是简体中文的默认字体,火狐下必须有该样式,不然字体不同没有任何可比性,还有我要发下牢骚,火狐现在搞个什么默认字体实在不好,你不在火狐的设置里开 启"允许页面选择显示字体而无需上面设置"这一项,不管你在CSS中设置什么默认字体它都用"微软雅黑"显示,无语啊,这么弱智的功能也能想到。希望有大 量用户向火狐反映,设个设置也太不人性化了,是不是搞反了,我的火狐版本是3.6.3中国版,你看你的是不是和我有一样的问题,如果只有我用的是这样,请 告知,谢谢。

        另外,我碰过这种情况,一条新闻放在Li里,Li里又包含英文链接,就是这种结构:

       <li><a>Hello Word</a></li>

       如果你的CSS设置如下:

       li{font-size:14px;height:31px;line-height:31px;}

       a{font-size:12px;height:31px;line-height:31px;}

      这样也会导致火狐的行高异常,所以要么直接在LI设字体大小,要不在A里设,最好不要搞出这种混乱的逻辑,火狐不喜欢这样。

     最 新测试发现以上规律只适合宋体10,11,12,13,14,15,16,18px大小字体,超过20px文字的加下滑线大小就是其本身如上20px,测 试发现大号字体按照以上算法就算不加一相减能除尽还是按照IE上空白少分2px,下空白多分2px火狐反之的规律渲染,除不尽时的算法和小字体一样,关于 大号字的规律如果哪位同学能有所突破,请告知,同学们可以自己都试试找找规律,谢谢。