设备像素,CSS像素,设备独立像素
1.概念
设备像素(device pixel)简写DP
设备像素又称 **物理像素** ,是设备能控制显示的最小单位,我们可以把它看做显示器上的一个点。我们常说的 1920x1080像素分辨率就是用的设备像素单位。
css像素(css pixel)
css像素是 **web编程的概念** ,它是 **抽象的** ,实际上 **不存在** 。用于逻辑上衡量像素的单位。也就是我们做网页时用到的css像素单位。
设备独立像素(Device Independent Pixel)简写DIP
设备独立像素也叫 密度无关像素 ,可以认为是计算机坐标系统中的一个点,这个点表示一个可以由程序使用并控制的虚拟像素,可以由相关系统转换为物理像素。设备独立像素是一个整体概念,包括了css像素,比如:css像素,只是在android 机中,css像素不叫 “css像素了”,而叫“设备独立像素”。
2.关系
因为设备独立像素是包含了css像素的大类,所以我们这里只讨论 设备像素 和 设备独立像素 的关系
- PC端
1个设备独立像素等于1个设备像素(在100% 未缩放的情况下),如果缩放到200%,则1个设备独立像素等于2个设备像素 - 移动端
根据设备不同,有很大差异
在详细阐述设备像素和独立设备像素 的关系前我们先了解两个概念,ppi 和dpr
PPI 像素密度(pixel per inch)
PPI翻译过来就是每英寸有多少个像素点(这里的像素指的是设备像素,既物理像素),说的直白点PPI就是**像素密度** pixel density),PPI的值越高,画质越好,看起来更有逼格。那么PPI是怎么计算出来的呢,看公式
计算公式:
我们不妨用上面的公式做做数学题,见下图:
下面我们来计算一下 iphone6 plus 的ppi;
var ppi = sqrt(1920X1920+1080X1080)/5.5; 计算结果ppi 为 400.528576,实际上会有出入,但这没关系。
好了我们还是回到上面的问题:两者(设备像素和设备独立像素)是如何进行换算的?它们是通过设备像素比(dpr,device pixel ratio)来进行换算的。那么什么是设备像素比呢?
DPR (device pixel ratio) 设备像素比
1.设备像素比定义了设备像素和设备独立像素的转换关系(告诉你一个设备像素对应多少个独立设备像素(既css像素)),计算式为:
在javascript中,可以通过window.devicePixelRatio获取到当前设备的dpr。在css中,可以通过-webkit-device-pixel-ratio,webkit-min-device-pixel-ratio和-webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配(这里只针对webkit内核的浏览器和webview)。
2.设备像素的大小是固定的,是不可变的。而设备独立像素是可以被拉长或压缩的。这个该怎么理解呢看图。
下面我们来看个现实中的例子,Iphone 5s 使用的是 Retina 视网膜屏幕,什么是Retina视网膜屏幕?PPI 值超过 300 的叫做超高密度屏幕,只是 Apple 给它换了个高大尚的名称:Retina 视网膜屏幕而已。
在做移动页面开发的时候,相信你经常会遇到这种情况:在不同的手机上看时,里面的图片、文字或者线的大小会不一样,有时候大小区别还非常地大。原因就是刚才说到的设备像素比在作怪。
你想啊,如果在普通屏即标准 PPI下一个设备光点对应一个 CSS 像素时,页面不大不小,完美地渲染出来了。但在现在这个高逼格的年代,标准 PPI 已经很少见了。更多的是 Retina视网膜设备。而设备像素比不同的品牌的手机这个值也是不一样的。即使是同一个品牌的手机也不一样。你比如 Iphone 5s 设备像素比为2,Iphone 6s 设备像素比为3。至于安卓机中的设备像素比就更多了,有1.3、1.5、2、3等等。
3.设备像素和独立设备像素的关系(实例)
已iphone6 为例:
设备宽高为375×667,可以理解为设备独立像素(或css像素)。
dpr为2,根据上面的计算公式,其物理像素就应该×2,为750×1334。
上图中可以看出,对于这样的css样式:
width: 2px;
height: 2px;
在不同的屏幕上(普通屏幕 vs retina屏幕),css像素所呈现的大小(物理尺寸)是一致的,不同的是1个css像素所对应的物理像素个数是不一致的。
在普通屏幕下,1个css像素 对应 1个物理像素(1:1)。 在retina 屏幕下,1个css像素对应 4个物理像素(1:4)。
4.设备像素与CSS像素之间的换算是如何产生
设备像素与CSS像素之间的换算是如何产生的呢?,这就要谈到ppi 和 dpr,以上计算出ppi是为了得到密度分界,获得默认缩放比例,即设备像素比。
由上图可知,ppi在120-160之间的手机被归为低密度手机,160-240被归为中密度,240-320被归为高密度,320以上被归为超高密度(Apple给了它一个高大上的名字——Retina)。
获得设备像素比后,便可得知设备像素与CSS像素之间的比例。当这个比率为1:1时,使用1个设备像素显示1个CSS像素。当这个比率为2:1时,使用4个设备像素显示1个CSS像素,当这个比率为3:1时,使用9(3*3)个设备像素显示1个CSS像素。
设备像素,CSS像素,设备独立像素的更多相关文章
- CSS布局基础之一设备像素,设备独立像素,设备像素比,css像素之间的关系
设备像素dp(device pixels) ppi(pixels per inch)表示每英寸所拥有的像素(pixel)数目,数值越高,代表屏幕能以更高的密度显示图像. 计算公式:ppi=像素数量/物 ...
- 设备像素,设备独立像素,CSS像素
之前学了移动端的开发对设备像素.设备独立像素.CSS像素弄得不太清楚,所以趁周末的时间查了一下,稍加整理 一些概念 在进行具体的分析之前,首先得知道下面这些关键性基本概念. CSS像素 CSS像素是W ...
- CSS像素、设备独立像素、设备像素之间关系
CSS像素.设备独立像素.设备像素,三者联系紧密又有很大的区别,而我们主要是在做移动端开发的时候需要更多地用到这些概念,那他们分别是指什么呢? 概念 CSS像素(CSS Pixel):适用于web编程 ...
- 理解设备像素、设备独立像素、css像素、viewport
设备像素也叫物理像素. 设备像素指的是显示器上的真实像素,每个像素的大小是屏幕固有的属性,屏幕出厂以后就不会改变了. 设备分辨率描述的就是这个显示器的宽和高分别是多少个设备像素. 设备像素和设备分辨率 ...
- Win2D 官方文章系列翻译 - DPI (每英寸点数)和 DIPs(设备独立像素)
本文为个人博客备份文章,原文地址: http://validvoid.net/win2d-dpi-dips/ 本文旨在解释物理像素与设备独立像素(DIPs, device independent pi ...
- 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...
- Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...
- 物理像素[设备像素] & 逻辑像素[CSS像素];
为什么移动端CSS里面写了1px,实际上看起来比1px粗 了解设备物理像素和逻辑像素的同学应该很容易理解,其实这两个px的含义其实是不一样的, UI设计师要求的1px是指设备的物理像素1px,而CSS ...
- 移动端1px像素解决方式,从1px像素问题剖析像素及viewport
在移动端web开发过程中,如果你对边框设置border:1px,会发现,边框在某些手机机型上面显示的1px比实际感觉会变粗,这也就是1像素问题.如下图是对桌面浏览器和移动端border设置1px的比较 ...
随机推荐
- MySQL:Win10系统中设置默认编码为UTF-8
Win10 系统下 Mysql 字符集(utf8)的设置 补充: 在[mysqld]下添加语句:init_connect='SET collation_connection = utf8_unicod ...
- 面向对象编程(C++篇1)——引言
目录 1. 概述 2. 详论 2.1. 类与对象 2.2. 数据类型 3. 目录 1. 概述 现代C++与最原始的版本已经差不多是两种不同的语言了.不断发展的C++标准给C++这门语言带来了更多的范式 ...
- RENIX软件连接机箱测试RTSM基本操作——网络测试仪实操
本文主要介绍了RENIX软件RTSM功能连接机箱测试的基本操作.文章分为三部分内容,第一部分为RTSM功能简介,第二部分为RTSM原理简介,第三部分为RTSM测试方案的具体介绍. 第一部分.RTSM功 ...
- laravel 5.6 API 接口开发限制接口访问频率
在laravel 5.6及以上版本中框架中已自带ThrottleRequests,但是为了更好的处理消息,我们可以再新加一个中间件,来更方便的处理相应信息 第一步: php artisan make: ...
- tp5 商城商品模型删除
1:控制器代码 public function delete($id) { //验证id是否正确 $id if (!intval($id)) { return getJsonData(10010, ' ...
- tp 5 实现邮件发送
参考博客: https://www.cnblogs.com/ccdr/p/14751548.htmlhttps://www.cnblogs.com/ccdr/p/14751548.html 1:qq邮 ...
- 新的ASP.NET Core 迁移指南
最近在微信里做了一个调查: Web Forms应用程序升级到.NET 6, 收到550份调查,调查还在继续,欢迎参与调查.可以访问链接:https://wj.qq.com/s2/9822949/ac3 ...
- vue3-关于$props,$parents等引用元素和组件的注意事项
同一个组件内可以使用,但是在不同的组件内,不要用$parents或$refs来访问另一个组件内的数据, 这会使代码的耦合性变高,同时也会让代码的可读性变差, 在不同组件访问数据时,使用props等来传 ...
- Golang 基础之基础语法梳理 (三)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...
- 保姆级SpringBoot+Vue图片上传到阿里云OSS教程
小二是新来的实习生,作为技术 leader,我给他安排了一个非常简单的练手任务,把前端 markdown 编辑器里上传的图片保存到服务器端,结果他真的就把图片直接保存到了服务器上,这下可把我气坏了,就 ...