IE11中的奇怪问题,当使用鼠标滚轮或光标键时,以下项目的固定背景会闪烁。肯定是这是一个错误。
网站:http://gerbrandy.zitemedia.nl:88/
我使用脚本来调整背景比例,但这不是问题,因为滚动时resize事件不会触发,所以这不是脚本的问题。它与固定定位元素有关。在所有其他浏览器中,此脚本可以使用几年。
我不知道如何解决这个问题。尝试了几件事,但不知道如何禁用javascript例如但不应该是这种情况。我在Windows 8.1上使用IE11。
有人对此有相同的经验吗?你知道如何解决这个问题吗?
答案 0 :(得分:16)
滚动时,有三件事可能导致IE 11闪烁/波动/延迟固定位置元素:
如果您有“溢出:自动;”在父容器元素上,将其删除。
删除背景附件:已修复;来自固定位置元素。
从固定位置元素移除border-radius(仅限移动IE)。
答案 1 :(得分:8)
我遇到了同样的问题,这似乎是一个错误,当你的计算机规格要处理的页面内部有太多的事情发生时,我能够通过将以下转换代码添加到修复程序来修复它position元素,(transform: translateZ(0);-webkit-transform: translateZ(0);
)强制浏览器使用硬件加速来访问设备的图形处理单元(GPU)以使像素飞起。另一方面,Web应用程序在浏览器的上下文中运行,这使得软件可以完成大部分(如果不是全部)渲染,从而减少了转换的马力。但是Web一直在追赶,大多数浏览器厂商现在通过特定的CSS规则提供图形硬件加速。
使用-webkit-transform:translate3d(0,0,0);将使GPU转换为CSS转换的动作,使它们更平滑(更高的FPS)。
注意: translate3d(0,0,0)在您看到的内容方面没有任何效果。它在x,y和z轴上移动对象0px。它只是一种强制硬件加速的技术。
#element {
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 9994;
...other stuff and then
/* MAGIC HAPPENS HERE */
transform: translateZ(0);
-webkit-transform: translateZ(0);
}
答案 2 :(得分:5)
显然是" bug"仅影响Windows 8.1上的IE11,或者也可能影响8.0。删除background-attachmend:fixed
为我工作。显然该规则是多余的,因为背景图像在没有该规则的每个浏览器中正确显示。第二种解决方案是在IE设置中禁用平滑滚动,但这不是最佳的,因为它在默认安装中已启用。
闪烁的CSS:
#element_id{
position:fixed;
height:100%;
left:0;
bottom:0;
right:0;
background-image:url('path/to/jpg');
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;
background-repeat:no-repeat;
background-position:center center;
background-attachment:fixed;
}
...和新代码(删除1行):
#element_id{
position:fixed;
height:100%;
left:0;
bottom:0;
right:0;
background-image:url('path/to/jpg');
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;
background-repeat:no-repeat;
background-position:center center;
}
答案 3 :(得分:2)
以下硬件加速技术导致了我的。
outline: 1px solid transparent;
删除它可能是原因。
答案 4 :(得分:1)
我们可以通过设置html和正文之类的overflow
来消除IE9,IE10,IE11,MEdge <= 20上的灰色闪烁
html{
overflow: hidden;
height: 100%;
}
body{
overflow: auto;
height: 100%;
}
答案 5 :(得分:0)
闪烁的另一个原因显然是固定元素内的另一个固定元素。至少那是我的理由。 Edge的错误行为似乎是随机的。
答案 6 :(得分:0)
此行为是由于Microsoft的“平滑滚动”功能存在错误所致。发生在Win7及更高版本上的IE10和11中。我不建议您更改工作正常的代码来修复另一个MS错误。而是通过打开Internet Explorer设置禁用其“功能”,转到“高级”,然后在“浏览”类别中,这是您需要禁用“使用平滑滚动”的最后一个选项。
答案 7 :(得分:-1)
我的网站body
已设为position: relative
。
删除它可以解决我的IE专属闪烁/跳跃问题。