在前端开发中,需要获取浏览器滚动距离的需求,这篇文章主要讲解如何使用原生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())
目前window.pageXOffset是不兼容IE8以及之前的老版本,所以这里需要使用document.documentElement.scrollLeft来获取老版本的滚动距离。
经测试发现,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%的时候
window.scorllX和window.scrollY同样可以获取滚动距离,效果和上面是等同,但是它们之间的主要区别在于:
scorllX和scrollY是可读属性。
这篇文章主要介绍使用js实现文字无间歇性上下滚动,一些网站的公告,新闻列表使用的比较多,感兴趣的小伙伴们可以参考一下
简单介绍,使用keep-alive的时候,返回前一页,没有保持滚动条位置。事实上,就算不使用keep-alive,位置也没有被记录。但是,在不使用keep-alive的时候,页面内容会刷新,所以就随他去了……就是这么任性……
在某些场景中,我们通常会遇到需要将滚动条保持在顶/底部,比如:在线客服聊天对话中,始终让聊天对话框保持在最底部使得能一直看到最新的聊天记录
当前容器已经滚动到底部或者顶部,无法再滚动,容器会默认选择上层容器进行滚动,可以说滚动贯穿并非是一个bug,只是一种现象
这篇文章主要介绍使用js实现文字无间歇性上下滚动,一些网站的公告,新闻列表使用的比较多,感兴趣的小伙伴们可以参考一下 ,代码实现如下。
BetterScroll 是一款重点解决移动端各种滚动场景需求的开源插件,有下列功能支持滚动列表,下拉刷新,上拉刷新,轮播图,slider等功能。better-scroll通过使用惯性滚动、边界回弹、滚动条淡入淡出来确保滚动的流畅。
一般默认的滚动条会比较丑,我们可以利用css或者js来实现实现自定义滚动条的功能; 下面就整理2种实现方式
在H5中,我们有这样的需求:例如有列表的时候,滚动到底部时,需要加载更多。可以采用window的滚动事件进行处理,如果滚动是针对整个屏幕而言的(不针对于某个界面小块),那么这个应该是是成立的
window.onscroll为滚轮监听,document.body.scrollTop||document.documentElement.scrollTop 写两个是为了兼容不同浏览器。固定位置的top要设为负值,原因不明,若为0则会跟上方有空隙。左右位置虽然是0也要设,不然若为不是100%宽度的内容会出现左右跳动。
iScroll 是一款针对web app使用的滚动控件,它可以模拟原生IOS应用里的滚动列表操作,还可以实现缩放、拉动刷新、精确捕捉元素、自定义滚动条等功能。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!