js获取滚动条的位置

一.获取当前页面滚动条纵坐标的位置

document.body.scrollTop与document.documentElement.scrollTop

IE6/7/8/IE9及以上:
可以使用 document.documentElement.scrollTop;

Safari,Firefox:,Chrome:
可以使用 document.body.scrollTop;

二.js获取网页屏幕可视区域高度

document.body.clientWidth ==> BODY对象宽度

document.body.clientHeight ==> BODY对象高度

document.documentElement.clientWidth ==> 可见区域宽度

document.documentElement.clientHeight ==> 可见区域高度

看了以上代码,可能会有疑问说body和可见区域到底有什么不同呢,我们在console里运行一下会发现在不同的网页中有不同的情况值,有的document.body.clientWidth和document.documentElement.clientWidth 的值相同,有的却不同,原因在哪呢?

原因就是:
在浏览器默认的情况下,body有8-10px左右的边距,而可见区域包括了这个边距,因此如果我们用到body{padding:0;margin:0;}来消除这种默认的情况。那么document.body.clientWidth和document.documentElement.clientWidth 的值就会相同。

三.获取文档完整高度

网页正文全文宽:document.body.scrollWidth 基本等同于document.body.clientWidth
网页正文全文高:document.body.scrollHeight 基本等同于document.body.clientHeight

案例:
滚到底部,加载下一页数据

export default {
  data() {
    return {};
  },
  mounted() {
    //监听并处理函数
    window.addEventListener("scroll", this.handleScroll);
  },
  methods: {
    handleScroll(e) {
      if (
        this.getScrollTop() + this.getClientHeight() == this.getScrollHeight()
      ) {
        if (Math.ceil(this.total / this.limit > this.nextPage)) {
          this.nextPage += 1;
          this.getList();
        }
      }
    },
    //获取当前滚动条的位置
    getScrollTop(){
        var scrollTop=0
        if(document.documentElement&&document.documentElement.scrollTop){
            scrollTop = document.documentElement.scrollTop
        }else if(document.body){
            scrollTop = document.body.scrollTop
        }
        return scrollTop
    },
    //获取当前可视范围的高度
    getClientHeight(){
        var clientHeight = 0
        if(document.body.clientHeight&&document.documentElement.clientHeight){
            clientHeight = Math.min(document.body.clientHeight,document.documentElement.clientHeight)
        }else{
            clientHeight = Math.max(document.body.clientHeight,document.documentElement.clientHeight)
        }
        return clientHeight
    },
    //获取文档完整的高度
    getScrollHeight(){
        return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)
    }
  }
};

四.搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

  • clientHeight:包括padding但不包括border、水平滚动条、margin的元素的高度。对于inline的元素这个属性一直是0,单位px,只读元素。
    在这里插入图片描述
  • offsetHeight:包括padding、border、水平滚动条,但不包括margin的元素的高度。对于inline的元素这个属性一直是0,单位px,只读元素。

在这里插入图片描述

  • scrollTop: 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。在没有滚动条时scrollTop==0恒成立。单位px,可读可设置。
    在这里插入图片描述

  • offsetTop: 当前元素顶部距离最近父元素顶部的距离,和有没有滚动条没有关系。单位px,只读元素。
    在这里插入图片描述

  • scrollHeight代表包括当前不可见部分的元素的高度

  • clientHeight仅指可见部分的高度
    所以scrollHeight>=clientHeight恒成立的。
    在有滚动条时讨论scrollHeight才有意义,在没有滚动条时scrollHeight==clientHeight恒成立。单位px,只读元素。
    在这里插入图片描述

转载自:https://www.imooc.com/article/17571

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值