2016-02-05 5 views
2

У меня возникла проблема с реализацией относительно сложных функций автоматического прокрутки на моей странице. Это показывает проблему в моем коде ...jquery animate/scrollTop для нескольких якорей внутри divs

http://codepen.io/d3wannabe/pen/XXxdQq

У меня есть несколько дивы на моей странице (синий, красный, зеленый в моем примере), что я не только хочу, чтобы иметь возможность перейти к (который верхние 3 кнопки в моем примере достигают совершенно), но я хочу, чтобы иметь возможность прокручивать WITHIN (что нижние 3 кнопки представляют мою лучшую попытку).

Я не могу понять, почему функция прокрутки внутри функции хорошо работает на моем первом div (кнопка «scrollTo3rdBlueItem»), но затем менее точно с другими divs (кнопки «scrollTo3rdRedItem» и «scrollTo3rdGreenItem») , В моем полном веб-приложении (которое, очевидно, имеет больше данных для прокрутки), я в основном вижу, что чем ниже страница, размещенная родительским div, тем менее точно я могу ее прокручивать.

Я изо всех сил пытаюсь идентифицировать большую часть рисунка, поэтому не могу просто попробовать изменить значения смещения. Любые идеи, что я мог бы делать неправильно здесь, были бы чрезвычайно оценены!

... так как мне не разрешалось публиковать это без котировочного кода - вот функция jquery, которую вы можете видеть в моем кодефене!

function scrollToParent(parentID){ 
     $('html,body').animate({scrollTop: $('#'+parentID).offset().top}, 500); 
} 
function scrollToChild(parentID, childID){ 
     //first focus on the parent 
    scrollToParent(parentID); 

     $('#'+parentID).animate(
     {scrollTop: $('#'+ childID).offset().top - 100} 
     , 500); 
} 

ответ

1

UPDATE

Ответ здесь был COMPLETETLY неправильно. Остался здесь, чтобы сохранить комментарии.

ОБНОВЛЕНИЕ 2

Получил IT! Вам необходимо принять во внимание смещение родительского div. Обновите функцию scrollToChild ниже;

$('#'+parentID).animate(
    { 
     scrollTop: $('#'+ childID).offset().top - $('#'+parentID).offset().top 
    }, 500); 
+0

Идентификаторы элементов уникальны, не так ли? Я пытаюсь прокрутить до заголовка3 в blueDiv, заголовок8 в redDiv и заголовок13 в greenDiv? Извините, если я не понимаю вашу точку зрения! – d3wannabe

+0

Да, это не так ... все элементы уникальны в этом примере. Я получаю такие же непоследовательные результаты. Забавно, когда я прокручиваю вниз, а затем создаю резервную копию, и затем я нажимаю кнопку, которая идет на заголовок3 в синем Div, эта тоже переполняет цель! –

+0

Чтобы уточнить это: похоже, что заголовок 3, заголовок8 и заголовок13 прокручиваются вверху окна просмотра (т. Е. Браузер пытается прокрутить их до абсолютного положения сверху: 0, вместо вершины видимого div что они в! –

Смежные вопросы