如何使用JavaScript以cm为单位设置对象的大小

如何使用JavaScript以cm为单位设置对象的大小,javascript,monitor,dpi,Javascript,Monitor,Dpi,我需要以厘米/英寸为单位设置对象的大小(或在任何监视器上始终相同的另一个值)。我知道以px为单位设置大小的代码,但不是始终相同的值。理论上,您只需使用: 实际上,您无法自动执行此操作,因为这取决于: 正确校准显示器的计算机,以便它知道显示器的DPI与输出的分辨率之间的关系 浏览器可以根据系统DPI而不是其自身的假设来计算像素大小 这两种情况很少都是真的 一个解决方法是显示一个已知像素大小的图像,并要求用户在显示器上测量它。然后,您可以根据该收音机计算所有长度,并使用JavaScript设置

我需要以厘米/英寸为单位设置对象的大小(或在任何监视器上始终相同的另一个值)。我知道以px为单位设置大小的代码,但不是始终相同的值。

理论上,您只需使用:

实际上,您无法自动执行此操作,因为这取决于:

  • 正确校准显示器的计算机,以便它知道显示器的DPI与输出的分辨率之间的关系
  • 浏览器可以根据系统DPI而不是其自身的假设来计算像素大小
这两种情况很少都是真的


一个解决方法是显示一个已知像素大小的图像,并要求用户在显示器上测量它。然后,您可以根据该收音机计算所有长度,并使用JavaScript设置所有宽度、高度等。这将比大多数用户愿意为大多数项目付出更多的努力。

理论上,您只需使用:

实际上,您无法自动执行此操作,因为这取决于:

  • 正确校准显示器的计算机,以便它知道显示器的DPI与输出的分辨率之间的关系
  • 浏览器可以根据系统DPI而不是其自身的假设来计算像素大小
这两种情况很少都是真的



一个解决方法是显示一个已知像素大小的图像,并要求用户在显示器上测量它。然后,您可以根据该收音机计算所有长度,并使用JavaScript设置所有宽度、高度等。这将比大多数用户愿意为大多数项目付出更多的努力。

与David Dorward的答案相同

另一个解决方案是生成要显示的图像,如果需要,可以使用AJAX,然后显示它。但同样,如果用户的缩放设置为120%(像我的祖父母一样),您的图像将被拉伸


为什么要使用厘米/英寸指定尺寸?

答案与David Dorward相同

另一个解决方案是生成要显示的图像,如果需要,可以使用AJAX,然后显示它。但同样,如果用户的缩放设置为120%(像我的祖父母一样),您的图像将被拉伸


为什么要用厘米/英寸来指定尺寸?

我非常怀疑你能做到这一点;为此,您需要检索监视器的当前DPI值,我不知道如何获取该值。更重要的是,这个设置很可能与它的实际值不符。“在任何显示器上都是一样的”-对不起,我苦笑了十分钟。@Paul D.Waite:提醒我“每个浏览器的布局必须完全相同”。@Clement:的确如此。告诉你很多关于写那句话的笨蛋的事。我非常怀疑你能做到这一点;为此,您需要检索监视器的当前DPI值,我不知道如何获取该值。更重要的是,这个设置很可能与它的实际值不符。“在任何显示器上都是一样的”-对不起,我苦笑了十分钟。@Paul D.Waite:提醒我“每个浏览器的布局必须完全相同”。@Clement:的确如此。告诉你很多关于写这句话的笨蛋的事。图像的大小也是以像素为单位的。因此,仅仅生成一个图像是没有帮助的,因为您仍然不知道要生成多少像素。使用PHP上的GD/Imagemagick,您可以使用厘米/英寸大小生成图像。图像将具有良好的大小,但是,它们可能不会在浏览器中使用真实大小显示。它们不会以真实大小显示。指定物理单位只是将元数据添加到图像中,说明应如何缩放图像。它取决于与我前面提到的相同的DPI问题,并且它要求软件尝试以物理大小而不是像素大小渲染它。实际上,这些尺寸仅用于打印(硬拷贝)。同意,我在一个需要生成条形码的项目中使用了它。图像的尺寸也以像素为单位。因此,仅仅生成一个图像是没有帮助的,因为您仍然不知道要生成多少像素。使用PHP上的GD/Imagemagick,您可以使用厘米/英寸大小生成图像。图像将具有良好的大小,但是,它们可能不会在浏览器中使用真实大小显示。它们不会以真实大小显示。指定物理单位只是将元数据添加到图像中,说明应如何缩放图像。它取决于与我前面提到的相同的DPI问题,并且它要求软件尝试以物理大小而不是像素大小渲染它。实际上,这些尺寸仅供打印(硬拷贝)使用。同意,我在一个需要生成条形码的项目中使用了它。
{
    width: 15cm;
    height: 10cm;
}