zl程序教程

您现在的位置是:首页 >  后端

当前栏目

js:可能是最全的scroll相关的方法

JS方法 相关 可能 最全 scroll
2023-09-27 14:27:09 时间

1、基本API

screenLeft

返回相对于屏幕的X坐标。

screenX

返回相对于屏幕的X坐标,同screenLeft。

scrollX

scrollX和scrollY分别是文档相对于当前浏览器视口已滚动的距离。

scrollTop,scrollLeft

网页上边被卷去的内容高度。注:只有dom有

获取:element.scrollTop
赋值:element.scrollTop = 200

scrollHeight,scrollWidth

元素滚动条内的内容高度。注:只有dom有,只读,不可设置

获取:element.scrollHeight
document.getElementById('mainBox').scrollWidth

scrollBy(x,y)

滚动指定的距离。

scrollTo(x,y)

滚动到指定的坐标位置。

clientX

鼠标指针到屏幕可视区域左端的距离

dom.onclick = function (e) {
   console.log(e.clientX);
}

pageYOffset

滚动条距离页面顶部的距离。

2、实例

判断滚动到底部

<!DOCTYPE html>
<html>
<head>
	<title>判断滚动到底部</title>
	<style type="text/css">
		#aa{
			width:300px;
			height:400px;
			overflow-y:scroll;
		}
	</style>
	<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
</head>
<body>
	<div id="aa">
		<div id="bb">
			Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!
		</div>
	</div>
	<div>
		Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nostrum, fuga veniam tenetur ex assumenda. Doloremque, nesciunt? Unde dolorum, sapiente est quaerat quas consectetur, necessitatibus hic aperiam repellat odit blanditiis!Lorem ipsum dolor sit amet consectetur 
	</div>
</body>
<script type="text/javascript">
	$(function() {
		//#aa这一部分滚动到底部
		$("#aa").scroll(function() {
			// 源生写法
			// if(this.scrollTop >= this.scrollHeight - this.clientHeight) {
			// 	alert('aa滑到了底部');
			// }

			// jQuery写法
			if($(this).scrollTop() >= $(this)[0].scrollHeight - $(this).height()) {
				alert('aa滑到了底部');
			}
		})

		//整个页面滚动到底部
		$(window).scroll(function() {
			// 源生写法(下一块代码)
			// 很麻烦,因为要判断document.body和document.documentElement对各个浏览器的兼容性,可参考https://www.cnblogs.com/winyh/p/6715010.html

			// jQuery写法
			if($(window).scrollTop() >= $(document).height() - $(window).height()) {
				alert('页面滑到了底部');
			}
		})
	})
</script>
</html>
源生整个页面滚动到底部(兼容不同的浏览器)。
//滚动条在Y轴上的滚动距离
function getScrollTop(){
  var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
  if(document.body){
    bodyScrollTop = document.body.scrollTop;
  }
  if(document.documentElement){
    documentScrollTop = document.documentElement.scrollTop;
  }
  scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
  return scrollTop;
}
 
//文档的总高度
function getScrollHeight(){
  var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
  if(document.body){
    bodyScrollHeight = document.body.scrollHeight;
  }
  if(document.documentElement){
    documentScrollHeight = document.documentElement.scrollHeight;
  }
  scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
  return scrollHeight;
}
 
//浏览器视口的高度
function getWindowHeight(){
  var windowHeight = 0;
  if(document.compatMode == "CSS1Compat"){
    windowHeight = document.documentElement.clientHeight;
  }else{
    windowHeight = document.body.clientHeight;
  }
  return windowHeight;
}
 
window.onscroll = function(){
  if(getScrollTop() + getWindowHeight() == getScrollHeight()){
    alert("已经到最底部了!!");
  }
};