博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS使用onscroll、scrollTop实现图片懒加载
阅读量:5278 次
发布时间:2019-06-14

本文共 1653 字,大约阅读时间需要 5 分钟。

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

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

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 
2
content
3

  因为外层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)一样。

转载于:https://www.cnblogs.com/guanghe/p/10595460.html

你可能感兴趣的文章
Spring中的@Controller和 @RestController 的区别以及@ReqeustMapping的作用
查看>>
ajax不跳转页面的快速删除操作,可添加美观样式
查看>>
使用HTML语言和CSS开发商业站点(7)
查看>>
第四章例4-3
查看>>
O the joy of having nothing / 아무것도 갖지않고
查看>>
[COURSE_PTHE] 19. 密码学
查看>>
IOS平台开发学习笔记
查看>>
如何组织Html元素与如何进行CSS命名(上)
查看>>
二、Python 数据类型
查看>>
vue表单校验提交报错TypeError: Cannot read property 'validate' of undefined
查看>>
pycharm connect to mysql
查看>>
59、crontab用法简介
查看>>
在NSMutableArray中添加空元素:NSNull类的使用
查看>>
eclipse(luna)搭建SSH(struts2+spring4+hibernate4)
查看>>
如何建立自己的博客网站
查看>>
2 单例设计模式面试题
查看>>
字符串转为数组
查看>>
Mock制作假数据
查看>>
Scroll的使用
查看>>
Maven学习笔记(一)
查看>>