说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?
CSS像素
CSS像素(css pixel, px): 适用于web编程,在 CSS 中以 px 为后缀,是一个长度单位
在 CSS 规范中,长度单位可以分为两类,绝对单位以及相对单位
px是一个相对单位,相对的是设备像素(device pixel)
一般情况,页面缩放比为1,1个CSS像素等于1个设备独立像素
CSS像素又具有两个方面的相对性:
- 在同一个设备上,每1个 CSS 像素所代表的设备像素是可以变化的(比如调整屏幕的分辨率)
- 在不同的设备之间,每1个 CSS 像素所代表的设备像素是可以变化的(比如两个不同型号的手机)
在页面进行缩放操作也会 引起css中px的变化,假设页面放大一倍,原来的 1px 的东西变成 2px,在实际宽度不变的情况下1px 变得跟原来的 2px 的长度(长宽)一样了(元素会占据更多的设备像素)
假设原来需要 320px 才能填满的宽度现在只需要 160px
px会受到下面的因素的影响而变化:
- 每英寸像素(PPI)
- 设备像素比(DPR)
设备像素
设备像素(device pixels),又称为物理像素
指设备能控制显示的最小物理单位,不一定是一个小正方形区块,也没有标准的宽高,只是用于显示丰富色彩的一个“点”而已
可以参考公园里的景观变色彩灯,一个彩灯(物理像素)由红、蓝、绿小灯组成,三盏小灯不同的亮度混合出各种色彩
从屏幕在工厂生产出的那天起,它上面设备像素点就固定不变了,单位为pt
设备独立像素
设备独立像素(Device Independent Pixel)与设备无关的逻辑像素,可以通过程序控制使用的虚拟像素
是一个总体概念,包括了CSS像素
在javaScript中可以通过window.screen.width/ window.screen.height 查看
比如我们会说“电脑屏幕在 2560x1600分辨率下不适合玩游戏,我们把它调为 1440x900”,这里的“分辨率”(非严谨说法)指的就是设备独立像素
一个设备独立像素里可能包含1个或者多个物理像素点,包含的越多则屏幕看起来越清晰
dpr
dpr(device pixel ratio),设备像素比,代表设备独立像素到设备像素的转换关系,在javaScript中可以通过 window.devicePixelRatio 获取
计算公式如下:
当设备像素比为1:1时,使用1(1×1)个设备像素显示1个CSS像素
当设备像素比为2:1时,使用4(2×2)个设备像素显示1个CSS像素
当设备像素比为3:1时,使用9(3×3)个设备像素显示1个CSS像素
如下图所示:
当dpr为3,那么1px的CSS像素宽度对应3px的物理像素的宽度,1px的CSS像素高度对应3px的物理像素高度
ppi
ppi (pixel per inch),每英寸像素,表示每英寸所包含的像素点数目,更确切的说法应该是像素密度,数值越高,说明屏幕等以更高密度显示图像
计算公式如下:
总结
设备像素:称为物理像素,指设备能控制显示的最小物理单位,没有便准的宽高,单位为 pt
Css像素:适用于web编程,在css中以px为后缀,是一个长度单位。长度单位又分为两类,绝对单位以及相对单位,
相对的时设备像素,1个css像素等于1个设备独立像素
设备独立像素:与设备无关的逻辑像素,代表可以通过程序控制使用的虚拟像素,是一个总体概念,包括了css像素
Dpr:设备像素比,代表设备独立像素到设备像素的转换关系,在js中可以通过window.devicePixeRatio获取
Ppi:美英寸像素,表示每英寸所包含的像素点数目,更确切的说法应该是像素密度。数值越高,说明屏幕能以更高密度显示图像
区别:
1. 无缩放情况下,1个css像素等于1个设备独立像素
2. 设备独立像素由屏幕生产之后就不会发生改变,而设备独立像素是一个虚拟单位会发生改变
3. Pc端中,1个设备独立像素=1个设备像素(未缩放的情况下)
4. 在移动端中,标准屏幕下1个设备独立像素=1个设备像素
5. 设备像素比=设备像素/设备独立像素
6. 每英寸像素值越大图象越清晰