懒加载

2017-07-10  本文已影响0人  annynick

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

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

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

$(window).on('scroll',function(){
     isVisible($('.div1'))
   }
})
function isVisible($node){
  var offsetHeight = $node.offset().top
  var windowHeight = $(window).height()
  var scrollTop = $(window).scrollTop()
  if((offsetHeight>scrollTop) && (offsetHeight<windowHeight+scrollTop)){
      console.log('true')
      return true
  }
      return false
 }
}

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

var isAppear = false  //设置初始变量为false;
  $(window).on('scroll',function() {
   function isVisible($node) {
      if (!isAppear) {   //当还未打印过true的时候执行函数
          var offsetHeight = $node.offset().top
          var windowHeight = $(window).height()
          var scrollTop = $(window).scrollTop()
      if( offsetHeight < scrollTop + windowHeight && offsetHeight > scrollTop  ){
        console.log ('true')
        }
        isAppear=true  //打印过true时,变量设置为true,后面就不会执行了
      }
   }
    isVisible($('.div1'))  
 })

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

将所有图片的img标签写入html中
将所有img的src设置为一张白图或loading图片,这样浏览器加载时只需要发送一个请求,因为对于相同内容的请求,浏览器会从缓存中获取数据
将img的真实地址放在data-src自定义属性当中,当img出现在视窗时,再将data-src属性值赋值给src属性

上一篇下一篇

猜你喜欢

热点阅读