CSS是描述HTML文档如何显示的,在显示的过程中,HTML元素的长宽、间距、字体大小等等,都需要通过长度尺寸单位来表示。我们常常会说:字体大小16像素, 间距10个像素。这里的像素,就是CSS中的长度尺寸单位。一个像素写作1px,那么1px在屏幕中到底占用了多少的空间呢?

1px等于多少厘米

我们先来看一个实测。我写了一个很简单的网页,网页中有一个HTML元素:width: 300px,将这个网页在不同的显示器下全屏,然后用尺子量了一下(mac上的尺子工具要花钱,所以就人工量了)。

注意:上述图片由于拍摄角度问题,存在些许误差。

1cm大家都知道有多大。并且不管在哪儿显示,1cm就是1cm。厘米可以说是一种绝对单位。但是300px在不同的屏幕上,显示的长度却是不一样的。CSS中的像素px, 其实是一种逻辑单位

绝对长度单位、屏幕尺寸以及屏幕分辨率

要彻底理解CSS中的像素px,先从身边的事物开始讲起。

比如,我们经常会听到,iphone14的屏幕尺寸就是6.1英寸。英寸是英国那边的长度单位。1英寸 = 2.54厘米。也就是说,iphone14的屏幕尺寸是: 6.1 * 2.54 = 15.494厘米。像厘米,英寸这样的长度单位,叫做绝对长度单位

屏幕尺寸是如何计算的呢?其实是计算的屏幕对角线的长度。

那么,屏幕分辨率又是怎么回事呢?

屏幕分辨率:指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素来表示屏幕的分辨率,如1960*1080

注意:这里的 像素px 与 CSS中的像素px ,不一定相等。

像素点其实就是一个一个的小方块,是屏幕展示画面的最小单位。下面这张图,可以比较形象的表示像素点:

iphone14的像素为:2532px * 1170px。其对角线的像素点个数为:

每英寸内包含的像素点个数为:2789 ➗ 6.1 ≈ 460;

这里的每英寸内包含的像素点个数被称为屏幕像素密度(pixels per inch),简写为:ppi。在计算机屏幕上,ppi 经常也被称为:dpi(dots per inch).

ppi越高,我们通过屏幕肉眼可见的画面就越清晰。

Chrome针对不同的ppi,对显示屏幕进行了分类,

Apple直接将屏幕分为了非高清屏、高清屏、超高清屏。我们平时所说的2k屏,4k屏,就是分辨率达到了特定值的屏幕。

设备像素比(DPR)与CSS中的px

在web开发中,有一个设备像素比(devicePixelRatio)的概念,简称为:DPR。在浏览器中(主要是移动端),可以通过window.devicePixelRatio来获取这个值。 这个值是像素大小的比率:一个 CSS 像素的大小与一个物理像素的大小的比。 简单来说,它告诉浏览器应使用多少屏幕实际像素来绘制单个 CSS 像素。CSS像素是一个逻辑上的概念。

桌面端电脑的DPR值,是可以自定义的。window.devicePixelRatio并不能获取准确的DPR值。 Windows电脑的DPR值,可以通过修改屏幕分辨率设置,一般情况下为1。 MAC OS的DPR值,可以通过系统的显示器设置查看。

假设在dpr=2的情况下,我们在CSS中的1px,在屏幕上,就需要用2个物理像素来表示。结合之前的内容,

∵ ppi = 每英寸内包含的像素点个数
∴ 一个物理像素实际宽度 = 1 / ppi。
∴ 300px宽的HTML元素实际的宽 = 一个物理像素实际宽度 * 300 * DPR = 1 / ppi * 300 * DPR

下面,我们来试着回答一开始的问题,1px到底等于多少厘米。下图列出了我电脑的配置以及计算过程:

可以看到,计算出来的过程与上面用卷尺量出来的长度是相符合的。

CSS中除了px可以表示长度以外,还有em, rem等。而移动端中的尺寸计算,还涉及到一个重要的概念:viewpoint。这些将在以后的内容中详细介绍。

小结

我们生活中提到的像素与web开发中的提到的像素是不同的。CSS中的1px最终表现出来,到底有多大的尺寸,取决于屏幕本身的分辨率和屏幕的分辨率设置。除了屏幕,我们平时也会说一个图片的大小是m像素 * n像素,这是逻辑像素。而图片的真实尺寸,是等于图片像素值 / 图片的dpi

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

