16懒加载

16懒加载_第1张图片

1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现

function isVisible($node){
  var windowHeight = $(window).height();       //窗口高度
  var scrollTop = $(window).scrollTop();          // 窗口滑动距离
  var offsetTop = $node.offset().top;               // 相对文档高度
  if(offsetTop < windowHeight + scrollTop && offsetTop > scrollTop){
    return true;
  }
  return false;
 }

2:当窗口滚动时,判断一个元素是不是出现在窗口可视范围。每次出现都在控制台打印 true 。用代码实现

$(window).on('scroll',function(){
  if(isVisible($('p'))){
    console.log(true);
  }
  else {
    console.log(false);
  }
});

3:当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。用代码实现





  
  JS Bin
  


  
12

23

function isVisible($node){ var windowHeight = $(window).height(); var scrollTop = $(window).scrollTop(); var offsetTop = $node.offset().top; if(offsetTop < windowHeight + scrollTop && offsetTop > scrollTop){ return true; } return false; } $(window).on('scroll',function(){ if(isVisible($('p')) && !isloaded($('p')) ){ $('p').attr('load','yes'); console.log(true); } else { console.log(false); } }); function isloaded($node) { if($node.attr('load') === 'yes'){ return true; } return false; }

4: 图片懒加载的原理是什么?

懒加载的实现原理是页面显示的时候,只显示视图范围内的图片资源,对于其他图片则是等进入试图内再进行加载,这样会减少http请求,提高页面的性能。
我们将图片的src放入到一个自定义属性中(data-src),然后判断一个元素是否进入到可视窗口中,当元素出现在可视窗口中,再将这个自定义属性的值赋给图片的src。

5: 实现视频中的图片懒加载效果

code

  var clock;
  renderImg();
  $(window).on('scroll',function(){
    if(clock){
      clearTimeout(clock);
    }
    clock = setTimeout(function() {
      renderImg();
      console.log(11);
    }, 300);
    
  });
  function renderImg(){
    $('.container img').each(function(){
      if(isVisible($(this)) && !isloaded($(this)) ){
        loadImg($(this));
      }
    })
  }
  function isVisible($img){
    var windowHeight = $(window).height();
    var scrollTop = $(window).scrollTop();
    var offsetTop = $img.offset().top;
    if(offsetTop < windowHeight + scrollTop && offsetTop > scrollTop){
      return true;
    }
    return false;
  }
  function isloaded($img) {
    return $img.attr('src') === $img.attr('data-src');
  }
  function loadImg($img){
    $img.attr('src',$img.attr('data-src'));
    console.log(1);
  }

你可能感兴趣的:(16懒加载)