控制滚动条
scrollTop
和
scrollLeft
属性:
scrollTop
和
scrollLeft
也是可以直接赋值来设置滚动条位置的,下面给
document
添加一个点击事件,点击后设置
scrollTop
为 0,也就是直接返回顶部:
document.addEventListener('click', function() {
document.documentElement.scrollTop = 0;
});
下面给
document
添加一个点击事件,设置滚动条的高度为整个滚动条区域的高度 - 可视区的高度,也就是跳转到底部:
document.addEventListener('click', function() {
document.documentElement.scrollTop = document.documentElement.scrollHeight - window.innerHeight;
});
scrollTo()
方法:
除了直接给
scrollTop
或
scrollLeft
赋值外也可以使用
scrollTo()
方法来设置滚动条的位置。
下面设置
document
的滚动条高度:
document.documentElement.scrollTo(0, 100);
第一个参数是横向滚动条,第二个参数是纵向滚动条。
scrollTo
方法还可以传入对象,如下:
document.documentElement.scrollTo({
top: 200,
left: 0,
});
注意!IE 系列的浏览器不支持
scrollTo
,IE 11 也不支持。
scrollBy()
方法:
scrollBy
和
scrollTo
差不多,也是传入横向滚动条和纵向滚动条的位置来设置滚动条,如下:
document.documentElement.scrollBy(0, 300);
上面设置纵向滚动条高度为 300。
scrollBy
方法也不支持 IE 系列的浏览器。
scrollIntoView()
方法
scrollIntoView
可以指定元素滚动到可视区内,有点类似于链接的锚点跳转。
下面让
footer
元素滚动到可视区内:
document.querySelector('footer').scrollIntoView(true);
scrollIntoView
可以接收一个
Boolean
类型的参数,也可以接收一个对象。
如果
Boolean
类型的参数为
true
,元素的顶端将和其所在滚动区的可视区域的顶端对齐,如果为
false
,元素的底端将和其所在滚动区的可视区域的底端对齐。
下面是对象说明:
属性
|
说明
|
behavior
|
定义动画过渡效果,
auto
或
smooth
之一。默认为
auto
|
block
|
定义垂直方向的对齐,
start
,
center
,
end
, 或
nearest
之一。默认为
start
|
inline
|
定义水平方向的对齐,
start
,
center
,
end
, 或
nearest
之一。默认为
nearest
。
|
上面表格中的说明来源于 MDN 文档。
对象的每个属性都可以省略,下面只传入一个属性:
document.querySelector('footer').scrollIntoView({
behavior: 'smooth',
});
scrollIntoView
方法 IE 11 是可以支持的,但不会显示动画。
判断是否滚动到底部
现在的很多手机 APP 和网站都是根据滚动条的位置动态加载数据的,当滚动条滚动到底部就会加载数据。
下面监听
document
的滚动条,当滚动条滚动到底部就弹出一个对话框:
document.addEventListener('scroll', function() {
if (document.documentElement.scrollTop + window.innerHeight >= document.documentElement.scrollHeight) {
alert('到底了');
});
相关文章: