📅  最后修改于: 2023-12-03 14:41:48.660000             🧑  作者: Mango
scrollTop 属性返回或设置一个元素的垂直滚动条位置。
该属性只针对能够滚动的元素有意义,例如 <div>
、 <textarea>
等,对于其他元素则无效。
获取元素的垂直滚动条位置:
element.scrollTop
设置元素的垂直滚动条位置:
element.scrollTop = value
其中,value 是一个数值,代表滚动条的位置。
获取元素的垂直滚动条位置:
var element = document.getElementById("myDiv");
var scrollTop = element.scrollTop;
设置元素的垂直滚动条位置:
var element = document.getElementById("myDiv");
element.scrollTop = 100;
scrollTop 属性在大部分主流浏览器中都支持,详细兼容性请参考 CanIUse。
scrollTop 属性常常用于以下场景:
例如,在一个页面高度较长的列表中,监听其滚动事件,可以实现当滚动到一定位置时展示返回顶部按钮的功能:
var list = document.getElementById("myList");
list.addEventListener("scroll", function() {
var scrollTop = list.scrollTop;
if (scrollTop > 500) {
document.getElementById("scrollTopBtn").style.display = "block";
} else {
document.getElementById("scrollTopBtn").style.display = "none";
}
});
又如,通过 scrollTop 属性可以实现平滑滚动到指定位置的效果:
function smoothScrollTo(position) {
var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
var distance = position - currentScroll;
var step = Math.ceil(Math.abs(distance / 20));
if (distance > 0) {
smoothScrollDown(currentScroll, position, step);
} else {
smoothScrollUp(currentScroll, position, step);
}
}
function smoothScrollDown(currentPosition, targetPosition, step) {
if (currentPosition < targetPosition) {
var newPosition = Math.min(currentPosition + step, targetPosition);
document.documentElement.scrollTop = newPosition;
document.body.scrollTop = newPosition;
window.requestAnimationFrame(function() {
smoothScrollDown(newPosition, targetPosition, step);
});
}
}
function smoothScrollUp(currentPosition, targetPosition, step) {
if (currentPosition > targetPosition) {
var newPosition = Math.max(currentPosition - step, targetPosition);
document.documentElement.scrollTop = newPosition;
document.body.scrollTop = newPosition;
window.requestAnimationFrame(function() {
smoothScrollUp(newPosition, targetPosition, step);
});
}
}
以上代码实现了一个平滑滚动到指定位置的函数 smoothScrollTo,可以通过调用该函数实现 Smooth Scroll 的效果。
scrollTop 属性是一个用于控制元素滚动的重要属性,可以实现诸如监听滚动、平滑滚动到指定位置等功能。需要注意的是,scrollTop 属性只针对可滚动的元素有意义,且在某些情况下需要处理浏览器兼容性。