要实现在距离顶部的特定位置停止平滑滚动,需要按照以下步骤进行。
步骤一:添加jQuery库文件
首先,在网站的头部添加jQuery库,可以是在线引入,也可以是本地引入。可以使用以下代码在线引入jQuery库:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
步骤二:添加平滑滚动到位置的函数
接下来,在jQuery的 .ready()
函数中添加平滑滚动到指定位置的函数。可以使用以下代码实现:
$(document).ready(function(){
// 对所有带有平滑滚动类名的锚点链接添加点击事件
$("a.smooth-scroll").on('click', function(event) {
// 禁用默认的闪现跳转
if (this.hash !== "") {
event.preventDefault();
// 获取目标的哈希值
var hash = this.hash;
// 在动画中使用动态的偏移量
var offset = $(hash).offset().top - 80;
// 使用 jQuery 的 animate() 方法,实现平滑滚动效果
$('html, body').animate({
scrollTop: offset
}, 800, function(){
// 添加突出显示效果,高亮选中的锚点链接
$('a.smooth-scroll').removeClass('active');
$(this).addClass('active');
});
} // End if
});
});
在这个函数中,我们首先绑定了所有带有 smooth-scroll
类名的锚点链接的 click
事件。使用 event.preventDefault()
禁用默认的跳转行为。接着获取目标的哈希值,并且在动画中使用动态的偏移量,保证目标停留在屏幕顶部的特定位置。最后使用 animate()
方法,实现平滑滚动效果,并且添加突出显示效果,高亮选中的锚点链接。
步骤三:设置停止平滑滚动的条件
最后一步,在函数中添加停止平滑滚动的条件。可以使用以下代码实现:
$(window).scroll(function(){
// 获取窗口滚动条的位置
var scrollPos = $(window).scrollTop();
// 遍历所有带有平滑滚动类名的锚点链接,逐一判断是否停止滚动
$('a.smooth-scroll').each(function () {
// 获取当前锚点链接的哈希值
var hash = this.hash;
var offset = $(hash).offset().top - 80;
// 如果窗口滚动条的位置大于或等于当前锚点链接的偏移量,停止滚动
if (scrollPos >= offset) {
$('a.smooth-scroll').removeClass('active');
$(this).addClass('active');
}
});
});
在这个函数中,我们使用 .scroll()
方法为窗口滚动条添加滚动事件,获取滚动条的位置。然后遍历所有带有 smooth-scroll
类名的锚点链接,获取它们的偏移量,并且逐一判断是否应该停止滚动,如果当前滚动条位置大于等于当前锚点链接的偏移量,那么就使用 addClass()
方法添加选中状态类名 active
。