IE浏览器设置position:fixed抖动问题

开发过程中遇到,在IE浏览器,鼠标滚动向下滑动时,设置为position:fixed的div会出现短暂的向下瞬间移动之后马上跳回到最顶部,网上资料表明是position:fixed不兼容某些浏览器的缘故,解决方法有多种:

  1. 给这个设置了position:fixed的元素再设置一个CSS属性:-webkit-transform: translateZ(0);
  2. 给html, body元素设置CSS属性:{height:100%;overflow:auto;margin: 0;}
  3. 引入jquery1.7.2的类库,<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
  4. 在fiexd内设置position:absolute,如:
 <div style="position:fiexd;bottom:0px;">
     <div style="position:absolute;">
     </div>
   </div>

但是以上办法对于我遇到的问题都毫无作用,有使用Javascript阻止需要兼容浏览器的默认滚动,用 window.scrollTo() 去模拟默认滚动,代码如下:

if(当前浏览器是IE浏览器){
  document.body.addEventListener && document.body.addEventListener("mousewheel", function () {
      event.preventDefault();
      var wd = event['wheelDelta'];
      var csp = window.pageYOffset;
      window.scrollTo(0, csp - wd);
    },{ passive: true });
}

为什么要判断在IE浏览器下才执行以上代码呢?因为在谷歌浏览器中,监听touch类事件报错:无法被动侦听事件preventDefault,是新版本chrome 浏览器报错。


谷歌.png

原因:google浏览器为了最快速的相应touch事件,做出的改变。
历史:当浏览器首先对默认的事件进行响应的时候,要检查一下是否进行了默认事件的取消。这样就在响应滑动操作之前有那么一丝丝的耽误时间。
现在:google就决定默认取消了对这个事件的检查,默认时间就取消了。直接执行滑动操作。这样就更加的顺滑了。
但是浏览器的控制台就会进行错误提醒了。

另外,使用该办法,会导致系统内其余的滚动条无法随着鼠标滚动下滑,只能点击拉动滚动条下滑。所以,我们需要寻找其他的办法。

我在最后的问题排查中,发现z-index: -1居然是造成图片抖动的罪魁祸首,把他调高,图片就恢复了正常,至于什么原因导致的呢?还在调查中。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,687评论 0 7
  • 浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同问题症状:随便写几个标签,不加样式控制的情况下,各自的m...
    追卓2018阅读 1,533评论 0 2
  • mobileHack 这里收集了许多移动端上遇到的各种坑与相对解决方案 工具类网站 HTML5 与 CSS3 技术...
    Zoemings阅读 6,770评论 0 12
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,366评论 0 1
  • 我们今天住小区,可刚回来,就不知道要干什么,于是,就下去买了一些巧克力,到家吃。 当我吃了几个巧克力时,之后叫白浩...
    田铮洋阅读 264评论 0 0

友情链接更多精彩内容