为什么在IE上滚动时固定的背景图像会移动?

the*_*900 16 css internet-explorer background-image internet-explorer-11

我正在努力background-image修复.

正如您在我的博客中看到的那样,background-image在IE 11上滚动时正在移动.

我怎样才能解决这个问题?

这是我的CSS:

background-image: url("./images/cover.jpg");
background-repeat: no-repeat;
background-position: center center;
background-attachment: fixed;
background-size: cover;
Run Code Online (Sandbox Code Playgroud)

twi*_*ejr 24

我的最终修复是基于我发现的所有答案:

在Edge/ie11/ie10的主要css上

/*Edge*/
@supports ( -ms-accelerator:true ) 
{
    html{
        overflow: hidden;
        height: 100%;    
    }
    body{
        overflow: auto;
        height: 100%;
    }
}
/*Ie 10/11*/
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) 
{
    html{
        overflow: hidden;
        height: 100%;    
    }
    body{
        overflow: auto;
        height: 100%;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于ie9,ie8和ie7,我在单独的hacksheet中添加了代码(没有媒体查询):

<!--[if lte IE 9]>
    <style type=text/css>
       html{
           overflow: hidden;
           height: 100%;    
       }
       body{
           overflow: auto;
           height: 100%;
       }
    </style>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)


Sam*_*son 10

这是Internet Explorer中固定背景图像的已知错误.我们最近做了一些工作来改善这种行为,并在Windows 10上发布了Internet Explorer预览版本的更新.您可以在http://remote.modern.ie上从Mac OS X或Windows测试今天的更改.

下面是IE 11和IE Remote Preview之前和之后的内容.请注意,使用鼠标滚轮滚动不再导致固定背景图像像在Internet Explorer 11中那样跳转(或抖动).

在此输入图像描述

  • 截至2017年8月,Windows 10 + IE11(即微软最广泛采用的操作系统版本_和_最流行的浏览器版本)仍然存在此错误.看到他们在2.5年前完成了针对其他操作系统目标的修复,很高兴知道为什么他们拒绝将其推广到人们实际使用的平台组合......: (4认同)
  • @Jonathan Sampson你打算什么时候发布针对这个bug修复的更新?什么版本的IE和Windows受到影响?我试过win7 + IE11的例子,但是没有bug.另一方面IE11 + win8.1有这个bug.这与Windows和/或IE版本有关或者其他因素可能很重要吗? (2认同)

rad*_*rek 10

我试图在你的网站上禁用一些css规则,当我删除html标签的背景属性(背景:#fff;)时,页面滚动顺畅.请试一试,告诉它是否适合您.

更新:

我也在这里找到了解决方法:

$('body').on("mousewheel", function () {
  event.preventDefault();

  var wheelDelta = event.wheelDelta;

  var currentScrollPosition = window.pageYOffset;
  window.scrollTo(0, currentScrollPosition - wheelDelta);
});
Run Code Online (Sandbox Code Playgroud)

  • 这适用于鼠标滚轮,但如果您使用触控板,上/下键或屏幕(触摸/滑动)滚动错误仍然存​​在. (2认同)