1、前言:

读完本文你会学到什么:

  • dp(device pixels)
  • px(css pixels)
  • pt(point)
  • ppi(pixels per inch)
  • dpi(dots per inch)
  • dpr(device pixels ratio)
  • dip(device independent pixel)

读本文你需要掌握哪些基本知识:

  • 1in(英寸) == 2.5399999961392cm
  • 常常用1英寸等于2.54厘米
  • 1m == 3尺
  • 1尺 == 10寸
  • 1寸 == 3.33333333cm
  • iphone6屏幕4.7寸是指屏幕对角长度为4.7英寸
  • iphone6的高宽比为 iphone6_height : iphone6_width = 16 : 9

2、dp(设备像素)

2.1、说明

dp是设备像素,也叫物理像素,顾名思义,他就是指一个物理发光点的单位。
iphone6官方在产品说明书上写的屏幕分辨率为1334x750像素指的是物理分辨率。
也就是高1334dp,宽750dp。

3、px(逻辑像素)

3.1、说明:

px是逻辑像素,逻辑像素是相对的单位。
在每个设备上对应的dp是不一样的是不一样的,在相同设备上对应的dp也可以不同。
这就是为什么我我们的图片可以放大缩小的原因。

4、pt(点)

4.1、说明

pt是专用的印刷单位“点”,这个单位是绝对单位.
1pt == 1/72in

5、ppi(每英寸的像素)

5.1、说明

ppi指的是单位英寸长度上的平均孔数
iphone6官方在产品说明书上写像素密度为326ppi,指的就是在它的1in == 326dp

5.2、计算iphone6的像素密度

先通过iphone6的对角4.7in和高宽比可以算出高和宽:

iphone6_width = 2.304227826273027in = 2.3in

iphone6_height = 4.096405024485382in =4.1in

再然后通过这个宽高和屏幕物理分辨率可以算出ppi

iphone6_width_ppi = 750dp/2.3in = 326.0869565217391ppi

iphone6_height_ppi = 1334dp/4.1in = 325.3658536585366ppi

可以得出宽和高都是非常近似的等于326dp的

6、dpi(每英寸的点数)

6.1、说明

dpi是输出设备的物理能力
例如:300DPI的油墨打印机是指每英寸有300墨滴用于打印机,每英吋能印出的点的数目为300。
“像素”(p)只存在于计算机显示领域,而“点”(d)只出现于打印或印刷领域。

6.2、注意

在显示器中ppi和dpi是同一概念

7、dpr(devicePixelRatio)

7、1说明

window.devicePixelRatio是设备上物理像素和逻辑像素的比例。
dpr不是单位,是一个属性,在浏览器中通过 window.devicePixelRatio 获取屏幕的DPR。
在用微信开发者工具开发小程序的时候,在切换模拟器的时候可以看到各个设备的dpr,iphone6的设备dpr为2

8、dip(设备独立像素)

8、1说明

是由谷歌推出用来适配各个安卓屏幕差异的。
在定义UI布局时,应该使用一个虚拟像素单元,以一种密度独立的方式表示布局维度或位置。
密度无关的像素相当于一个物理像素在160 dpi屏幕上,这是系统为“中等”密度屏幕所假设的基线密度。
在运行时,系统会根据实际的屏幕密度,透明地处理dp单元的任何扩展。将dp单元转换为屏幕像素很简单:px=dp(dpi/160)。
例如,在240 dpi屏幕上,1 dp等于1。5物理像素。在定义应用程序的UI时,应该始终使用dp单元,以确保在具有不同密度的屏幕上正确显示UI。
就是说在160dpi的屏幕上,1dip=1px。
它跟屏幕密度有关,如果屏幕密度大,1dip代表的px就多,比如在320dpi的屏幕上,1dip=2px。

9、彩蛋

9.1、viewport

viewport是用户网页的可是窗口。
手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。

9.2、实例代码

<meta name="viewport" content="width=device-width, initial-scale=1.0">

具体值含义可以参考我之前写的你绝对不知道的head标签

