这个问题在这里已有答案:
我已经尝试了许多不同的代码来平滑滚动到锚点。我找不到一个有效的。它需要能够垂直,水平和对角滚动。我与其他人发现的另一个问题是它们似乎不适用于多个目标。我希望它能够滚动到页面上的任何锚点而无需编辑脚本。
这是最匹配的代码,我无法使其工作:
var $root = $('html, body');
$('a').click(function () {
$root.animate({
scrollLeft: $($.attr(this, 'href')).offset().left,
scrollTop: $($.attr(this, 'href')).offset().top
}, 500);
return false;
});
它在JSFiddle中工作,但是当我把它放在我的页面上时它不起作用。
为什么这不重复?这是一个多方向脚本,不针对单个元素。它适用于页面上的所有链接。
我不能让你的jsfiddle工作,看看这是否有效:
$(function(){
$('a').on({
click:function (e) {
e.preventDefault();
var root = $("html, body");
var target = $(this).attr("href");
root.animate({
scrollLeft: $(target).offset().left,
scrollTop: $(target).offset().top
}, 500);
}
});
)};