如何计算CSS像素大小?

在深入研究CSS单元时,我遇到了参考像素的定义。 但是,我无法找到与CSS像素单元关系的一致和全面的描述。 我在这件事上做了一些研究,但对我来说还是有点不清楚。

1.收集到的信息


1.1像素定义

像素有两种不同的类型/定义:

“设备像素” - 显示屏上的单个物理点。

和:

CSS像素 - 最接近匹配参考像素的单位。 [1]

两个同名的平行概念绝对不能说明混淆。 我完全理解引入第二个的目的,但我觉得它的命名有误导性。 CSS像素被分类为绝对单位,并且:

“绝对长度单位相对于彼此是固定的。” [1]

除了像素之外,上述说法对于每个单元都非常明显。 遵循w3c规范:

“对于CSS设备,通过将物理单位与他们的物理测量相关联,或者(ii)通过将像素单位与参考像素相关联来固定这些尺寸(i)。

(...)请注意,如果锚点单位是像素单位,则物理单位可能与其物理测量值不匹配。 或者,如果锚单元是物理单元,则像素单元可能不会映射到整个设备像素。“[1]

考虑到上述引文,我假设绝对单位不是绝对的,因为它们可能会锚定到参考像素。


1.2参考像素

参考像素本身实际上是一种角度测量[2]:

“参考像素是设备上一个像素的视角,像素密度为96dpi,距手臂长度为读取器的距离,对于标称臂长为28英寸的情况,视角约为0.0213度。” [1]

以下图片显示的内容如下:

在这里输入图像描述

尽管将参考像素定义为视角,但我们可以进一步阅读:

“对于手臂长度来说,1px因此相当于大约0.26毫米(1/96英寸)。”

抛开不一致的地方,我们能够确定角度的价值:

α = 2 * arctan(0.026/142) = 0.02098°

where:
    α — a value of the visual angle

因此显示单位的大小等于:

y = 2x * tan(0.01049°)

where:
    y — a displayed unit size
    x — a reading distance

根据上述公式,为了计算单位大小,我们需要确定实际的阅读距离。 由于用户可能会有所不同,其分类基于设备的DPI。

1.2.1新闻部

为了方便起见,我们假设DPI == PPI

这个测量允许我们猜测显示类型。 快速检查:

  • iPhone 6(4.7“,1334×750):326 ppi;
  • 索尼Bravia 4K(54.6“,3840×2160):75 ppi。
  • 所以,一般来说,越靠近用户所坐的屏幕越大的PPI。 下表[3]给出了具有特定DPI的设备的阅读距离推荐:

                   ———————————————————————————————————————
                  |  DPI  | Pixel size | Reading distance |      
     —————————————————————————————————————————————————————
    |PC's CRT     |  96   | ~0.2646 mm |     ~71 cm       |     
    |display      |       |            |                  |
     —————————————————————————————————————————————————————
    |Laptop's LCD |  125  | 0.2032 mm  |     ~55 cm       |
    |display      |       |            |                  |
     —————————————————————————————————————————————————————
    |Tablet       |  160  | ~0.159 mm  |     ~43 cm       |
     —————————————————————————————————————————————————————
    
    

    但是,我不清楚这些距离值是如何获得的。 与功能描述的DPI的关系还是只是一种经验观察?

    1.2.2设备像素比例

    视网膜显示的推出使事情更加复杂化。 它的PPI往往比非Retina大约大2倍,而推荐阅读距离应该保持不变。 由于CSS像素大小不一定与设备像素大小相对应,因此我假设Retina显示屏上的单位大小首先被转换为参考像素大小(以设备像素表示),然后再乘以像素比率。 这是对的吗?

    1.2.3缩放

    在放大时,显示的参考像素尺寸增加[4],与显示器的距离增加。 这很违反直觉,因为这意味着我们正在从屏幕上“走开”,而不是靠近它。


    2.问题


    结束我的怀疑和清晰的问题:

  • 当锚点单元是物理单元时,如何计算CSS像素大小?
  • 如何建立新闻部与阅读距离之间关系的公式?
  • 如何计算非标准,高DPI / PPI设备(如打印机和视网膜显示器)的CSS像素大小?
  • 另外,如果我的推理无效或者我错过了某些东西,请纠正我。 感谢您的回复。


    3.参考文献


  • W3C规范
  • inamidst.com,Sean B. Palmer的网站
  • Mozzilla黑客
  • 1uirksmode.org

  • 我可能是错的,但我认为CSS像素不可能将物理单位作为锚点。

    基于这篇文章:

    PX单元是CSS的魔法单元。 它与当前字体无关 ,也与绝对单位无关 。 px单位被定义为很小但可见,并且可以显示具有尖锐边缘的水平1px宽线条(无抗锯齿)。 什么是尖锐的,小的和可见的取决于设备和使用方式:它是否像手机一样靠近你的眼睛,手臂长度,如电脑显示器,还是其他地方,如书本? 因此px没有被定义为恒定的长度,而是取决于设备的类型及其典型用途。

    更新:我错了。 目前在任何浏览器中都可能没有实现。 在这种情况下,根据规格: “这些尺寸要么固定(i)通过将物理单位与他们的物理测量相关联”,这意味着1px将等于物理英寸的1/96。

    至于表格中DPI与读取距离之间的关系,如果DPI = 96,则读取距离为〜71cm或28in,并且这些值成反比,意味着较高的DPI将导致较小的读取距离。

    从中很容易得出一个公式:

    x = 125/96
    
    y = 71/x
    
    where:
      x - ratio between second and first DPI value
      y - reading distance for second DPI value
    

    对于更高分辨率的设备,Mozilla黑客文章中给出了一个较低的例子:

    我们以iPhone 4作为最着名的例子。 它配备了326 DPI显示屏。 根据我们上表,作为智能手机,它的典型观看距离为16.8英寸,基准像素密度为160 DPI。 为了创建一个CSS像素,Apple选择将设备像素比率设置为2,这有效地使iOS Safari以与在163 DPI电话上相同的方式显示网页。

    这意味着我们有两个解决方案 - 物理(PPI)和CSS一个(cssppi)。 看来cssppi用于计算参考像素大小,然后设备制造商会选择它们将映射到一个CSS像素的多少参考像素(我假设这个数字等于设备像素比值,但不是100%确定)。

    以下是一些常见设备像素比例,PPI和cssppi的比较表:http://mydevice.io/devices/

    有关更多信息和参考检查以下文章:

  • A List Apart - 像素身份危机
  • 像素每英寸意识和CSS Px
  • 智能手机,平板电脑和公司的CSS单位的物理尺寸
  • 链接地址: http://www.djcxy.com/p/88161.html

    上一篇: How a CSS pixel size is calculated?

    下一篇: What HTML structure performs better for the browser?