16懒加载

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);
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1- 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。用函数isVisible实现...
    osborne阅读 3,294评论 0 1
  • 1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible...
    晓风残月1994阅读 2,338评论 0 0
  • 1. 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisibl...
    饥人谷_流水阅读 1,126评论 0 0
  • 题目1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisib...
    饥人谷_桶饭阅读 1,729评论 0 1
  • 1.如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible...
    24_Magic阅读 1,589评论 0 0

友情链接更多精彩内容