简短回答
设备像素比是物理像素与逻辑像素之间的比例。例如,iPhone 4和iPhone 4S的设备像素比为2,因为物理线性分辨率是逻辑线性分辨率的两倍。
- 物理分辨率:960 x 640
- 逻辑分辨率:480 x 320
计算公式如下:
其中 是物理线性分辨率,而 是逻辑线性分辨率。
其他设备报告不同的设备像素比,包括非整数值。例如,诺基亚 Lumia 1020 报告为 1.6667,三星 Galaxy S4 报告为 3,苹果 iPhone 6 Plus 报告为 2.46 (来源:dpilove)。但从原则上讲,这并不改变任何事情,因为你永远不应该为任何特定设备进行设计。
讨论
CSS中的“像素”并没有被定义为“某些屏幕上的一个图像元素”,而是存在着一个“参考像素”,它是一个非线性的角度测量单位,表示
的视角。这大约相当于一英寸的1/96。
来源:CSS绝对长度
这对于网页设计有很多影响,比如准备高清图像资源以及根据不同设备的像素比谨慎应用不同的图片。你不希望低端设备下载一个非常高分辨率的图像,然后在本地进行缩小。同样,你也不希望高端设备将低分辨率的图像放大,以便造成模糊的用户体验。
如果您在处理位图图像时遇到困难,为了适应许多不同的设备像素比,您应该使用CSS媒体查询或HTML图片元素来为不同组设备提供不同资源集。结合一些技巧,如`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'); }
}
这样,每种设备类型只加载正确的图像资源。还要记住,CSS 中的 px
单位始终基于 逻辑像素 运算。
矢量图形的应用场景
随着越来越多的设备类型出现,为所有设备提供足够的位图资源变得更加复杂。在 CSS 中,媒体查询目前是唯一的方式,在 HTML5 中,picture 元素 可以让您针对不同的媒体查询使用不同的来源,但支持仍未达到100%,因为大多数网页开发人员仍需为 IE11 提供支持一段时间(来源:caniuse)。
如果您需要清晰的图标、线条艺术和设计元素(而非照片),您需要开始考虑使用 SVG,它可以美观地适配所有分辨率。
width=device-width
,那么它会被拉伸到全屏吗? - ilyobackground-size
技巧来最大化利用显示器。 - Anders Marzi Tornblad