原生js获取浏览器获X轴,Y轴的滚动距离

时间: 2018-08-09阅读: 3568标签: 滚动

前端开发中,需要获取浏览器滚动距离的需求,这篇文章主要讲解如何使用原生js兼容实现获取浏览器获X轴,Y轴的滚动距离。并延伸扩展下我们一些不知道的js知识,希望对你有所帮助。


代码实现:

//获取浏览器X轴,Y轴的滚动距离
function getScrollDistance() {
	var  obj=null
    if (window.pageXOffset  !== undefined){
    	obj={
    		x: window.pageXOffset,//文档在窗口左上角水平方向滚动的像素
            y: window.pageYOffset,//文档在窗口垂直方向滚动的像素
    	} 
     } else if(document.compatMode !== undefined && document.compatMode != 'BackCompat'){
        obj={
            x: document.documentElement.scrollLeft,
            y: document.documentElement.scrollTop,
        }
    } else {
    	obj={
            x: document.body.scrollLeft,
            y: document.body.scrollTop,
        }
    }
    return obj
}
console.log(getScrollDistance())


延伸知识:

1、window.pageXOffset的兼容性

目前window.pageXOffset是不兼容IE8以及之前的老版本,所以这里需要使用document.documentElement.scrollLeft来获取老版本的滚动距离。


2、IE中document.body.scrollLeft会出现为0的情况

经测试发现,document.body.scrolltop在IE中会出现0的返回结果,出现为0的原因主要有:

a、页面头部的声明如下导致: 【取消该声明即可成功获取】

<DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">

b、用户设置了浏览器的缩放比,如果浏览器缩放比小于100%的时候


3、可以使用scrollX和scrollY来替换pageXOffset、pageYOffset

window.scorllX和window.scrollY同样可以获取滚动距离,效果和上面是等同,但是它们之间的主要区别在于:

scorllX和scrollY是可读属性。



站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/1000

原生js实现新闻无间歇性上下滚动【无间歇文字滚动】

这篇文章主要介绍使用js实现文字无间歇性上下滚动,一些网站的公告,新闻列表使用的比较多,感兴趣的小伙伴们可以参考一下 ,代码实现如下。

使用CSS实现无滚动条滚动

我们都知道,撸页面的时候当我们的内容超出了我们的div,往往会出现滚动条,影响美观。百度下大部分都是在说overflow:hidden或者overflow-y: no可以解决问题,但是并不能很好的解决我们的问题,那么怎么办呢?

js将滚动条scrollbar保持在最顶/底部

在某些场景中,我们通常会遇到需要将滚动条保持在顶/底部,比如:在线客服聊天对话中,始终让聊天对话框保持在最底部使得能一直看到最新的聊天记录

BetterScroll移动端滚动场景的应用

BetterScroll 是一款重点解决移动端各种滚动场景需求的开源插件,有下列功能支持滚动列表,下拉刷新,上拉刷新,轮播图,slider等功能。better-scroll通过使用惯性滚动、边界回弹、滚动条淡入淡出来确保滚动的流畅。

JS原生实现连续滚动文字

最近在工作中遇到,文字在大屏中,出现底部有留白导致不连续的现象,很奇怪,故写这篇文章细究其原因;offsetTop 小于等于 scrollTop时 scrollTop至为0,此次滚动条回到初始位置

vue 无限滚动问题

如今web开发中,无限加载是必需的一项功能,尤其是在移动端开发中,一个列表往往默认只加载10条,想看更多只能逐渐往下翻页。那么今天就看看如何在Vue-Cli中实现这个功能

JS 判断元素是否可以滚动

今天在解决 ios 移动端滚动穿透的问题时遇到一个问题,就是判断元素能否滚动,把这个过程记录下来。以下以纵向滚动为例,横向滚动同理。scrollHeight 是一个元素内容高度的度量,包括由于溢出导致的视图中不可见的内容

css、js实现自定义滚动条的两种方式

一般默认的滚动条会比较丑,我们可以利用css或者js来实现实现自定义滚动条的功能; 下面就整理2种实现方式

H5中滚动到底部的事件

在H5中,我们有这样的需求:例如有列表的时候,滚动到底部时,需要加载更多。可以采用window的滚动事件进行处理,如果滚动是针对整个屏幕而言的(不针对于某个界面小块),那么这个应该是是成立的

html页面滚动加载,可视区域判断

一种情况初始状态下 滚动到在中间区域的时候,这时上半部分看不见的元素就不给字体添加红色

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!