我目前正在开发一个网站项目,并试图通过jQuery实现平滑的滚动功能。
到目前为止,这是我的(工作!)代码:
$(document).ready(function(){
$('a[href*="#"]:not([href="#"])').click(function() {
var displace = 72; /* Vertical offset for scroll */
var target = $(this.hash);
$('html, body').animate({
scrollTop: target.offset().top - displace}, 1000);
return false;
});
});
因为该站点还有一个标题,当向下滚动时转出视口,当向上滚动时进入视口,我需要通过将滚动目标偏移一定量来适应其可见性,因此{{1变量。
截至目前,无论滚动方向如何,displace
变量都会从displace
中减去。如何修改上面的代码,以便在向上滚动时仅减去它?
我想在那里添加一个target.offset().top
语句,类似于:
if else
有关使其发挥作用的任何建议吗?
非常感谢!
添
答案 0 :(得分:0)
最终使用它开始工作:
$(document).ready(function(){
$('a[href*="#"]:not([href="#"])').click(function() {
var scrollPos = $(window).scrollTop();
var displace = 72;
var target = $(this.hash);
if (scrollPos > target.offset().top) {
$('html, body').animate({
scrollTop: target.offset().top - displace}, 1000);
return false;
} else {
$('html, body').animate({
scrollTop: target.offset().top}, 1000);
return false;
}
});
});