Я создаю большую страницу со множеством разделов, чтобы страница выглядела как один огромный холст, и пользователи могли прокручивать его до разных разделов. Аналогично этому сайту: 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);
}
});
Это хорошо работает для опорных точек, которые находятся выше, где находится полоса прокрутки; однако, это не работает, если точка привязки находится ниже полосы прокрутки.
Кто-нибудь знает, как это решить? Как вы получаете ссылку, чтобы всегда указывать на правильную точку привязки на странице, независимо от того, где находится прокрутка?
Большое спасибо !!
Noa