前端CSS中的px是物理像素,还是逻辑像素?

它和iOS中的pt是怎样的关系?

下面我们就来看下CSS中的px实现。

假设有如下CSS字号设置:

div {
font-size: 100px;
}

最终处理px的调用栈如下图所示:

从左边调用栈可知,这个过程发生在CSS的匹配。

详情可以参看《WebKit Inside: CSS 的匹配》。

从右下角红框输出可知,当前正在处理CSS中font-size属性值:100px。

从代码可以看到,如果是px,直接从switch-case语句中跳出,不做任何换算处理,属性值100被直接存储下来使用。

那么就可以得出结论,CSS 中的 px 是逻辑像素,等价于 iOS 中的 pt。

在CSS中,也有一个pt,那么它和iOS中的pt是什么关系呢?

还是上面的CSS字号设置,不同的是,将字号单位从px修改为pt:

div {
font-size: 100pt;
}

最终处理pt的调用栈如下:

整个处理过程和px类似。

不同的地方在于,最终的值不是支持存储100,而是经过了转换。

转换的关键就是CSS::pixelsPerPt,从控制台的输出可以看到,这个值为1.3333。

通过在代码中搜索,CSS::pixelsPerPt定义在CSSUnits.h文件中:

从定义中看,CSS::pixelsPerPt由另外两个变量计算而来:

CSS::pixelsPerInch = 96

CSS::pointsPerInch = 72

CSS::pixelsPerInch表示一英寸有多少像素,这里的像素是物理像素。

CSS::pointsPerInch表示一英寸有多少点,这里的点是在打印时使用的单位。

CSS::pixelsPerPt就等于CSS::pixelsPerInch除以CSS::pointsPerInch。

那么可以得出结论,CSS 中的 pt 是打印时使用的单位,和 iOS 中的 pt 不是一回事。

WebKit Inside: px 与 pt的更多相关文章

  1. PX 和PT的区别

    字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢? 先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点: pt就是point,是印刷行业常用单位,等于1/72英 ...

  2. UI设计中px、pt、ppi、dpi、dp、sp之间的关系

    UI设计中px.pt.ppi.dpi.dp.sp之间的关系 武汉AAA数字艺术教育 2015-07-24 14:19:50 职业教育 pi px 阅读(3398) 评论(0) 声明:本文由入驻搜狐公众 ...

  3. (转)CSS字体大小: em与px、pt、百分比之间的对比

    CSS样式最混乱的一个方面是应用程序中文本扩展的font-size属性.在CSS中,你可以用四个不同的单位度量来显示在web浏览器中的文本 大小.这四个单位哪一种最适合Web? 这个问题引起了广泛的争 ...

  4. Html代码Font-Size中px与pt的区别

    一个是设备坐标,一个是逻辑坐标,两者是不同的. px是个相对单位,一般像素的参考值为:在一个像素密度是90 pdi的显示器上,正常人从距离显示器28英寸处看一个像素的视角应该不小于0.0227度. 1 ...

  5. html px em pt长度单位(像素 相对长度 点)知识(转)

    html px em pt单位区 一.PX\EM\PT单位介绍 px单位名称为像素,相对长度单位,像素(px)是相对于显示器屏幕分辨率而言的国内推荐:em单位名称为相对长度单位.相对于当前对象内文本的 ...

  6. px/em/pt区别和转换

    老是被人问到px.pt和em的区别,自己有时候也会纠结到底该用什么单位,今天特意查了一些文章,下面这篇虽然很久远了,但解释的比较全面,转载收藏之.点击查看原文 这里引用的是Jorux的“95%的中国网 ...

  7. pt和px区别 pt是逻辑像素,px是物理像素

    pt和px区别 pt是逻辑像素,px是物理像素字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢?先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点:pt就是po ...

  8. 网站响应式布局/网站自适应问题+rem、em、px、pt及网站字体大小设配

    Bootstrap 网格系统: Bootstrap CSS: Bootstrap 组件及插件: 一.什么是响应式布局?       响应式布局是Ethan Marcotte在2010年5月份提出的一个 ...

  9. 网页常见单位: px em pt % rem vw、vh、vmin、vmax , rem 使用

    1.网页常见单位:  px  em  pt    vw\vh   rem 1.1 px单位名称为像素,相对长度单位,像素(px)是相对于显示器屏幕分辨率而言  (最终解析单位) em单位名称为相对长度 ...

  10. Android开发(十)——像素单位dp、px、pt、sp的比较

    dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖 ...

随机推荐

  1. 微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题

    本文由微信客户端团队rhythm分享,原题"视频号直播:如何进一步降低功耗占用?",本文有修订和改动. 1.引言 功耗优化一直是 app 性能优化中让人头疼的问题,尤其是在直播这种 ...

  2. UOS系统mysql服务安装

    UOS系统mysql服务安装 背景 1.安装环境:kvm虚拟机 2.运行环境:uos server-1060e 3.架构:x86 4.安装mysql版本:mysql-5.7 1.安装准备 # Mysq ...

  3. HBase的Memstore-schema-rowkey设计原则

    schema设计原则 前提条件 使用HBase Shell或者Java API的HBaseAdmin来创建和编辑HBase的Schema,当修改列簇时,建议先将这张表下线.   Configurati ...

  4. 系统提示msvcp120.dll丢失如何解决

    最近有位win7系统用户反映,自己安装完游戏开始玩的时候,系统却提示:示msvcp120.dll丢失,这导致了游戏无法正常运行,这让用户很是苦恼,不知道电脑如何解决,为此非常苦恼,那么win7系统提示 ...

  5. Kotlin:【空安全概述】可空性、null类型、null安全

  6. 语音处理 开源项目 EchoSharp

    开源项目 EchoSharp(https://github.com/sandrohanea/echosharp),专为近乎实时的音频处理而设计,可为各种音频分析范围无缝编排不同的 AI 模型.Echo ...

  7. JMeter调用python脚本

    JMeter调用python脚本 前提 具备python环境 具备jdk环境 一.编写python脚本 python脚本如下: import random # 随机一个 1~100 的随机数 prin ...

  8. macOS安装软件过程中常见几种报错的解决办法

    对于刚使用 macOS 或者在更新系统后尝试运行应用时遇到问题的用户,可能会看到以下几种错误提示: xxx已损坏,无法打开,你应该将它移到废纸篓 打不开 xxx,因为它来自身份不明的开发者 打不开xx ...

  9. 什么是Kappa架构?

    一.简介 相当于在Lambda架构上去掉了批处理层(Batch Layer),只留下单独的流处理层(Speed Layer).通过消息队列的数据保留功能,来实现上游重放(回溯)能力. 当流任务发生代码 ...

  10. IDEA中创建Spring Boot项目(SSM框架)

    一.IDEA创建新Maven项目 创建maven项目完成 因为创建多模块项目,删除根目录src目录 二.maven多模块项目配置 需要创建的模块 umetric-web  控制层 umetric-we ...