xhtml+css

IE6,IE7下的inline-block和text-indent的问题

字号+ 来源:网络收集 编辑整理: 飞燕前端网 2013-03-20 11:31:35

表单中有时候为了美观,放弃默认的button,而使用背景图片(提交(type=submit)和重置(type=reset)按钮),而考虑到SEO因素,按钮的 value值不能为空,但又不能在页面上显...

表单中有时候为了美观,放弃默认的button,而使用背景图片(提交(type=submit)和重置(type=reset)按钮),而考虑到 SEO因素,按钮的 value值不能为空,但又不能在页面上显示出来。这时候我们一般用text-indent:–9999px;overflow:hidden;来隐藏。 但老不死的IE6同志和没人用的IE7同志都来闹矛盾了——不支持。

解决办法也是一样的。就是给按钮设置display:block或者设置float:left|right来实现 display:block。

<style type=”text/css”>
.submit{
display:block;/*或者float:left|right*/
width:120px;
height:28px;
overflow:hidden;
background:url(submit.gif) no-repeat left top;
text-indent:-9999px;
}
</style>
<input type=”submit” value=”submit” />

由此推断IE6/IE7中input的实现和inline-block类似

text-indent一般用来实现文字缩进,不过更多的时候是用来实现文字隐藏。发现在IE6/IE7中,text-indent会导致inline- block元素出现向左(text-indent的值为负时)或向右(text-indent值为正时)的偏移。
inline-block元素设置text-indent在IE6/IE7中不正常,在IE8中正常。造成这种情况的原因应该是IE6/IE7并没有真正 实现inline-block, 而是通过设置display:inline-block触发了IE的layout, 从而使内联元素拥有了inline-block属性的表症。
解决方法:

 .element {display:inline-block !important; display:block;}

因为ie6/ie7不支持 important 属性,所以在 ie6/ie7 下元素会显示为一个 block 级元素,而在支持 important 的浏览器(firefox, safari)下元素将显示为一个 inline-block 级元素。


1.飞燕前端网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.飞燕前端网的原创文章,请转载时务必注明文章作者和"来源:飞燕前端网",不尊重原创的行为飞燕前端网或将追究责任。

相关文章
网友点评