我需要使用jQuery创建到ID
的平滑滚动。
这是我的代码:
var $root = $('html, body');
$('a[href*=#]').click(function() {
var href = $.attr(this, 'href');
$root.animate({
scrollTop: $(href).offset().top
}, 500, function () {
window.location.hash = href;
});
return false;
});
它对我来说很好。但有一点,我需要停止在页面顶部的某个点滚动。例如,从顶部开始200px
。
在此阶段,它始终滚动到页面顶部。
有人可以告诉我如何修改此代码吗? 谢谢。
答案 0 :(得分:0)
添加:
(($(href).offset().top >= 200 ) ? $(href).offset().top : 200)
它检查元素远离顶部的距离,如果它超过200px它将滚动到它,否则它将从顶部滚动到200px
这是新代码:
var $root = $('html, body');
$('a[href*=#]').click(function() {
var href = $.attr(this, 'href');
$root.animate({
scrollTop: (($(href).offset().top >= 200 ) ? $(href).offset().top : 200)
}, 500, function () {
window.location.hash = href;
});
return false;
});
答案 1 :(得分:0)
如果我理解正确的话,您可以使用高度为标题的内容,例如200px
和position:fixed
。并且您当前的脚本滚动得太高,隐藏了标题下的哈希标题。
因此,如果这是正确的,您只需要从$(href).offset().top
中减去标题高度(例如scrollTop: $(href).offset().top-200
)
答案 2 :(得分:0)
将此行scrollTop: $(href).offset().top
更改为scrollTop: $("body").offset().top + 200
这将占据真正的顶部位置(0)然后你可以操纵你需要的位置滚动