简短答案
器件像素比率是物理像素和逻辑像素之间的比率。例如,iPhone 4和iPhone 4S报告的设备像素比率为2,因为物理线性分辨率是逻辑线性分辨率的两倍。
- 物理分辨率:960 x 640
- 逻辑分辨率:480 x 320
公式为:
哪里:
是物理线性分辨率
和:
是逻辑线性分辨率
其他设备报告的设备像素比率不同,包括非整数。例如,诺基亚Lumia 1020报告为1.6667,Samsumg Galaxy S4报告为3,而苹果iPhone 6 Plus报告为2.46 (来源:dpilove)。但这在原则上不会改变任何内容,因为您永远不应该为任何一种特定的设备进行设计。
讨论区
CSS“像素”甚至没有定义为“某个屏幕上的一个像素”,而是定义为视角的非线性角度测量值,在手臂长度处大约为一英寸。资料来源:CSS绝对长度
对于网页设计,这具有很多含义,例如准备高清图像资源并以不同的设备像素比率小心地应用不同的图像。您不想强迫低端设备下载非常高分辨率的图像,而只是在本地进行缩小。您也不想让高端设备升级低分辨率图像以获得模糊的用户体验。
如果您坚持使用位图图像,以适应许多不同的设备像素比率,则应使用CSS Media Queries为不同的设备组提供不同的资源集。结合使用一些不错的技巧,例如background-size: cover
将其明确设置background-size
为百分比值。
例
#element { background-image: url('lores.png'); }
@media only screen and (min-device-pixel-ratio: 2) {
#element { background-image: url('hires.png'); }
}
@media only screen and (min-device-pixel-ratio: 3) {
#element { background-image: url('superhires.png'); }
}
这样,每种设备类型仅加载正确的图像资源。另外请记住,px
CSS 中的单位始终在逻辑像素上运行。
矢量图形的情况
随着越来越多的设备类型出现,为所有设备提供足够的位图资源变得更加棘手。在CSS中,媒体查询是目前的唯一方法,而在HTML5中,图片元素可让您对不同的媒体查询使用不同的来源,但是这种支持仍然不是100%,因为大多数Web开发人员仍然需要一段时间才能支持IE11 (来源:caniuse)。
如果您需要图标,艺术线条,不是照片的设计元素的清晰图像,则需要开始考虑SVG,它可以完美地缩放到所有分辨率。
width=device-width
我会把它拉伸到全屏显示吗?