Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用变换比例时防止像素小数_Javascript_Css_Css Transforms - Fatal编程技术网

Javascript 使用变换比例时防止像素小数

Javascript 使用变换比例时防止像素小数,javascript,css,css-transforms,Javascript,Css,Css Transforms,我有一个滑块,它由1366px 768px的iFrame组成,我可以根据窗口大小进行缩放。然而,当1366被除时,我可以随机得到元素实际宽度的小数,这导致我称之为“像素断裂” 请注意第二个图像上的while行。这实际上是第二张幻灯片,这是我的问题。实例1366px变为1045.234234 px,因此它们不能正确排列 我知道我也可以通过删除小数来增加宽度,如parseInt(scaleAmount*1366),但我不认为在不同的分辨率下总是准确的 有什么我可以尝试解决或最小化的吗 由于要转换

我有一个滑块,它由1366px 768px的iFrame组成,我可以根据窗口大小进行缩放。然而,当1366被除时,我可以随机得到元素实际宽度的小数,这导致我称之为“像素断裂”

请注意第二个图像上的while行。这实际上是第二张幻灯片,这是我的问题。实例1366px变为1045.234234 px,因此它们不能正确排列

我知道我也可以通过删除小数来增加宽度,如
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;