我正在使用基于CSS的翻转“技巧”,可以在悬停时切换元素背景图像的背景位置。
CSS
#welcome #step1
{background: transparent url(../img/mock/homepage_welcome_step1.png) no-repeat scroll left top;}
#welcome #step1:hover
{background: transparent url(../img/mock/homepage_welcome_step1.png) no-repeat scroll right top;}
HTML
<div id="welcome">
<a class="steps" id="step1" href="?page=signup"></a>
...
</div>
自然,IE6让这个简单的东西搞砸了。我所有的翻车都闪烁着。
当鼠标悬停在图像上消失片刻然后移动到过度状态。一个有趣的怪癖,如果我离开页面然后按BACK按钮,问题似乎消失了!
我认为它与PNG图像文件有关(虽然它们没有任何透明度)或者也许像doc类型那样简单(XHTML过渡)
感谢您的见解。
编辑(已解决):
Jitendra提供了解决问题的链接。我只是将其添加到头部:
<!--[if IE 6]>
<style type="text/css" >
html {
filter: expression(document.execCommand("BackgroundImageCache", false, true));
}
</style>
<![endif]-->
答案 0 :(得分:3)
请参阅这些解决方案 -
http://ajaxian.com/archives/no-more-ie6-background-flicker
http://www.hedgerwow.com/360/bugs/dom-fix-ie6-background-image-flicker.html
答案 1 :(得分:3)
浏览器正在为您指定url()
属性的每个CSS规则从服务器请求图像。要解决此问题,只需将两个规则的background
部分合并为一个规则,并为css精灵的每个状态设置background-position
属性。
#step1, #step1:hover {
background: transparent url(../img/mock/homepage_welcome_step1.png) no-repeat scroll;
}
#step1 {
background-position: left top;
}
#step1:hover {
background-position: right top;
}
这个问题实际上发生在许多浏览器中。它在IE6中更加引人注目。
作为旁注,如果您正在使用ID,则无需在选择器中指定两个ID。 ID应该是页面唯一的。
答案 2 :(得分:1)
我没有IE6可以测试,但是你检查过以确保客户端可以完全缓存图像吗?它应该有一个显式的Expires或Cache-Control:max-age HTTP头。
答案 3 :(得分:1)
本文讨论了此问题的触发器以及其他一些解决方案:http://web.archive.org/web/20100105213004/http://www.fivesevensix.com/studies/ie6flicker/
此外,Gabriel提供的解决此问题的CSS可以改进为:
#step1 {
background: transparent url(../img/mock/homepage_welcome_step1.png) no-repeat scroll left top;
}
#step1:hover {
background-position: right top;
}
答案 4 :(得分:0)
为了好玩,如果您的:悬停样式仅指定
会发生什么 {background-position: right top;}
答案 5 :(得分:0)
听起来像'IE6 Flicker'的典型情况,这是由IE6中的设置引起的。浏览器在悬停时重新请求来自服务器的图像...愚蠢吧?你试过“双缓冲”图像吗?我的意思是在父元素和链接本身上放置相同的背景图像。示例如下:
#welcome {
background: transparent url(../img/mock/homepage_welcome_step1.png) no-repeat scroll left top;
}
#welcome #step1 {
background: transparent url(../img/mock/homepage_welcome_step1.png) no-repeat scroll left top;
}
#welcome #step1:hover {
background: transparent url(../img/mock/homepage_welcome_step1.png) no-repeat scroll right top;
}
让我知道你是如何进行的:)