懒加载和瀑布流

作者: fejavu | 来源:发表于2019-06-01 23:30 被阅读0次

懒加载机制和瀑布流结合

预览链接
预览链接

懒加载原理

懒加载的目的是为了加快对资源的请求,减少请求的时间,减少用户等待的时间,从而提高用户体验。
因此,除了提高网速,懒加载是减少不必要的请求,如未进入窗口视线的元素(图片,css等),不必进行加载,先用同一张图片进行代替,还有已经进行过加载的元素,不必再次加载。

// 懒加载核心代码
function lazyload() {
  $("img").not("[loaded]").each(function() {
    if(isShow($this)) {
      loadImg($(this));
    }
  })
}

瀑布流原理

瀑布流是将所有元素等宽,上下排列,每加载一个元素,将它插入多列等宽流中高度最低的一个。因此有两个关键点:1. 元素等宽。 2. 找到每次高度最低的一列。

function waterFall ($item) {
  var minIndex = 0;  // 最小高度数值
  var minHeight = 0;  // 最小高度
  var heightArr = [];  // 存储每列的高度
  var colCount;  // 瀑布流列数
  for(var i=0;i<heightArr.length;i++) {
    if(minHeight > heightArr[i]) {
      mingHeight = heightArr[i];
      minIndex = i;
    }
  }
  $item.css({
    top: minHeight,
    left: minIndex * itemWidth
  });  // 利用绝对定位,高度和宽度放置元素。
  heightArr[minIndex]  += $item.outerHeight(true); // 刚放置元素的高度等于之前的高度加刚加上的元素的高度
}

实现原理

  1. 在初始化时,放松一次请求,先进行一次加载。
  2. 利用瀑布流的形式,放置已加载的新闻图片流。
  3. 当用户滚动到已加载元素底部时,重复 第1步、第2步。

核心代码:

function init() {
  start();

  $(window).on('scroll', function() {
    if(isBottom()) {
      start();
    } 
  });
}
init();

细节实现代码:

function start() {
  getData(function(data) {
    var $node = generateData(data);
    waterfall($node);
  });
}

function getData(callback) {
  $.ajax();
  callback(data);
}

function generateData(data) {
  // do something to data
  return $node
}

function waterfall($node) {
  // calculate the minHeight and minIndex;
  $node.css({
    top: minHeight,
    left: minIndex * itemWidth
  });
}

function bind() {
  $(window).on('scroll', function() {
    if(isBottom()) {
      start();
    }
  });
}

function isBottom() {
  return element.offset().top < $(window).scrollTop() + $(window).height();
}

相关文章

  • 新闻瀑布流懒加载

    新闻瀑布流懒加载效果 代码

  • 懒加载和瀑布流

    1.懒加载 原理 先将页面中的img元素的路径(src)设置为同一张图片的路径,当访问这个页面时,一开始只需要加载...

  • 懒加载和瀑布流

    一、简述图片懒加载的实现原理 图片懒加载 若一开始,页面上有许多的图片要加载,而如果同时加载这么多图片,会消耗性能...

  • 懒加载和瀑布流

    1、思路 懒加载的思路的关键点是判断一个元素是否在窗口内,如果解决了这个问题,懒加载的问题就可以迎刃而解,我们通过...

  • 懒加载和瀑布流

    懒加载机制和瀑布流结合 预览链接预览链接 懒加载原理 懒加载的目的是为了加快对资源的请求,减少请求的时间,减少用户...

  • 常用效果(瀑布流.懒加载.木桶布局)

    瀑布流.木桶.新闻页懒加载demogif

  • 懒加载、瀑布流

    懒加载 懒加载是通过延迟加载不可见元素,提升网页性能,减少同一时间服务器请求的一种方式。当用户滚动当前页面时再去自...

  • 瀑布流和懒加载结合

    实现一个瀑布流布局效果 瀑布流

  • 懒加载和瀑布流的原理

    瀑布流-新浪新闻 瀑布流项目结合懒加载预览地址 懒加载原理 为了防止页面一次性向服务器发送大量请求,导致服务器响应...

  • 前端一些工具

    图片懒加载 lazyloadhttps://github.com/tuupola/jq... 瀑布流 Masonr...

网友评论

    本文标题:懒加载和瀑布流

    本文链接:https://www.haomeiwen.com/subject/aasztctx.html