不使用物理对象或对角线测量,是否可以获取用户的屏幕物理尺寸?

13

问题已经很明确了。我希望能够以实际大小显示某些内容,例如,如果在浏览器中显示某个内容为20厘米,则我希望能够测量它并且实际上也是20厘米。

到目前为止,我发现的解决方案都考虑了屏幕的对角线分辨率(例如21.5英寸)和屏幕分辨率来计算像素的大小。

另一种方法是要求用户将标准尺寸的卡片(如银行卡)放置到屏幕上,并测量其边缘以计算大小。

是否有一种方法可以在没有物理物体或不需要用户知道其对角线屏幕尺寸的情况下完成此操作?

如果您知道除我提到的解决方案之外的其他解决方案,请也请告诉我。


1
不要忘记设备像素并不等于像素,http://stackoverflow.com/questions/4366148/window-pixelratio-not-working-in-opera-any-alternative/4368041#4368041(在这种情况下,它可能对您有用,因为iOS关于像素的物理尺寸的谎言统一了视网膜和非视网膜显示屏)顺便说一句,物理尺寸还取决于缩放级别 :-) - Julien Roncaglia
2个回答

9
你无法百分之百确定尺寸大小。例如,如果显示设备不是屏幕而是投影仪,则有效尺寸将取决于投影仪到墙的距离,这可能会发生变化而操作系统不会得到任何反馈。
大多数操作系统都有一些dpi设置(每英寸点数),它可以由用户或系统管理员配置,也可能被硬编码(如果视频设备是内置且无法更改的,如笔记本电脑屏幕),或者可能自动发现(如果视频协议支持此)。
浏览器将使用此设置或类似的浏览器设置来计算CSS中使用的绝对大小,如cm、mm、in、pt等。
因此,您可以简单地依赖浏览器来正确显示它,或者告诉您的用户将其设置正确。(当然,在投影尺寸为3×4米的投影仪上,您真的不想显示20厘米的对象。)

1

在其他地方有人建议创建一个隐藏的1英寸div,然后查询像素宽度,以获取您可以用来计算屏幕大小的虚拟DPI。我自己还没有尝试过这种方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接