Javascript Firefox和通过JS的固定位置有些奇怪
我在一个网站上工作,我正在使用jQuery和CSS框架。这个框架实际上改变了页面上每个对象的每个CSS默认属性,所以如果这是一个CSS问题,那么很难得到 我有以下代码: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
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 }