2014-03-04 20 views
2

我需要在Web应用程序中以实际尺寸显示对象。如果一个物体的宽度为85mm,那么它也应该显示在屏幕上(ipad 1,2,3和androids)。我试图在css中以mm为单位设置图像,但它不起作用。有什么建议么?如何在css/javascript中模拟实际大小尺寸

+0

只需使用'85mm'。 'mm'是有效单位。 – dfsq

+0

如果您尝试使用'mm'单位,但它与现实生活中的比例不匹配,则需要在计算机上调整DPI值。 –

回答

2

如@feeela所述,cm,in,mm等单位不符合实际生活尺寸。也没有办法得到具体的设备DPI,最近你得到的是window.devicePixelRatio财产。解决此问题的一种方法是使用外部库(如Detector)来确定用户所处的确切设备,然后为其分配任何硬编码像素密度,如wikipedia中所列。 一旦你有了密度,你可以很容易地将任何尺寸转换为所需的尺寸。 例如,在一个iPad3的:

var dpr  = window.devicePixelRatio; 
var inch = 25.4; //1inch = 25.4 mm 
var ppi  = 264; //Ipad3 density 

function mmToPx(mm){ 
    return ((mm/inch)*ppi)/dpr; 
} 

myElement.width = mmToPx(size_in_mm); 

我希望它可以帮助有同样问题的人......

2

上MDN此语句读取,因为它应该在设备上工作以高分辨率:

对于低DPI装置,该单元PX表示物理参考像素和其它的相对于它定义。因此,1in被定义为96px,等于72pt。这个定义的结果是,在这样的设备上,用英寸(in),厘米(cm),毫米(mm)描述的长度不必与具有相同名称的物理单元的长度相匹配。

对于高dpi设备,英寸(in),厘米(cm),毫米(mm)被定义为它们的物理对应物。因此,相对于它们来定义px单位(1英寸的1/96)。

来源:https://developer.mozilla.org/en-US/docs/Web/CSS/length

然后还有mozmm - »它试图在恰好一毫米大小或显示器的分辨率而不管呈现的实验单元«(见上面的链接)。

+1

我刚刚意识到'1px'并不意味着高分辨率设备中的'一个像素':O –

+0

所以这些单元不会工作。我不敢相信它不可能用真实尺寸来展示东西...... – Drala

+0

@Drala这是可以理解的,它取决于屏幕设备的功能,如果屏幕的分辨率仅为10x10,而其物理尺寸大约为10厘米x10厘米,这意味着屏幕上的一个像素等于1厘米,那么您如何显示小于1厘米的东西?高分辨率屏幕,您可以近似显示所有内容(由于人眼的能力有限)。 –