Search Support

Avoid support scams. We will never ask you to call or text a phone number or share personal information. Please report suspicious activity using the “Report Abuse” option.

Learn More

ScrollTop not working in Firefox

more options

I'm trying to simulate smooth scrolling between panels and add an active state to links when the top of the panel reaches the top of the viewport. Everything was going great until I tested in Firefox. Scrolling between panels is jagged, and the active state is added to the wrong link at times. Here's my code:

$(document).ready(function () {
  $(window).scroll(function () {
    var y = $(this).scrollTop();
    $('.link').each(function (event) {
      if (y >= $($(this).attr('href')).offset().top - 0) {
        $('.link').not(this).removeClass('active');
        $(this).addClass('active');
      }
    });
  });
});

// SMOOTH SCROLLING

$(function () {
  $('a[href*=#]:not([href=#])').click(function () {
    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: (target.offset().top - 0)
        }, 850);
        return false;
      }
    }
  });
});

Also you can see the page I'm working on here: http://zebron.github.io/

I'm trying to simulate smooth scrolling between panels and add an active state to links when the top of the panel reaches the top of the viewport. Everything was going great until I tested in Firefox. Scrolling between panels is jagged, and the active state is added to the wrong link at times. Here's my code: <pre><nowiki>$(document).ready(function () { $(window).scroll(function () { var y = $(this).scrollTop(); $('.link').each(function (event) { if (y >= $($(this).attr('href')).offset().top - 0) { $('.link').not(this).removeClass('active'); $(this).addClass('active'); } }); }); }); // SMOOTH SCROLLING $(function () { $('a[href*=#]:not([href=#])').click(function () { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); if (target.length) { $('html,body').animate({ scrollTop: (target.offset().top - 0) }, 850); return false; } } }); });</nowiki></pre> Also you can see the page I'm working on here: http://zebron.github.io/

Modified by cor-el

All Replies (6)

more options

This forum focuses more on end-user support, so might not be the best place to get an answer on this. You can find more web development help on the unofficial mozillaZine Web Development board. It's a separate site with separate registration. For best results, please note the tips in the Sticky Post at the top of the forum before posting.

more options

By the way, I'm getting lots of scrolling as I click the years, but at some point, there is an issue with accuracy: I get scrolled to one year earlier than I chose. Not sure if you are seeing that.

Oh, that was your second point. I just didn't understand the reference.

Modified by jscher2000 - Support Volunteer

more options

Thanks jscher. I've posted to Stack Overflow and did see plenty of technical questions answered here previously so I assumed that was one of the purposes of this forum.

more options

Well, we often comment on website issues, I'm just saying don't hold your breath. ;-)

By the way, does your Firefox have hardware acceleration active? You can confirm by checking the "GPU Accelerated Windows" count on the support information page (either):

  • "3-bar" menu button > "?" button > Troubleshooting Information
  • (menu bar) Help > Troubleshooting Information
  • type or paste about:support in the address bar and press Enter
more options

This is what that interface says: 1/1 OpenGL (OMTC)

more options

Yes, hardware acceleration is active. Thanks.