当前位置: 代码迷 >> 综合 >> 响应式布局之 DPR (Device Pixel Ratio)
  详细解决方案

响应式布局之 DPR (Device Pixel Ratio)

热度:83   发布时间:2023-12-12 19:13:52.0

最近在了解响应式布局:flexible grid layout(弹性网格布局),flexible image(弹性图片),media queries(媒体查询)。

在看到DPR这个词的时候就有点懵逼了,于是找度娘:

实际上像素分为两种:设备像素和CSS像素

  1、设备像素(device independent pixels): 设备屏幕的物理像素,任何设备的物理像素的数量都是固定的

  2、CSS像素(CSS pixels): 又称为逻辑像素,是为web开发者创造的,在CSS和javascript中使用的一个抽象的层

  每一个CSS声明和几乎所有的javascript属性都使用CSS像素,因此实际上从来用不上设备像素 ,唯一的例外是screen.width/height

//我们通过CSS和javascript代码设置的像素都是逻辑像素 width:300px; font-size:16px;


设备像素比DPR(devicePixelRatio)是默认缩放为100%的情况下,设备像素和CSS像素的比值

DPR = 设备像素 / CSS像素(某一方向上)

在早先的移动设备中,并没有DPR的概念。随着技术的发展,移动设备的屏幕像素密度越来越高。从iphone4开始,苹果公司推出了所谓的retina视网膜屏幕。之所以叫做视网膜屏幕,是因为屏幕的PPI(屏幕像素密度)太高,人的视网膜无法分辨出屏幕上的像素点。iphone4的分辨率提高了一倍,但屏幕尺寸却没有变化,这意味着同样大小的屏幕上,像素多了一倍,于是DPR = 2

  实际上,此时的CSS像素对应着以后要提到的理想视口,其对应的javascript属性是screen.width/screen.height

  而对于设备像素比DPR也有对应的javascript属性window.devicePixelRatio

  以iphone5为例,iphone5的CSS像素为320px*568px,DPR是2,所以其设备像素为640px*1136px

    640(px) / 320(px)  = 21136(px) / 568(px) = 2640(px)*1136(px) /  320(px)*568(px) = 4


我们在 Chrome 浏览器控制台 console 中输入 window.devicePixelRatio可以获取当前屏幕的 DPR。


  相关解决方案