表单中有时候为了美观,放弃默认的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 级元素。