所以StackOverflow-er的老师几天前为我写了一些基于jQuery的Javascript。
它有效,但它有一个烦人的问题,我想知道是否有人可以提供帮助。
JavaScript正在计算用于对齐目的的边距。它计算的值并不总是精确的像素,例如有时它的14.4等。在Firefox中,问题不存在,但在其他浏览器中,例如在Safari或Chrome中计算边距时(因为屏幕重新调整大小) )最右边的盒子'跳'并且永远不会停留在容器的边缘。
正如我上面所说,在Firefox中它并没有“跳跃”,这就是我所寻找的效果。
是否有任何措施可以阻止这种“跳跃”效果,或者它是否与浏览器渲染引擎完全相关并且无法控制? :(
这个JSFiddle包含代码/ demo:http://jsfiddle.net/m4rGp/1/
(尝试在Firefox中调整浏览器宽度,然后在Safari / Chrome中调整,你会注意到右边的跳转)
任何回复真的非常感谢!非常感谢
答案 0 :(得分:3)
这仅仅是因为渲染引擎。像素中没有小数。 1px是最小的可寻址屏幕元素。因此,在更改边距之前,请添加Math.round
$(".barModules li").css('margin-left', Math.round(dynMargin) + "px");
然而弹跳将在那里,因为元素的定位方式是它被绑定到它的左边(引用)。当它看到属性margin-right:0
时,它也会尝试激活那个...但是由于它的margin-left
被设置并且基于左边定位......它就像那样弹跳。喜欢debounced
函数调用。
如果您的目标是获得动态余量,那么您必须使用此调整,否则转到带有居中元素的固定宽度页面,您不必担心溢出问题