навигация с прокруткой хеша с липким заголовком, смещение не работает в Firefox

0

У меня есть веб-сайт с палкой в верхний заголовок, когда прокрутка, половина моего заголовка исчезает, а меню - сверху. навигация использует хеш, нажав на ссылку моего меню, страница прокручивается до связанного #. Я добавил jscript, чтобы вычислить высоту моего stickyheader, чтобы добавить эту высоту в мою #link, чтобы моя цель отображалась прямо под моим меню. он отлично работает на Chrome & safari, но в Firefox есть проблема, высота не добавляется, поэтому мой заголовок отображается под меню. И при нажатии на "назад к началу" позиция неправильная, есть смещение... только на firefox.

Я не знаю, понимаете ли вы, что я имею в виду, так что вот jsfiddle, чтобы увидеть это в действии:

http://jsfiddle.net/rHmAA/3/

вот мой js:

$(document).ready(function () {
    $('a[href^="#"]').bind('click.smoothscroll', function (e) {
        e.preventDefault();

        var target = this.hash,
            $target = $(target);

        var offset;
        if($('#stickyheader').css('position') == 'relative'){
            offset = $('#stickyheader').outerHeight(true)*2;
        }else{
            offset = $('#stickyheader').outerHeight(true);
        }
        $('html, body').stop().animate({
            'scrollTop': $target.offset().top - offset
            //--OFFSET--//
        }, 1500, 'swing', function () {
            window.location.hash = target;
        });
    });
});

$(function () {
    // Check the initial Poistion of the Sticky Header
    var stickyHeaderTop = $('#stickyheader').offset().top;

    $(window).scroll(function () {
        if ($(window).scrollTop() === stickyHeaderTop+1) {
            $('#stickyheader').hide();
            console.log('p');
        }
        if ($(window).scrollTop() > stickyHeaderTop) {
            $('#stickyheader').fadeIn(500).css('position','fixed');
            $('#stickyalias').css('display', 'block');
            var mT = $('#stickyheader').css('height');
            $('#stickyheader').next('.post').css('marginTop', mT);
        }else{
            $('#stickyheader').css({
                position: 'relative',
            });
            $('#stickyheader').next('.post').css('marginTop', '0');
        }
    });
});

может ли кто-нибудь помочь мне в этом? Я не знаю, что я делаю неправильно,

большое спасибо за вашу помощь,

Теги:
scroll
contentoffset

1 ответ

0

Попробуйте использовать это для анимации прокрутки

 $('html, body').animate({
      'scrollTop': $target.offset().top - offset
       //--OFFSET--//
 }, 1500);
  • 0
    спасибо @James, все работает отлично, не могли бы вы объяснить, что я делал не так? Спасибо
  • 0
    Откровенно говоря, я не мог понять, что не так. Я столкнулся с той же проблемой, и это решило мою проблему. Так что я думал, что опубликую это, и это может помочь вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню