设备像素、CSS 像素、设备独立像素、dpr、ppi 之间的区别

发布于 2025-01-17 08:42:52 字数 2969 浏览 3 评论 0

css 中我们通常使用 px 作为单位,在 PC 浏览器中 css 的 1 个像素都是对应着电脑屏幕的 1 个物理像素,这会造成一种错觉,我们会认为 css 中的像素就是设备的物理像素,但实际情况却并非如此, css 中的像素只是一个抽象的单位,在不同的设备或不同的环境中, css 中的 1px 所代表的设备物理像素是不同的

当我们做移动端开发时,同为 1px 的设置,在不同分辨率的移动设备上显示效果却有很大差异,这背后就涉及了 css 像素、设备像素、设备独立像素、 dprppi 的概念

正文

CSS 像素

CSS 像素(css pixel, px): 适用于 web 编程,在 CSS 中以 px 为后缀,是一个长度单位,在 CSS 规范中,长度单位可以分为两类,绝对单位以及相对单位

px 是一个相对单位,相对的是设备像素(device pixel),一般情况,页面缩放比为 1,1 个 CSS 像素等于 1 个设备独立像素

CSS 像素又具有两个方面的相对性:

  • 在同一个设备上,每 1 个 CSS 像素所代表的设备像素是可以变化的(比如调整屏幕的分辨率)
  • 在不同的设备之间,每 1 个 CSS 像素所代表的设备像素是可以变化的(比如两个不同型号的手机)

在页面进行缩放操作也会 引起 csspx 的变化,假设页面放大一倍,原来的 1px 的东西变成 2px ,在实际宽度不变的情况下 1px 变得跟原来的 2px 的长度(长宽)一样了(元素会占据更多的设备像素)

假设原来需要 320px 才能填满的宽度现在只需要 160px

px 会受到下面的因素的影响而变化:

  • 每英寸像素(PPI)
  • 设备像素比(DPR)

设备像素

设备像素(device pixels),又称为物理像素

指设备能控制显示的最小物理单位,不一定是一个小正方形区块,也没有标准的宽高,只是用于显示丰富色彩的一个 点 而已,可以参考公园里的景观变色彩灯,一个彩灯(物理像素) 由红、蓝、绿小灯组成,三盏小灯不同的亮度混合出各种色彩

从屏幕在工厂生产出的那天起,它上面设备像素点就固定不变了。

设备独立像素

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

javaScript 中可以通过 window.screen.width/ window.screen.height 查看

比如我们会说“电脑屏幕在 2560x1600 分辨率下不适合玩游戏,我们把它调为 1440x900 ”,这里的“分辨率”(非严谨说法)指的就是设备独立像素

一个设备独立像素里可能包含 1 个或者多个物理像素点,包含的越多则屏幕看起来越清晰

至于为什么出现设备独立像素这种虚拟像素单位概念,下面举个例子:

iPhone 3 和 iPhone 4 的尺寸都是 3.5 寸,但 iPhone 3 的分辨率是 320x480 ,iPhone 4/4s 的分辨率是 640x960

这意味着,iPhone 3 有 320 个物理像素,iPhone 4 有 640 个物理像素

如果我们按照真实的物理像素进行布局,比如说我们按照 320 物理像素进行布局,到了 640 物理像素的手机上就会有一半的空白,为了避免这种问题,就产生了虚拟像素单位

我们统一 iPhone 3 和 iPhone 4 都是 320 个虚拟像素,只是在 iPhone 3 上,最终 1 个虚拟像素换算成 1 个物理像素,在 iphone 4 中,1 个虚拟像素最终换算成 2 个物理像素

至于 1 个虚拟像素被换算成几个物理像素,这个数值我们称之为设备像素比,也就是下面介绍的 dpr

dpr

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

计算公式如下:

DPR = 设别像素/设备独立像素

当设备像素比为 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),每英寸像素,表示每英寸所包含的像素点数目,更确切的说法应该是像素密度。数值越高,说明屏幕能以更高密度显示图像

计算公式如下:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

凉宸

暂无简介

文章
评论
24 人气
更多

推荐作者

七七

文章 0 评论 0

囍笑

文章 0 评论 0

盛夏尉蓝

文章 0 评论 0

ゞ花落谁相伴

文章 0 评论 0

Sherlocked

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文