px和dp(内含大量的像素单位详解)的更多相关文章

  1. OpenCV学习C++接口 Mat像素遍历详解

    OpenCV学习C++接口 Mat像素遍历详解

  2. px、dp和sp,这些单位有什么区别?

    DP 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以 首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算 ...

  3. Android系统dimension单位详解

    转载请注明出处,谢谢!http://www.cnblogs.com/coding-way/p/3457878.html Android设备种类多样,要想适配好各种屏幕,理解各种屏幕数据是必须的.首先先 ...

  4. 字体大小之px、em、rem、pt,字号详解

    PX px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. 是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Pe ...

  5. css中em单位详解,说明

    em详解      em可以理解成“倍”. em会以父级元素中所设置的字体像素值为基准值进行成倍放大: 字体大小=(父级元素中的字体像素 * em的值) 例: 网页部分代码如下: 1.我现在没有在父级 ...

  6. [Android问答] px、dp和sp,这些单位有什么区别?

    相信每个Android新手都会遇到这个问题,希望这篇帖子能让你不再纠结. px: 即像素,1px代表屏幕上一个物理的像素点: px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小 ...

  7. px、dp与sp的区别以及换算

    1.px 即像素,1px代表屏幕上的一个物理像素点. 2.dp dip:device independent pixels(设备独立像素),dp与dip一样,不同的设备有不同的显示效果,一般为了支持W ...

  8. 【android】【转发】Android中PX、DP、SP的区别

    转载 http://blog.csdn.net/donkor_/article/details/77680042 前言: 众所周知,Android厂商非常多,各种尺寸的android手机.平板层出不穷 ...

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

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

随机推荐

  1. java 第三章

       if  选择结构:        语法:if(条件){ //代码块1 } if——else选择结构 语法:if(条件){ //代码块1 }else{ //代码块2 } 多重if选择结构 语法:i ...

  2. springBoot综合开发

    作者:纯洁的微笑出处:www.ityouknow.com 版权所有,欢迎保留原文链接进行转载:) 上篇文章介绍了Spring boot初级教程:spring boot(一):入门篇,方便大家快速入门. ...

  3. 异常处理 _this.setData is not a function

    _this.setData is not a function;at api request success callback function TypeError: _this.setData is ...

  4. Lexical or preprocessor 'XXX/XXX.h' issue file not found

    最近做第三方登录,引入了第三库,结果就出来个这个问题.如下图所示: 刚开始编译运行都没问题,可下次再打开时就报这个错误…… 一个比较弱智的解决办法: 1. 删除第三方库文件(删除到垃圾箱,而且还要在文 ...

  5. angularjs的input防抖

    在开发中,遇到一个这样的需求,使用$scope.$watch()方法监听input值的改变,然后去$resource请求,但是请求过于频繁,需要做逻辑调整.代码如下: var timeout; $sc ...

  6. 二进制文件安装安装flannel

    二进制文件安装安装flannel overlay网络简介 覆盖网络就是应用层网络,它是面向应用层的,不考虑或很少考虑网络层,物理层的问题. 详细说来,覆盖网络是指建立在另一个网络上的网络.该网络中的结 ...

  7. 虚拟机ip地址从ipv6改为ipv4相关问题

    有一次打开虚拟机时,Xshell连接不上虚拟机,就很奇怪,然后查看虚拟机的ip地址,发现显示为ipv6格式,然后总结了两种情况如下: 第一种情况: onboot为no时显示ipv6地址, 改为yes即 ...

  8. maven添加oracle驱动包

    问题描述 项目用到了oracle,但由于oracle商业版权问题,maven在中心资源库直接下载jar包是要收费的 解决方法 第一步: 下载ojdbc6.jar 第二步: 将下载的jar放入项目的li ...

  9. vue-cli3.0创建项目报npm install --loglevel error 踩坑的那把辛酸泪

    创建项目 vue create vue-pro 然后如下图 一开始以为是npm的问题,卸载了Mac的node ,安装nvm,然后再安装node (可参考: Mac中nvm的安装和使用   https: ...

  10. 分布式ID系列(2)——UUID适合做分布式ID吗

    UUID的生成策略: UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能 ...