jQuery Smooth Scroll to any Anchor
我已经尝试了许多不同的代码来平滑滚动到锚点。 我找不到一个有效的。 它需要能够垂直,水平和对角滚动。 我与其他人发现的另一个问题是它们似乎不适用于多个目标。 我希望它能够滚动到页面上的任何锚点而无需编辑脚本。
小提琴
这是最匹配的代码,我无法使其工作:
1 2 3 4 5 6 7 8 9 10 11 12
| 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中工作,但是当我把它放在我的页面上时它不起作用。
为什么这不重复?
这是一个多方向脚本,不针对单个元素。 它适用于页面上的所有链接。
-
http://stackoverflow.com/questions/7717527/jquery-smooth-scrolling-when-clicking-an-anchor-link
-
@rps我看到了这些,但没有一个有效。
-
kadaj.github.io/tuts/smooth-scroll/smooth-scroll.html
-
@kadaj滚动到单个元素
-
@rps代码在小提琴上,链接在上面。
-
@ b2550你的小提琴没有javascript代码
-
@rps抱歉,我忘了更新它。重新加载它。
-
如果代码适用于小提琴,那么问题在于如何在页面中实现它,是否将jQuery代码包装在$(document).ready(function(){...})中?你是否包括jquery库?控制台上有任何错误吗?
-
@koala_dev我把它放在身体的底部,它做了一些事情,现在链接不起作用。
-
@ b2550控制台说什么? (在浏览器上按Ctrl + Shift + J)
-
@koala_dev没有错误,只是不起作用
-
我打算尝试一个插件
-
你确实把代码放在文件就绪处理程序中?
-
是的,它在处理程序内部
-
你能详细说明"多重目标"吗?您一次只能滚动到一个位置。例如,在小屏幕上显示多个元素可能是不可能的,那么您如何定位"所有链接"?
-
顺便说一句,你链接的第二个小提琴是空的,不包含任何JavaScript。
-
@Bergi ||这就是我的意思是的,它已经老了。
-
你的意思是什么不起作用,点击事件本身不会被解雇? A.检查你是否有jquery lib B.检查click事件处理程序是否在$(document).ready或$(function(){}) C.如果你在脚本标签中添加了脚本代码,看看标签是否在head标签内
我不能让你的jsfiddle工作,看看这是否有效:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $(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);
}
});
)}; |
-
我收到错误的分号丢失,无法弄清楚原因。 它也行不通。:(
-
奇怪 - 我也看不到任何丢失的分号。
-
我刚刚在jsfiddle上尝试过,它运行正常。jsfiddle.net/B3F25/6
-
我认为问题是我把它放在页面上错了,你能不能包含html所以我可以看看我做错了吗?
-
jsfiddle.net/B3F25/6应该拥有全部