zoukankan      html  css  js  c++  java
  • 图片懒加载

    判断元素是否出现在界面中:

    window.addEventListener('scroll', () => {
      const rect = elem.getBoundingClientRect();
      const inViewport = rect.bottom > 0 && rect.right > 0 &&
                         rect.left < window.innerWidth &&
                         rect.top < window.innerHeight;
    });

      上述代码的问题在于每次调用 getBoundingClientRect 时都会触发回流,严重地影响了性能。在事件处理函数中调用( getBoundingClientRect )尤为糟糕,就算使用了函数节流(的技巧)也可能对性能没多大帮助。

      在2016年后,可以通过使用 Intersection Observer 这一 API 来解决问题。它允许你追踪目标元素与其祖先元素或视窗的交叉状态。此外,尽管只有一部分元素出现在视窗中,哪怕只有一像素,也可以选择触发回调函数:

    const observer = new IntersectionObserver(callback, options);
    observer.observe(element);

      此 API 被广泛地支持,但仍有一些浏览器需要 polyfill。尽管如此,它仍是目前最好的解决方案。

  • 相关阅读:
    jQuery选择器之层级选择器
    信息滚动制作
    scrollTop、offsetTop、clientTop
    模电GG
    matlab求解线性方程组
    NWERC2016I
    WEB开发资料集散
    NWERC2016H
    相量变换的性质
    GCJ2017R1C B. Parenting Partnering
  • 原文地址:https://www.cnblogs.com/hellohello/p/9043657.html
Copyright © 2011-2022 走看看