为了彻底弄懂CSS中的1px究竟有多长,我翻出了家里的卷尺相关推荐

  1. 彻底弄懂css中单位px和em,rem的区别

    2019独角兽企业重金招聘Python工程师标准>>> rem: rem一般用于设置字体的大小,1rem就是html根元素的字体大小,2rem就是html字体大小的2倍,1.5rem ...

  2. 彻底弄懂CSS盒子模式一(DIV布局快速入门)

    ­彻底弄懂CSS盒子模式一(DIV布局快速入门) ­ ­作者:唐国辉 ­ ­实例网页网址:http://www.blueidea.com/articleimg/2007/03/4545/css2.ht ...

  3. 一文弄懂神经网络中的反向传播法

    最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...

  4. 一文弄懂神经网络中的反向传播法——BackPropagation【转】

    本文转载自:https://www.cnblogs.com/charlotte77/p/5629865.html 一文弄懂神经网络中的反向传播法--BackPropagation 最近在看深度学习的东 ...

  5. deque stack java_一文弄懂java中的Queue家族

    简介 java中Collection集合有三大家族List,Set和Queue.当然Map也算是一种集合类,但Map并不继承Collection接口. List,Set在我们的工作中会经常使用,通常用 ...

  6. 彻底弄懂Python中的GIL锁

    彻底弄懂Python中的GIL锁 转载:https://blog.csdn.net/yushuaigee/article/details/86537474 刚学习python时,我关注了许多介绍pyt ...

  7. bfc是什么_一次弄懂css的BFC

    前言 BFC在css的学习中是重要的但不易理解的概念,BFC也牵扯了很多其他问题,如浮动.定位.盒模型等,因此弄懂BFC是很有必要的.本文对BFC进行总结,希望对你有所帮助. BFC是什么? 先看看M ...

  8. html 字号和像素的关系,一文搞懂CSS中的字体单位大小(px,em,rem...)

    在学习的过程中,发现CSS有很多可以形容单位的尺寸.比方px,em,rem,vw等等.平常也没有深究,一来是没时间,二来是在我学习清单中优先级过低.一直想彻底弄明白,一直耽搁到现在.现在花上一点时间来 ...

  9. sizebox模型下载_彻底弄懂CSS盒模型BoxModel

    前言 假如你想尝试一下不用表格来排版网页,而是用CSS来排版你的网页,也就是常听的用DIV来编排你的网页结构,又或者说你想学习网页标准设计,再或者说你的上司要你改变传统的表格排版方式,提高企业竞争力, ...

最新文章

  1. 【OpenCV 4开发详解】图像修复
  2. 为什么使用LM386可以直接收听调频电台节目?
  3. python处理表格数据-基于Python快速处理PDF表格数据
  4. Kafka官方文档翻译——简介
  5. Linux查找文件内容
  6. 动态生成数据后绑定事件
  7. 第七次scrum meeting记录
  8. Python import导入模块与函数方法 Python语言基础【1】
  9. webpack4 es6转换
  10. Cesium多屏展示
  11. devops 开发_DevOps如何消除开发瓶颈
  12. C++11 Lambda表达汇总总结
  13. oracle DataGuard停机和启动顺序
  14. PyTorch学习—19.模型的加载与保存(序列化与反序列化)
  15. key_beep按键控制蜂鸣器程序及流程图
  16. 教你几招提高自媒体文章原创度
  17. java毕业设计物流跟踪系统mybatis+源码+调试部署+系统+数据库+lw
  18. 第五届山东ACM大赛汇总
  19. 解决wampserver server offline
  20. 利用感知机实现鸢尾花分类问题

热门文章

  1. 从爱立信退出世界 500 强,看 20 年 IT 行业变迁
  2. Free as in beer VS Free as in speech
  3. //众神云集、群魔乱舞、以一抵百、砥砺前行// 计数排序
  4. 【AHOI2002】哈利●波特与魔法石
  5. 织梦dedecms 创建栏目
  6. 三重罗生门の个性化弹窗 服务端的系统提示
  7. 云服务器搭建ThinkPHP框架图文教程
  8. [电脑故障]ntoskrnl.exe导致DRIVER_POWER_STATE_FAILURE
  9. 如何在90天内学会一门语言
  10. 数据库求最小函数依赖