而现在对于inline-block属性运用的需求也越来越多,可惜依旧只有Firefox3beta、IE8beta、Opera、Safari支持inline-block属性(注:原来只有Opera、Safari支持),但IE6、IE7可以通过触发hasLayout来模拟,Firefox2有-moz-inline-box和-moz-inline-stack私有属性(这两个属性的比较引用自秦歌的《display:inline-block的应用两例》)。
在实际应用中-moz-inline-box会存在元素间的对齐等问题,虽然Firefox还有一个私有属性-moz-box-align来帮助解决对齐问题,但依旧难以预料问题多多,而相对来说-moz-inline-stack的表现更像inline-block,这点可以在Firefox3中测试出来。但-moz-inline-stack使用时也会有一个bug,如果一个display:-moz-inline-stack;的元素外层元素是display:inline;即会使Firefox中其包含的链接不可点,这个需要用position:relative;来解决。
最终我们模拟的代码如下:
复制代码 代码如下:
display:inline-block;/*Firefox3beta、IE8beta、Opera、Safari支持,IE下触发inline元素的hasLayout*/
display:-moz-inline-stack;/*Firefox的私有属性,也可以用-moz-inline-box*/
zoom:1;/*IE下触发hasLayout*/
*display:inline;/*一旦IE下触发了hasLayout,设置block元素为inline会使display:inline效果与display:inline-block相似*/
text-indent:-9999px;
*text-indent:0;
font-size:0;
line-height:0;/*如需隐藏文字,可用这四个属性*/
/*另外上面隐藏文字,还可以用更简化的方法:line-height:超级大值;font-size:0;*/
overflow:hidden;/*隐藏溢出的内容*/
vertical-align:middle;/*行内垂直居中,针对Opera比较大的偏离*/
width:?px;/*?为任意非auto值*/
height:?px;/*?为任意非auto值*/