Javascript/Jquery Super Scrollorama Проблемы с навигацией

На сайте Wordpress, над которым я сейчас работаю, мой клиент хотел, чтобы различные разделы главной страницы скользили снизу вверх и закрывали предыдущий раздел, как переходы с помощью wipe или slide. Используя суперскроллору, найденную здесь: http://johnpolacek.github.com/superscrollorama/, мне удалось добиться желаемого результата.

Далее мне нужно было создать меню навигации только на первой странице. Я сделал это и установил якоря в разных точках на страницах. Я также использовал библиотеку scrollTo для прокрутки анимации, когда нажимал на ссылки навигационного меню. Однако есть ряд проблем, с которыми я столкнулся:

  • Когда вверху я нажимаю "showcase", он выводит меня в раздел showcase, но раздел products (div сразу после него) перекрывает его.
  • Другие div-ы, кажется, имеют ту же проблему следующих div-ов, перекрывающих текущий
  • Я могу только двигаться вперед. Когда я пытаюсь вернуться назад, это не так (за исключением "Дома")
  • Я подумал, что это может иметь какое-то отношение к CSS-свойству "top" div'ов, поэтому я пытался сбрасывать их каждый раз, когда включалась функция click, но это не сработало. Таким образом, я удалил это в настоящее время.
  • В настоящее время установите javascript, чтобы предотвратить действие по умолчанию для прокрутки до якорей, и вместо этого установите его для прокрутки к самим фактическим элементам div. Тем не менее, у меня все еще есть те же проблемы.

РЕДАКТИРОВАТЬ: Я решил все вышеперечисленные проблемы, но теперь возникла новая проблема. Если вы прокрутите сайт, измените размер окна браузера и вернетесь назад, вы заметите, что часть дна обрезается. Я посмотрел на страницу superscrollorama, и она имеет ту же проблему. Я надеялся, что кто-то знает, как это исправить.

Вот сайт, над которым я сейчас работаю: http://breathe.simalam.ca/

Вот javascript для прокрутки:

$(document).ready(function() {
jQuery('.home-link').click(function(e){
    e.preventDefault();
    jQuery(window).scrollTo(0, 1000, {queue:true});
});
jQuery('.showcase-link').click(function(e){
    e.preventDefault();
    jQuery(window).scrollTo('#showcase_content', 1000, {queue:true});
});
jQuery('.products-link').click(function(e){
    e.preventDefault();
    jQuery(window).scrollTo('#products_content', 1000, {queue:true});

});
jQuery('.about-link').click(function(e){
    e.preventDefault();
    jQuery(window).scrollTo('#about_content', 1000, {queue:true});

});
jQuery('.locator-link').click(function(e){
    e.preventDefault();
    jQuery(window).scrollTo('#locator_content', 1000, {queue:true});

});
jQuery('.contact-link').click(function(e){
    e.preventDefault();
    jQuery(window).scrollTo('#contact_content', 1000, {queue:true});

}); });

код скроллорамы:

$(document).ready(function() {
    $('#wrapper').css('display','block');
    var controller = $.superscrollorama();
    var pinDur = 4000;  /* set duration of pin scroll in pixels */

    // create animation timeline for pinned element
    var pinAnimations = new TimelineLite();
    pinAnimations
    .append([
        TweenMax.to($('#showcase'), .5, {css:{top:0}})
    ], .5)
    .append([
        TweenMax.to($('#products'), .5, {css:{top:0}})
    ], .5)
    .append([
        TweenMax.to($('#about'), .5, {css:{top:0}})
    ], .5)
    .append([
        TweenMax.to($('#locator'), .5, {css:{top:0}})
    ], .5)
    .append([
        TweenMax.to($('#contact'), .5, {css:{top:0}})
    ], .5)
    .append(TweenMax.to($('#pin-frame-unpin'), .5, {css:{top:'100px'}}));


    controller.pin($('#examples-pin'), pinDur, {
        anim:pinAnimations, 
        onPin: function() {
            $('#examples-pin').css('height','100%');
        }, 
        onUnpin: function() {
            $('#examples-pin').css('height','2000px');
        }
    }); });

Все разделы div находятся внутри родительского div. Все разделы div имеют высоту, ширину и вершину 100%.

Родительский div, содержащий все эти разделы div, выглядит следующим образом:

#examples-pin { 
 position: relative; /* relative positioning for transitions to work? */
 width: 101%; /* max width */
 height: 2000px; /* height of 2000px for now */
 overflow: hidden; /* hide the overflow for transitions to work */
 margin-bottom: -200px; /* negative bottom margin */
}

1 ответ

Таким образом, pushFollowers: false для всех выводов и интервал вручную через div и отступ после того, как закрепленный элемент был решением.

Похоже, эта проблема будет исправлена ​​в следующей версии суперскроллоры. Я хотел бы взглянуть на https://github.com/johnpolacek/superscrollorama/issues выпуск 94, у них есть демо-код их нового выхода.

Другие вопросы по тегам