Web图片惰性加载

Uiaoin 2019-07-02 3599

惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,同时也能减少服务器压力。

前段时间发现简书上有位大神写的比较好(没有收藏文章,后面找着补上),直接上代码!

JS:

  1. lazyRender();
  2. $(window).on('scroll',function () {
  3. lazyRender();
  4. })
  5. function lazyRender () {
  6. $('.blog-logo').each(function () {
  7. if (checkShow($(this)) && !isLoaded($(this)) ){
  8. loadImg($(this));
  9. }
  10. })
  11. }
  12. function checkShow($img) { // 传入一个img的jq对象
  13. var scrollTop = $(window).scrollTop(); //即页面向上滚动的距离
  14. var windowHeight = $(window).height(); // 浏览器自身的高度
  15. var offsetTop = $img.offset().top; //目标标签img相对于document顶部的位置
  16. if (offsetTop < (scrollTop + windowHeight) && offsetTop > scrollTop) { //2个临界状态之间的就为出现在视野中的
  17. return true;
  18. }
  19. return false;
  20. }
  21. function isLoaded ($img) {
  22. return $img.attr('data-src') === $img.attr('src'); //如果data-src和src相等那么就是已经加载过了
  23. }
  24. function loadImg ($img) {
  25. $img.attr('src',$img.attr('data-src')); // 加载就是把自定义属性中存放的真实的src地址赋给src属性
  26. }


HTML:

  1. <img src="img/loading.gif" data-src="img-real-url.png" class="blog-logo" />


加载更多