[关闭]
@mrbourne 2017-02-04T10:45:03.000000Z 字数 1101 阅读 3084

手机端实现滑动分页及优化

前端入门


首先要明确几个问题:

  1. 往下滚动的时候把最上面一页移除,那等我要往上滚动的时候,上一页都已经被移除掉了,我怎么获取到上一页的内容呢?

  2. 既然有dom节点的移除和添加,那么我的滚动条位置要移除页面的同时要怎么设置才能让用户看起来像是无缝连接呢?

  3. 我如何判断我已经滚动到了页面的顶部或底部?

  4. 在滚动到底部或顶部的时候,我们具体究竟要执行哪些操作

现在我们一个一个解决:

  1. var preRemoveArray = []; //被移除的 当前页面之前的页面
  2. var nextRemoveArray = []; //被移除的 当前页面后面的页面

当我们要移除上一页的时候,只需要获得第一页的html,将它push进preRemoveArray就可以了。同时如果nextRemoveArray中有内容的话(意味着你之前已经浏览过下面的内容),只需要执行

  1. nextRemoveArray.pop(nextRemoveArray.length - 1); //取得是栈底的元素,因为当前页之后的页面如果push的时候顺序是 2, 3, 4页,当回到第1页再获取下一页的时候取得是 2页的内容。也可改用队列方式。
  2. nextRemoveArray.shift(); //删除并返回第一个元素

就可以获取到下一页的内容了。

往下拉

我们通过document.body.scrollTop获得当前滚动条的位置,因为往下拉要移除第一页的内容,所以

document.body.scrollTop = document.body.scrollTop - 第一页的高度

往上拉

假设我们现在页面中显示的是第2、3页,此时滚动到顶部,document.body.scrollTop = 0,加载了上一页的内容,移除了第3页之后,页面中显示的是第1、2页,

我们的滚动条要设置在第2页的顶部,这样用户看起来才像是无缝连接的,所以

document.body.scrollTop = document.body.scrollTop + 第一页的高度
  1. var isTop = function() {
  2. return document.body.scrollTop === 0;
  3. };

返回true时,则表示滑动到顶部了。

一个是document.body.scrollTop: 网页被卷去的高

一个是window.screen.height: 屏幕分辨率的高

一个是document.body.clientHeight: 网页可见区域高

只有当document.body.scrollTop

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注