【发布时间】:2012-01-06 12:46:19
【问题描述】:
我正在创建一个包含许多部分的大页面,这样页面看起来就像一个巨大的画布,用户可以滚动到它的不同部分。类似本站:http://www.yourauxiliary.com/ 唯一的区别是在我的网站中用户也可以使用滚动条:
overflow: scroll;
我的问题是,如果用户开始滚动,按其中一个菜单链接将不会导致正确的位置。
最初我在每个锚点的 JS 中都有这段代码:
$("ul#menu a#link1").click(function(event){
$('#pane-container').stop().animate({'left':'0px', 'top':'0px'},scrollSpeed);
event.preventDefault();
}
$("a#link2").click(function(event){
$('#pane-container').stop().animate({'left':'-1000px', 'top':'0px'},scrollSpeed);
event.preventDefault();
}
$("a#link3").click(function(event){
$('#pane-container').stop().animate({'left':'-2000px', 'top':'0px'},scrollSpeed);
event.preventDefault();
}
等等。对于所有 8 个链接。
如果我不允许滚动,此代码可以正常工作。由于我需要滚动条,因此我将其添加到每个锚点:
$("ul#menu a#link1").click(function(node){
$('#pane-container').stop().animate({'left':'0px', 'top':'0px'},scrollSpeed);
event.preventDefault();
var parent = node.parent;
var parentCHeight = parent.clientHeight;
var parentSHeight = parent.scrollHeight;
if (parentSHeight > parentCHeight) {
var nodeHeight = node.clientHeight;
var nodeOffset = node.offsetTop;
var scrollOffset = nodeOffset + (nodeHeight / 2) - (parentCHeight / 2);
parent.scrollTop = scrollOffset;
}
if (parent.parent) {
scrollIntoView(parent);
}
});
这适用于滚动条上方的锚点;但是,如果锚点位于滚动条下方,则不起作用。
有谁知道如何解决这个问题?无论滚动在哪里,如何让链接始终指向页面上的正确锚点?
非常感谢!! 诺亚
【问题讨论】:
-
您应该为您的问题使用适当的标签。 “指针”是指内存指针,就像在 C/C++ 中一样。 “node.js”是一个用于客户端/服务器交互的 JavaScript 库。 “scrollview”通常是指包含要滚动的东西的 gui 元素。适当的标签是:jquery、layout、animation