Javascript Firefox和通过JS的固定位置有些奇怪

Javascript Firefox和通过JS的固定位置有些奇怪,javascript,jquery,firefox,zurb-foundation,Javascript,Jquery,Firefox,Zurb Foundation,我在一个网站上工作,我正在使用jQuery和CSS框架。这个框架实际上改变了页面上每个对象的每个CSS默认属性,所以如果这是一个CSS问题,那么很难得到 我有以下代码: function handleNavBarDot() { var $navbar = $('nav#nav-bar'), $win = $(window); // inserting the div#circle after the nav bar in the markup $navb

我在一个网站上工作,我正在使用jQuery和CSS框架。这个框架实际上改变了页面上每个对象的每个CSS默认属性,所以如果这是一个CSS问题,那么很难得到

我有以下代码:

function handleNavBarDot() {
    var $navbar = $('nav#nav-bar'),
        $win = $(window);

    // inserting the div#circle after the nav bar in the markup
    $navbar.after('<div id="circle"></div>');
    var $dot = $('div#circle');

    function attachDot() {
        // using + (and not -) because the margin is negative
        var topStart = parseDim($navbar.css('top')) + parseDim($navbar.css('margin-top'));
        var availHeight = $navbar.outerHeight();
        var pageScrolled = $win.scrollTop() / ($(document).height() - $win.height());

        $dot.css({
            'position': 'fixed',
            'right': (parseDim($navbar.css('right')) - Math.floor($dot.width() / 2)) + 'px',
            'top': (topStart + availHeight * pageScrolled) + 'px',
        });
    }

    attachDot();
    $win.resize(attachDot);
    $win.scroll(attachDot);
}
圆点回到正确的位置

这个问题的原因是什么


如果您想查看问题的实际情况,请转到

,在我看来,这就像是一个浏览器错误。而且,这并不是真正的主题:浏览器非常、非常频繁地触发滚动事件。您可能希望包含一个计时器机制,这样就可以避免对每个scoll事件进行DOM操作,并且最多每100ms左右进行一次操作。@Pointy是的,对我来说也是。不过我还是不能在IE上尝试。@Pointy定时器优化是开发的下一个阶段,我正试图首先解决这个问题。对我来说,它似乎总是错误的15px。当窗口失去焦点时,它也神奇地修复了自己。这就像浏览器对窗口的几何图形或其他东西感到困惑一样。@Pointy不,如果我的窗口失去焦点,圆点将保持在原来的错误位置。那么在你的Firefox中,在什么操作系统上?即使您刚刚加载页面并且没有滚动/调整大小,它也会从导航栏中移动?
*, *:after, *:before { -moz-box-sizing: border-box }