• JS使用onscroll、scrollTop实现图片懒加载


      今天做到项目中的图片展示,由于每一页的图片数量都很多,因此需要为图片的展示设计一种懒加载的功能。

      第一要做的当然就是给程序添加滚动监听事件。

     1 //触发拉取图片开关,保证正在拉取时不能再次触发
     2 var scrollFlag = true;
     3 
     4 //给滚动页面添加监听事件
     5 $(window).scroll(function() {
     6     var windowHeight = $(window).height();
     7     var scrollHeight = $(window).scrollTop();
     8     var cursor = $(".pic").offset().top;
     9     if(windowHeight + scrollHeight > cursor + 100) {
    10         if(scrollFlag) {
    11             pullPic();
    12         }
    13     }
    14 });
    15 
    16 //懒加载图片请求
    17 function pullPic() {
    18     scrollFlag = false;
    19     console.log("加载图片3秒钟");
    20     setTimeout(function() {
    21         scrollFlag = true;
    22     }, 3000);
    23 }

    我们来看看JS中常用的关于位置查询的函数:

    onscroll

      当元素的滚动条滚动时触发的事件。

      onscroll事件任何实体元素都可以绑定,这里的实体元素包括window元素、document元素、DOM元素。

      用法即:element.onscroll = function(){};

      需要注意的是,滚动条一定要出现,而且滚动条是属于这元素的

    1 <div id="wrap" style="height:100px;overflow:auto;">
    2     <div id="inner" style="height:200px;">content</div>
    3 </div>

      因为外层wrap的高度小于内层inner的高度,所以当设置overflow:auto时会出现滚动条,当拖动滚动条时就会触发wrap的onscroll事件,而不是inner的onscroll事件,即这滚动条属于wrap而不是属于inner。

    scrollTop

      元素滚动条内的顶部隐藏部分的高度。

      scrollTop属性只有DOM元素才有,window/document没有,但用jquery$(window).scrollTop()也可以查出值。

      用法1:获取值 var top = element.scrollTop;//返回数字,单位像素

      用法2:设置值 element.scrollTop = 200;

      对上面的例子来说,控制滚动条的位置是wrap.scrollTop=xx;而不是inner.scrollTop,道理同上。

    scrollHeight

      元素滚动条内的内容高度。

      scrollHeight同scrollTop属性一样,只有DOM元素才有,window/document没有。

      不同的是scrollHeight是只读,不可设置。此外还有scrollLeft,scrollWidth,道理是一样的。

    关于window.scroll(),window.scrollBy(),window.scrollTo()

      window.scroll(x,y)是让window滚动条滚动到那个x,y坐标。//x是水平坐标,y是垂直坐标。

      window.scrollBy(-x,-y)是让window滚动条相对滚动到某个坐标,- 10即相对向左/向上滚动10像素。

      window.scrollTo(x,y)和window.scroll(x,y)一样。

  • 相关阅读:
    Troubleshooting ORA-01555/ORA-01628/ORA-30036 During Export and Import (Doc ID 1579437.1)
    SRDC
    Troubleshooting ORA-01555
    ORA-01555 When Max Query Length Is Less Than Undo Retention, small or 0 Seconds (Doc ID 1131474.1)
    SRDC
    故障排除指南(TSG)-ORA-01552: Cannot Use System Rollback Segment for Non-System Tablespace (Doc ID 1579215.1)
    主说明:自动Undo管理的故障排除指南(Doc ID 1579081.1)
    vue指令
    day65
    vue基础
  • 原文地址:https://www.cnblogs.com/guanghe/p/10595460.html
Copyright © 2020-2023  润新知