如何在浏览器中正确显示公制单位

时间:2013-02-16 04:42:09

标签: css browser

我想在网站上显示商品的“自然尺寸”图片。 首先,我计算图片的大小:

<Height of picture in pixels> * <real height of item in mm>
-----------------------------------------------------------
        <height of item on the picture in pixels>

公式是逻辑上正确的,它在

上工作正常
desktop 17'' 4:3 monitor 1280*1024. 

任何其他设备显示指标错误。 我测试了一下:

2 smartphone.
22'' 1920*1080 desktop monitor
13.3'' 1366*768 notebook
14'' 1600*900 notebook

它们都没有4:3的宽高比。 那有什么不对?我怎样才能达到目标? 我搜索网络,但我找到的唯一解决方法是显示一张A4尺寸的纸张并询问用户缩放页面。 我最好让用户设置他们的系统,但是怎么做?

3 个答案:

答案 0 :(得分:1)

不幸的是,尽管存在向浏览器查询其显示器每英寸精确像素的方法,但浏览器供应商决定同意一个方便的谎言...所有浏览器报告每英寸96像素。虽然您可以让浏览器向您报告此事实,但无法获得每英寸真实的像素。

一个着名的例子是,尽管具有完全不同的像素密度,但无法通过Javascript,HTML或CSS来检测IPad 2和IPad Mini之间的差异。

实际上,我找到了使用纸张的方法,并要求用户放大以校准“实际显示的尺寸”而非常聪明。如果你让它易于使用,我相信他们会欣赏这个功能!

答案 1 :(得分:1)

理论上,根据CSS 2.1规范,mm单位(以及cmin等类似单位)与物理单位相关。因此,如果您以mm为单位设置图像宽度,浏览器应将图像缩放到给定的物理尺寸,并具有设备分辨率所允许的精度。

实际上,浏览器的行为更像CSS3值和单位CR中描述的方式。 physical units部分根据定义表示1in等于96px,而在打印机等高分辨率设备上,英寸是固定单位,对应于实际物理英寸,而在较低位置 - 分辨率设备如显示器,像素是锚单元。它补充说:“请注意,如果锚单位是像素单位,则物理单位可能与其物理测量值不匹配。”(此外,即使在打印机中,CSS in与物理英寸之间的对应关系也不一定精确。)

所以,任务不可能。

对于用户进行校准,我不会使用A4纸。它很大,并不是每个人都有A4纸,特别是在标准纸张尺寸不同的国家。一个英尺和毫米的尺子会更好。也许您可以添加缩放小部件以使缩放更容易。

答案 2 :(得分:0)

感谢大家!我结合了所有提示并制作图片: http://www.clker.com/clipart-258249.html 用户采用一种常见的东西,并通过缩放将其适合图片。