图片懒加载
Posted HelloHello233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片懒加载相关的知识,希望对你有一定的参考价值。
判断元素是否出现在界面中:
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。尽管如此,它仍是目前最好的解决方案。
以上是关于图片懒加载的主要内容,如果未能解决你的问题,请参考以下文章