进阶16 懒加载

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

function isVisible($node){
    var scrollTop = $(window).scrollTop()
    var windowHeight = $(window).height()
    var offsetTop = $node.offset().top
    if(offsetTop < scrollTop + windowHeight && offsetTop > scrollTop){
        return true
     }
    return false
}

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

var toggle = true //设置一个开关
$(window).on('scroll', function(){
  if( isVisible($node) ){ //先判断元素是否可视
    if(toggle){ //如果元素可视,并且toggle是true
      console.log('true') //输出true
      toggle = false //接着关闭toggle
    }
  }else{  //如果元素不可见,则保持(或打开)toggle,以便下次元素可视时,保证toggle呈开启状态
    toggle = true    
  }
})

效果预览

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

var toggle = true
$(window).on('scroll', function(){
  if(toggle){  //这次先判断 toggle,如果是false,则后面每次元素可视时,不必在浪费时间
    if( isVisible($('.box1')) ){ //如果元素可视
      console.log('true') //输出true
      toggle = false //接着永久关闭toggle
    }
  }
})

效果预览

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

  1. 首先在图片中预先埋入自定义data-src存储真路径, 而src属性则写入相同loading图片路径,或者blank图片路径。

  2. 接着渲染当前可视范围内的图片

  3. 然后为窗口绑定scroll滚动事件,遍历图片,传入函数,看情况渲染:
    如果图片出现在窗口可视范围时,并且图片尙未加载,则把src替换为data-src,如果图片src === data-src,则说明已经加载过了,那么本次滚动事件中,可视图片不再做处理,不可视图片,虽然未加载,但尚未处于可视范围,因此也不做处理。

上述中关于判断图片是否可视的思路是:
当前已滚动高度 < 图片距离文档顶部高度 < 当前已滚动高度 + 当前窗口高度

5: 一种图片懒加载效果:

点击图片预览

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

相关阅读更多精彩内容

  • 题目1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisib...
    饥人谷_桶饭阅读 337评论 0赞 1
  • 1. 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisibl...
    饥人谷_流水阅读 151评论 0赞 0
  • 1.如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible...
    24_Magic阅读 282评论 0赞 0
  • 题目1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisib...
    Maaaax阅读 353评论 0赞 0
  • 曾经你,知以知 ――参差荇菜 “我还未见你,你就离去,我多希望这世间的风雨,都是你在我哭泣的时候,留给我的...
    钟馔阅读 568评论 0赞 0

友情链接更多精彩内容