美文网首页
16懒加载

16懒加载

作者: hhg121 | 来源:发表于2017-07-23 15:12 被阅读9次

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,以后再次出现不做任何处理。用代码实现

<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style>
    div {
      border: 1px solid red;
      width: 100px;
      height: 1000px;
    }
  </style>
</head>
<body>
  <div>12</div>
  <p load='no'>23</p>
</body>
</html>

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懒加载

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

  • 进阶16 懒加载

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

  • 进阶16:懒加载

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

  • 进阶16 懒加载

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

  • 进阶16:懒加载

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

  • 进阶16 懒加载

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

  • 进阶16 懒加载

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

  • 进阶16 懒加载

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

  • 懒加载(进阶16)

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

  • react18 useRoutes嵌套路由及懒加载

    之前写过react16的嵌套路由及懒加载的方案react 中的 suspense 和 lazy 与 动态路由加载[...

网友评论

      本文标题:16懒加载

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