Javascript 使用变换比例时防止像素小数
我有一个滑块,它由1366px 768px的iFrame组成,我可以根据窗口大小进行缩放。然而,当1366被除时,我可以随机得到元素实际宽度的小数,这导致我称之为“像素断裂” 请注意第二个图像上的while行。这实际上是第二张幻灯片,这是我的问题。实例1366px变为1045.234234 px,因此它们不能正确排列 我知道我也可以通过删除小数来增加宽度,如Javascript 使用变换比例时防止像素小数,javascript,css,css-transforms,Javascript,Css,Css Transforms,我有一个滑块,它由1366px 768px的iFrame组成,我可以根据窗口大小进行缩放。然而,当1366被除时,我可以随机得到元素实际宽度的小数,这导致我称之为“像素断裂” 请注意第二个图像上的while行。这实际上是第二张幻灯片,这是我的问题。实例1366px变为1045.234234 px,因此它们不能正确排列 我知道我也可以通过删除小数来增加宽度,如parseInt(scaleAmount*1366),但我不认为在不同的分辨率下总是准确的 有什么我可以尝试解决或最小化的吗 由于要转换
parseInt(scaleAmount*1366)
,但我不认为在不同的分辨率下总是准确的
有什么我可以尝试解决或最小化的吗
由于要转换为字符串,因此可以使用
scale.toFixed(0)
删除数字的小数部分 好的,我想我已经解决了。我将变换比例转换为像素值。将像素四舍五入。最后,将圆角像素转换回变换比例。因此缩放后的像素将始终为偶数,因此像素将不再中断
scale = Math.min(
ui.size.width / elWidth,
ui.size.height / elHeight
);
var scaleInPixels = scale * elWidth;
var evenPixel = 2 * Math.round(scaleInPixels / 2);
var finalScale = evenPixel / elWidth;
我确实可以,但这不是100%准确。我试图在高度或宽度上100%适合滑块。“如果我删掉小数,我可以得到一到两个奇数像素。你能给我们提供一个jsFiddle,让我们更深入地了解你的问题吗?”AntoineGautrain说道。实际上,必须使视口非常小,以便可以看到像素断裂。播放结果窗口的高度。第二张幻灯片上的蓝线非常明显。
scale = Math.min(
ui.size.width / elWidth,
ui.size.height / elHeight
);
var scaleInPixels = scale * elWidth;
var evenPixel = 2 * Math.round(scaleInPixels / 2);
var finalScale = evenPixel / elWidth;