当INLINE-BLOCK和TEXT-INDENT遇到IE6,IE7

 代码如下 复制代码

#iconautente{
background-image:url('/style/images/spritecommon.png'); /*icona_utente.png*/
background-position:-117px -15px;
text-indent:-9000px;
width:20px;
height:23px;
display:inline-block;
}

<a id="iconautente" href="/admin/index.php教程">admin</a>
In Firefox, IE7 and IE8 under Vista, I see background and no text, as expected. In IE6 and IE8 under XP, the whole image is indented, not text, so the image is not shown.

在做一个按钮时,由于按钮的文字的艺术感太强直接跟背景一起切片,但是处于SEO考虑还是在a标签内添加了相应的文字,
<p> <a href="file.pdf" class="icon icon-pdf">Download PDF</a> </p>
常规CSS如下:

 代码如下 复制代码
.icon { display:inline-block; width:16px; height:16px; text-indent:-9999px; }
.icon-pdf { background-image:url(pdf.png); }

嗯,在FF,Chrome IE8,XXX主流浏览器下展现得很完美,处于恶心的原因忘记在IE6,7下看了...
嗯,几天后测试跑过来说漂漂的按钮怎么在IE6,7下消失了,当时就惯性的打开浏览器并开启调试工具一通折腾,最后找到解决方案,调整下样式如下:

 代码如下 复制代码
.icon { display:block; width:16px; height:16px;text-indent:-9999px        }

.icon { display:inline-block; width:16px; height:16px; font-size:0; line-height:0; }

或者修改你的html如下:
<p> &nbsp; <a href="file.pdf" class="icon icon-pdf">Download PDF</a> </p>
给a标签前加上&nbsp;等等等方法...
inline或inline-block元素设置text-indent在IE6/IE7中显示不正常的bug致使text-indent会传递到父及元素,也就出现了上文中的结果。
造成这种情况的原因应该是IE6/IE7并没有真正实现inline-block,而是通过设置display:inline-block触发了IE的layout,从而使内联元素拥有了inline-block属性的表症。
考察元素的默认样式,可知:input、select、button、textarea的默认display皆为inline-block,所以在布局时应加以注意...

 代码如下 复制代码

* html #iconautente{text-indent:0; line-height:0; font-size:0; overflow:hidden}/*ie6 hack */

*:first-child+html #iconautente{ text-indent:0; line-height:0; font-size:0; overflow:hidden}/*ie7 hack */

考察各浏览器对inline-block的支持情况,结果如下:

IE6、7及兼容模式下的IE8不完全支持。只对默认具有inline布局的元素有效
IE8、FF、Safari、Chrome、Opera支持

这样看来,前面给出的代码应能很好地支行在目前主流的浏览器上。但测试结果显示:在IE6、7及兼容模式下的IE8中,按钮所在的位置空白一片,但可以看出它已经占据了页面上的某一位置。

问题出在text-indent上,测试结果显示:

text-indent为负时,元素向左偏移
text-indent为正时,元素向右偏移
在这种情况下,元素的偏移量由text-indent和margin值决定,如:margin-left::-10px; text-indent:10px相当于margin-left:0; text-indent:0元素没有偏移,那么解决之道是?

简单的解决方案是不要在IE6、7下使用inline-block,比如这样设置display:inline-block !important; display:block;,IE6、7不认识!important。这样IE6、7下会渲染成一个块级元素,而其他浏览器则显示为inline-block元素。

这次问题是出在inline-block和text-indent相遇了,那么这样的问题是否会出现在其他元素上呢?考察元素的默认样式,可知:input、select、button、textarea的默认display皆为inline-block。那么简单地考察下button的表现,代码如下:

 代码如下 复制代码

<style type="text/css教程">
div{ border:4px solid blue; }
button{
    width:100px;
    height:24px;
    border:medium none;
    background:red;
    text-indent:20px;
    text-align:left;
    padding:0;
}
</style>
<div><button>我是按钮</button></div>

时间: 2024-09-20 00:28:28

当INLINE-BLOCK和TEXT-INDENT遇到IE6,IE7的相关文章

CSS超出文本用省略号显示 兼容firefox IE6 IE7

CSS设置文本溢出不显示或显示省略号,只显示一定长度的文本,ie9下只需设置  代码如下 复制代码 div{white-space:nowrap;text-overflow: none;} 或  代码如下 复制代码 div{white-space:nowrap;text-overflow: ellIPsis;} 即可,在ie6,ie7需增加宽度设置才能生效  代码如下 复制代码 div{white-space:nowrap;text-overflow: ellipsis;*width:100px

CSS hack实现 CSS完美兼容IE6/IE7/FF的通用方法_经验交流

关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助. 一.CSS HACK 以下两种方法几乎能解决现今所有HACK. 1, !important 随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.) <style> #wrapper { width: 100px!important; /* IE7+FF */ width: 

ie6 ie7 ie8 ie9和FireFox Chrome中css区别总结

1.DOCTYPE 影响 CSS 处理 2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行 3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中 4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 wid

js 上传图片预览效果(兼容IE6,IE7,IE8和Firefox)

图片上传预览,就是在使用文件选择框选择了文件之后就可以在页面上看见图片的效果,关 于这个效果我一直认为是无法做到的,今天用alphaimageloader滤镜的src属就是其中的主角 它将使用绝对或相对url地址指定背景图像.假如忽略此参数,滤镜将不会作用. <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-tran

avascript tab 选项卡[兼容ie6,ie7,ie8,fox浏览器]

avascript tab 选项卡[兼容ie6,ie7,ie8,fox浏览器] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <hea

ie6,ie7兼容性总结(转)

其实浏览器的不兼容,我们往往是各个浏览器对于一些标准的定义不一致导致的,因此,我们可以进行一些初始化,很多问题都很轻松解决. 下面是14条特殊情况仅供参考: 1. 文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff 下实际占高17px,上留白1px,下留白3px,opera下就更不一样了.解决方案:给文字设定 line-height .确保所有文字都有默认的 line-height 值.这点很重要,在高

下拉菜单select样式设置(兼容IE6/IE7/IE8/火狐)

本文将为大家详细介绍下下拉菜单select样式如何设置才能够兼容IE6/IE7/IE8/火狐等主流浏览器,具体的实现代码如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助     复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ht

JS代码判断IE6,IE7,IE8,IE9的函数代码

JS代码判断浏览器版本,支持IE6,IE7,IE8,IE9!做网页有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码   做网页有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码! 第一种: 复制代码 代码如下: <script type="text/javascript"> var browser=navigator.appName var b_vers

iframe 自适应高度[在IE6 IE7 FF下测试通过]_javascript技巧

第一种方法: 复制代码 代码如下: <script type="text/javascript" language="javascript"> <!-- //调整 PageContent 的高度 function TuneHeight() { var frm = document.getElementById("content01"); var subWeb = document.frames ? document.frames