设备物理像素、设备独立像素

news/2024/7/2 23:21:45

视觉稿

在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿

对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点:

首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667)。
对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对iphone6而言:原先的375×667,就会变成750×1334)。

问题:

对于dpr=2的手机,为什么画布大小×2,就可以解决高清问题?
对于2倍大小的视觉稿,在具体的css编码中如何还原每一个区块的真实宽高(也就是布局问题)?

带着问题,往下看…
一些概念

在进行具体的分析之前,首先得知道下面这些关键性基本概念(术语)。

物理像素(physical pixel)

一个物理像素是显示器(手机屏幕)上最小的物理显示单元,在操作系统的调度下,每一个设备像素都有自己的颜色值和亮度值。

设备独立像素(density-independent pixel)

设备独立像素(也叫密度无关像素),可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: css像素),然后由相关系统转换为物理像素。

所以说,物理像素和设备独立像素之间存在着一定的对应关系,这就是接下来要说的设备像素比。
设备像素比(device pixel ratio )

设备像素比(简称dpr)定义了物理像素和设备独立像素的对应关系,它的值可以按如下的公式的得到:

设备像素比 = 物理像素 / 设备独立像素 // 在某一方向上,x方向或者y方向

在javascript中,可以通过window.devicePixelRatio获取到当前设备的dpr

在css中,可以通过-webkit-device-pixel-ratio-webkit-min-device-pixel-ratio
-webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配(这里只针对webkit内核的浏览器和webview)。

综合上面几个概念,一起举例说明下:

以iphone6为例

设备宽高为375×667,可以理解为设备独立像素(或css像素)
dpr为2,根据上面的计算公式,其物理像素就应该×2,为750×1334

用一张图来表现,就是这样(盗图):

clipboard.png
上图中可以看出,对于这样的css样式:

width: 2px;
height: 2px;

在不同的屏幕上(普通屏幕 vs retina屏幕),css像素所呈现的大小(物理尺寸)是一致的,不同的是1个css像素所对应的物理像素个数是不一致的。

在普通屏幕下,1个css像素 对应 1个物理像素(1:1)。 在retina 屏幕下,1个css像素对应 4个物理像素(1:4)。

参考http://www.html-js.com/articl...


http://lihuaxi.xjx100.cn/news/253206.html

相关文章

Delphi中使用IXMLHTTPRequest如何用POST方式提交带参

http://blog.sina.com.cn/s/blog_51a71c010100gbua.html说明:服务器端为JAVA,编码UTF-8,返回数据编码UTF-8;数据交换格式JSON。procedure TloginForm.loginBtnClick(Sender: TObject);var jo: ISuperObject; //JSON接口 req: IX…

Parallels 将扩展桌面平台产品,以进一步改善在 Mac 上运行 Windows 的用户体验和工作效率

Parallels Desktop for Mac 专为最新的 Apple 硬件和最新版 macOS 13 Ventura 设计,改进了基于 ARM 运行的 Windows 11 的兼容性并始终保持最新状态,让用户能够不间断地完成更多工作。 美国华盛顿州贝尔维尤市,2022 年 8 月 9 日 — Parallel…

json的序列化与反序列化

json 是一种轻量级的数据交换格式,也是完全独立于任何程序语言的文本格式。 本文介绍json字符串的序列化与反序列化问题。 序列化 是指将变量(对象)从内存中变成可存储或可传输的过程。反序列化 是指将变量内容从序列化的对象重新读到内存里…

websecurity - Web Security Testing Framework 超级牛B扫描器

Windows – Websecurify 0.3.exehttp://websecurify.googlecode.com/files/Websecurify%200.3.exeLinux – Websecurify 0.3.tgzhttp://websecurify.googlecode.com/files/Websecurify%200.3.tgzMac – Websecurify 0.3.dmghttp://websecurify.googlecode.com/files/Websecurif…

oracel 不为null 保存空字符串

2019独角兽企业重金招聘Python工程师标准>>> // oracle里面不为 null 就不能保存进入 "",必须加上一个空格才可以的。 hrEffPfmcePlaneePo.setGoal("");//不可以保存的。oracle 比较严谨很mysql 不一样 hrEffPfmcePlaneePo.setGoal(…

利用反作用力,减负减压轻松快乐学习

女儿自从上了小学后,很不适应,原本无忧无虑的她就像变了个人似的,一个星期至少要哭三四次,害怕迟到要哭,作业不会做要哭,作业来不及做也要哭。学校里每个星期都要考三次以上试,考完还要排名&…

【第16周复盘】学习的飞轮

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档&…

破解校园数字安全难点,联想推出智慧教育安全体系

“教育数字化”的语境下,校园一直是网络侵害、勒索病毒、信息泄露的重灾区。2022年1月,“coffee”新型勒索病毒恶意攻击国内高校和研究所;4月,西北工业大学受到境外黑客针对师生邮件数据和个人信息的攻击。 数字化教育推动教学高…