IE6 背景位置(?)问题

Posted

技术标签:

【中文标题】IE6 背景位置(?)问题【英文标题】:IE6 background-position(?) issue 【发布时间】:2010-10-20 07:22:29 【问题描述】:

我申请 *** 作为我最后的手段。 我在链接背景使用图像时遇到了这个 ie6 错误。 似乎ie6滚动了背景。如何避免?

在某些宽度上显示如下:alt text http://img135.imageshack.us/img135/8849/badie1.png

在其他一些地方,它显示如下:alt text http://img522.imageshack.us/img522/8180/badie2.png

IE7 和 FF 显示如下:alt text http://img142.imageshack.us/img142/2296/goodie.png 链接放置在向右浮动的 div 内。

<a href="/tr" class="menuLink" style="background-image:url(/img/tr.png);">TR</a>
<a href="/eng" class="menuLink" style="background-image:url(/img/eng.png); margin-right:30px;">ENG</a>
<a href="/logout" class="menuLink" style="background-image:url(/img/logout.png);"><?=$ui["exit"];?></a>

   .menuLink 
     font-family:"Tahoma";
     font-size:11px;
     color:#003300;
     text-decoration:underline;
     font-weight: bold;
     background-position:0% 50%;
     background-repeat:no-repeat;
    
     .menuLink:hover 
     font-size:11px;
     color:#047307;
     text-decoration:underline;
     font-weight: bold;
     

任何提示如何避免这种情况?

【问题讨论】:

类似问题:***.com/questions/594870/… 尝试在元素的样式中添加“zoom: 1” - IE 中的 hasLayout 会导致一些奇怪的错误satzansatz.de/cssd/onhavinglayout.html。我还没有尝试过,但这是我在调试这类东西时首先尝试的事情之一,因为它经常改变背景的渲染方式 【参考方案1】:

我自己也遇到了这个问题,我发现在带有背景图像的元素上使用overflow:hidden 解决了我的很多 IE6 问题(尽管不是全部)。

【讨论】:

【参考方案2】:

我会找到一个适用于 IE6 的解决方案并使用 Conditional Comments 过滤掉其他适用于 IE7、FF 等的正确版本。我还将避免在 IE6 (reference) 的 background-position 中使用百分比。

【讨论】:

我尝试使用 background-position:center left; 代替。它显示相同。那么我应该有条件地评论什么...... 尝试使用像素值,因为您处理的所有内容都是像素。 我会继续破解。一旦你获得了正确的样式组合,将它们打包并使用条件 cmets 覆盖任何内容。【参考方案3】:

按照this answer 到a somewhat related question 中的建议,我建议在IE(IE8 之前)中使用background-position-xbackground-position-y 而不是background-position

【讨论】:

【参考方案4】:

您不能将背景位置与任何* ie6 .png 一起使用。解决方案是使图像成为 gif 或 8 位 png。

*我没有使用/尝试过

【讨论】:

dillerdesign.com/experiment/DD_belatedPNG - 保留背景位置。这是最好的 PNG 修复 IMO。但我会冒险猜测 PNG 修复也会杀死背景位置。 @MiG 我使用了 htc 文件修复 link,它没有保留背景位置。 DD_belatedPNG 保留。 我能够按照上面的建议使用 overflow:hidden 让我的 32 位 PNG 完美排列。【参考方案5】:

如果您的元素中有 padding-toppadding-bottom 带有背景图像和 background-positioning - 在 IE6 中,您可以将 padding-top: 16px; 更改为 margin-top: 16px; 并解决问题。

它不会将其他元素推开,并且不再将填充加倍。 否则,在 IE7 和 IE8 中,padding 属性有效。

【讨论】:

【参考方案6】:

改变

background-position:0% 50%;

background-position:50% 50%;

并添加

background-repeat: no-repeat;

这将使图像水平和垂直居中并停止图像平铺。

【讨论】:

如果我这样做,我的图像会在文本后面 :( 并且居中,我需要在文本之前的图像...

以上是关于IE6 背景位置(?)问题的主要内容,如果未能解决你的问题,请参考以下文章

更改类不会导致在 IE6 中应用新类的规则?

解决IE6下 PNG图片有背景问题

IE6 下 输入类型表单控件背景问题

IE6 css 设置PNG背景图片透明问题。

IE6 + IE7 CSS 溢出问题:隐藏; - 位置:相对;组合

IE6下png背景不透明——张鑫旭博客读书笔记