关键词搜索

全站搜索
×
密码登录在这里
×
注册会员

已有账号? 请点击

忘记密码

已有账号? 请点击

使用其他方式登录

CSS像素和设备独立像素与设备像素三者区别和关系

发布2021-01-28 浏览1510次

详情内容

CSS像素、设备独立像素、设备像素,三者联系紧密又有很大的区别,而我们主要是在做移动端开发的时候需要更多地用到这些概念,那他们分别是指什么呢?

概念

CSS像素(CSS Pixel):适用于web编程,指的是我们在样式代码中使用到的逻辑像素,是一个抽象概念,实际并不存在。


设备独立像素(Device Independent Pixel):与设备无关的逻辑像素,代表可以通过程序控制使用的虚拟像素,是一个总体概念,包括了CSS像素。

设备独立像素也叫 密度无关像素 ,可以认为是计算机坐标系统中的一个点,这个点表示一个可以由程序使用并控制的虚拟像素,可以由相关系统转换为物理像素。设备独立像素是一个整体概念,包括了css像素,比如:css像素,只是在android 机中,css像素不叫 “css像素了”,而叫“设备独立像素”。


设备像素(Device Pixel)物理像素,设备能控制显示的最小单位,我们常说的1920×1080像素分辨率就是用的设备像素单位。

 

关系

因为设备独立像素是包含了CSS像素的大类,所以我们可以直接讨论设备独立像素和设备像素之前的区别和联系。

首先我们可以做一个总体总结:

PC端 —— 1个设备独立像素 = 1个设备像素 (在100%,未缩放的情况下,如果缩放到200%可以说1个设备独立像素 = 2个设备像素),

在PC端设备独立像素把它当成我们常说的屏幕分辨率(实际上它不是,但是由于在PC端设备像素和设备独立像素数值相等,才有这么一个不准确的说法)

移动端 —— 根据设备不同有很大的差异,根据 ppi 不同我们可以得到不同的换算关系,标准屏幕(160ppi)下 1个设备独立像素 = 1个设备像素

 

在详细阐述之前我们先介绍两个概念:每英寸像素点ppi 和 设备像素比dpr

ppi (pixel per inch):表示每英寸所包含的像素点数目,数值越高,说明屏幕能以更高密度显示图像

计算公式——

ppi在120-160之间的手机被归为低密度手机,160-240被归为中密度,240-320被归为高密度,320以上被归为超高密度(例如苹果公司的Retina显示屏)

 

 

dpr(device pixel ratio):设备像素比,设备像素/设备独立像素,代表设备独立像素到设备像素的转换关系,在JS中可以通过 window.devicePixelRatio 获取

 计算公式——

知道设备像素比之后,我们就可以将程序中使用到的CSS像素转换为设备像素,解决同样的图片在不同移动终端上显示存在差异的问题。

常见的设备dpr可以通过 http://screensiz.es/phone 或者 http://devicepixelratio.com/ 查询,我们下面来说一说具体的使用方法。


在javascript中,可以通过window.devicePixelRatio获取到当前设备的dpr。在css中,可以通过-webkit-device-pixel-ratio,webkit-min-device-pixel-ratio和-webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配(这里只针对webkit内核的浏览器和webview)。 


下面我们来看个现实中的例子,Iphone 5s 使用的是 Retina 视网膜屏幕,什么是Retina视网膜屏幕?PPI 值超过 300 的叫做超高密度屏幕,只是 Apple 给它换了个高大尚的名称:Retina 视网膜屏幕而已。

在做移动页面开发的时候,相信你经常会遇到这种情况:在不同的手机上看时,里面的图片、文字或者线的大小会不一样,有时候大小区别还非常地大。原因就是刚才说到的设备像素比在作怪。

你想啊,如果在普通屏即标准 PPI下一个设备光点对应一个 CSS 像素时,页面不大不小,完美地渲染出来了。但在现在这个高逼格的年代,标准 PPI 已经很少见了。更多的是 Retina视网膜设备。而设备像素比不同的品牌的手机这个值也是不一样的。即使是同一个品牌的手机也不一样。你比如 Iphone 5s 设备像素比为2,Iphone 6s 设备像素比为3。至于安卓机中的设备像素比就更多了,有1.3、1.5、2、3等等。


当设备像素比为1:1时,使用1(1×1)个设备像素显示1个CSS像素;

当设备像素比为2:1时,使用4(2×2)个设备像素显示1个CSS像素;

当设备像素比为3:1时,使用9(3×3)个设备像素显示1个CSS像素。

 如下图所示:

 

所以如果我们要在非标准屏幕上以同样大小显示同一张图片时,就需要缩放图片大小,计算公式为:

为什么是这样呢?就比如我们之前在CSS中设置图片大小为100px,要在dpr为2:1(即在一个方向上2个设备像素长度代表1个CSS像素长度)的Retia屏幕上同比例显示,就需要先放大这个图片到2被大小,即200px,这样我们在设备上对于图片的直观感受才是和标准屏幕相同。

 

而最后说一下,我们在移动端页面开发中尝试用到元信息配置<meta name="viewport" width="device-width">,添加这段代码后我们发现之前缩放的页面被放大了

其实它的含义就是将视口设置为:CSS像素=设备像素,即我们在页面中设置的1个CSS像素大小就等价于1个设备像素大小,在PC上看不到效果,但在移动端页面开发中我们就能看到很大的差异。


设备像素和独立设备像素的关系(实例)

已iphone6 为例:

设备宽高为375×667,可以理解为设备独立像素(或css像素)。
dpr为2,根据上面的计算公式,其物理像素就应该×2,为750×1334。

image.png

上图中可以看出,对于这样的css样式:

width: 2px;
height: 2px;

在不同的屏幕上(普通屏幕 vs retina屏幕),css像素所呈现的大小(物理尺寸)是一致的,不同的是1个css像素所对应的物理像素个数是不一致的。
在普通屏幕下,1个css像素 对应 1个物理像素(1:1)。 在retina 屏幕下,1个css像素对应 4个物理像素(1:4)。

设备像素与CSS像素之间的换算是如何产生

设备像素与CSS像素之间的换算是如何产生的呢?,这就要谈到ppi 和 dpr,以上计算出ppi是为了得到密度分界,获得默认缩放比例,即设备像素比。
image.png

由上图可知,ppi在120-160之间的手机被归为低密度手机,160-240被归为中密度,240-320被归为高密度,320以上被归为超高密度(Apple给了它一个高大上的名字——Retina)。
获得设备像素比后,便可得知设备像素与CSS像素之间的比例。当这个比率为1:1时,使用1个设备像素显示1个CSS像素。当这个比率为2:1时,使用4个设备像素显示1个CSS像素,当这个比率为3:1时,使用9(3*3)个设备像素显示1个CSS像素。


点击QQ咨询
开通会员
上传资源赚钱
返回顶部
×
  • 微信支付
  • 支付宝付款
扫码支付
微信扫码支付
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载