图片懒加载
懒加载 是一种资源延时加载技术。它的具体实现表现为: 在满足某种条件时才加载资源。
lazy loading attr
在现代浏览器中,img
标签支持 loading
属性,它具有两个可选枚举值:
值 | 描述 |
---|---|
lazy | 当某种条件满足时加载资源 |
eager | 立即加载资源,默认状态 |
用法如下:
1 | <img src="https://source.unsplash.com/random/1126x260" loading="lazy" alt="Unsplash random image" /> |
注意:不同浏览器的具体实现方式不一样(加载资源需要满足的条件不一样),基于 chromium 实现的浏览器会比 Firfox 更早的加载资源。可以前往 stack overflow 查看相关问题讨论。
其它可参考文献
https://issues.chromium.org/issues/40577771
https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading
IntersectionObserver
相比直接使用 lazy loading attr
,使用 IntersectionObserver
可以让我们更加随心所欲的控制满足资源加载的条件。
1 | <div class="scrollContainer"> |
1 | const observer = new IntersectionObserver((entries) => { |
Element.getBoundingClientRect()
Element.getBoundingClientRect()
相比 IntersectionObserver
没有那么方便,但它具有更良好的浏览器兼容性,当需要考虑浏览器兼容性的时候,使用 Element.getBoundingClientRect()
是一个不错的选择。
1 | <div class="scrollContainer"> |
1 | const scrollContainer = document.querySelector('.scrollContainer'); |
使用 Element.getBoundingClientRect()
需要考虑的因素很多,如:设置滚动容器、设置满足资源加载的条件等。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 辞去归来兮!
评论