我试图将图像设置为phoneGap应用程序上屏幕的全高度。目前,我使用以下代码来确定屏幕"尺寸",我使用javascript将图像分辨率设置为这些暗值。
$('.fullPageImage').height(window.screen.availHeight);
这在iPhone 6(视网膜显示)和我的笔记本电脑上产生了预期的结果。问题是当我在我的Galaxy Note-3上尝试时,图像是巨大的,原因如下:当我console.log(window.screen.availHeight);
时,Note似乎认为它的高度是1920像素-而我的iPhone 6只有647(它是一个视网膜显示器),所以我知道1920不是实际的像素数(或者它是吗?)。我研究了设备是如何获得window.screen.availHeight
的,发现有这个变量叫做window.devicePixelRatio
,它在Note 3上的值是3。我认为Note 3的视口尺寸是360x640,所以devicePixelRatio的3是有意义的。现在,令我困惑的是,当我在iPhone 6上console.log(window.devicePixelRatio);
时,结果是2。我尝试使用以下代码将图像高度设置为"availHeight"值的1/3:
$('.fullPageImage').height(window.screen.availHeight/window.devicePixelRatio);
,它在Note 3上工作得很好(因为它将图像高度缩小到360 -这是应该的),但在iPhone上,将图像缩小到324(或接近)意味着图像只出现在页面高度的一半以上。
我的问题是,而不是除以devicePixelRatio,是否有另一个变量,我可以从设备中获得,以确定收缩图像的比例?iPhone上的比例应该是1,而Note 3上的比例应该是1/3,以便图像在全高度上正确显示。
提前谢谢你!
比起显式地设置高度,你应该能够使用带有CSS的视口单元…所以你可以这样做:
$('.fullPageImage').css("height", "100vh");
这将设置高度为视口垂直高度的100%,无论该值是什么
您可能还想考虑在标题中添加<meta name="viewport" content="width=device-width, initial-scale=1">
标记。