这次终于搞清楚移动端开发了(一)

简介: 这次终于搞清楚移动端开发了(一)

我们知道,当把我们开发的pc端页面放在移动端展示,会出现布局错误。所以我们要做移动端适配,来让页面更合适。


首先我们先来了解一些手机屏幕和像素的相关概念。


屏幕大小


指屏幕的对角线长度,单位是英寸(inch)。常见尺寸有: 3.5寸、4.7寸、5.0寸、5.5寸、6.0寸等。


备注:1英寸(inch) = 2.54厘米(cm)


网络异常,图片无法展示
|


屏幕分辨率


指屏幕在:横向、纵向上所拥有的物理像素点总数。一般表示用 n * m 表示。


例如: iPhone 6 的屏幕分辨率为 750 * 1334


  • 注意点:


  • 屏幕分辨率是一个固定值,屏幕生产出来就确定了,无法修改!!


  • 屏幕分辨率、显示分辨率是两个概念,系统设置中可以修改的是:显示分辨率。


  • 显示分辨率是设备当前所用到的物理像素点数,也可以说:屏幕分辨率 >= 显示分辨率。


常见手机分辨率


型号 分辨率(物理像素点总和)
IPhone 3G / 3GS 320 * 480
IPhone 4 / 4s 640 * 960
IPhone 5 / 5s 640 * 1136
IPhone 6 / 7 / 8 750 * 1334
IPhone 6p / 7p / 8p 1242 x 2208
IPhone X 1125 * 2436
华为 P30 1080 * 2340


屏幕密度


又称:屏幕像素密度,是指屏幕上每英寸里包含的物理像素点个数,单位是 ppi (pixels per inch),其实这里还有另一个单位 dpi(dots per inch),两个值的计算方式都一样,只是使用的场景不同。 ppi主要用来衡量屏幕,dpi 用来衡量打印机等。


网络异常,图片无法展示
|


物理像素


又称:设备像素,物理像素是一个长度单位,单位是px。


1个物理像素就是屏幕上的一个物理成像点,就是屏幕中一个微小的发光物理元器件(可简单理解为超级微小的灯泡),是屏幕能显示的最小粒度。


它由屏幕制造商决定,屏幕生产后无法修改。 例如 iPhone 6 的横向上拥有的物理像素为750、纵向上拥有的物理像素为1334 ,我们也可以用:750* 1334表示。


物理像素图示:


网络异常,图片无法展示
|


css 像素


又称: 逻辑像素,css像素是一个抽象的长度单位,单位也是px,它是为 Web 开发者创造的,用来精确的度量Web 页面上的内容大小。


我们在编写css、js、less中所使用的都是css像素。


我代码中所写的1px(css像素),到了屏幕上到底对应几个物理像素呢?是1个css像素就对应1个物理像素(“发光的灯泡”)吗?要探讨这个对应关系,就要学习接下来的新概念:设备独立像素。


设备独立像素


设备独立像素简称 DIP 或 DP(device-independent pixel),又称:屏幕密度无关像素。


引言: 在没出现【高清屏】的年代,1个css像素对应1个物理像素,但自从【高清屏】问世,二者就不再是1对1的关系了。苹果公司在2010年推出了一种新的显示标准:在屏幕尺寸不变的前提下,把更多的物理像素点压缩至一块屏幕里,这样分辨率就会更高,显示效果就会更佳细腻。苹果将这种屏幕称为:Retina 屏幕(又名:视网膜屏幕) ,与此同时推出了配备这种屏幕的划时代数码产品——iPhone4。


我们来看一个场景:


程序员写了:width = 2px,height = 2px 的盒子,若1个css像素直接对应1个物理像素,由于iPhone3G/S 与iPhone4屏幕尺寸相同,但iPhone4的屏幕能容纳下更多的物理像素点,所以iPhone4的物理像素点比iPhone3G/S小很多,那么理论上这个盒子在iPhone4屏幕上也就会比iPhone3G/S屏幕上小很多,而事实是iPhone3G/S 和 iPhone4下这个盒子是一样大的!!!,只不过 iPhone4更加细腻、清晰。如何做到的呢?这就要靠设备独立像素。


对比:iPhone3G/S 与 iPhone4的成像效果:


网络异常,图片无法展示
|


网络异常,图片无法展示
|


设备独立像素的出现,使得即使在【高清屏】下,(例如苹果的Retina屏),也可以让元素有正常的尺寸,让代码不受到设备的影响,它是设备厂商根据屏幕特性设置的,无法更改。


设备独立像素 与 物理像素关系


  • 普通屏幕下 1 个设备独立像素 对应 1 个物理像素


  • 高清屏幕下 1 个设备独立像素 对应 N 个物理像素


设备独立像素 与 css像素关系


  • 在无缩放的情况下(标准情况):1css像素 = 1设备独立像素


像素比


像素比(dpr): 单一方向上设备【物理像素】和【设备独立像素】的比例。即:dpr = 物理像素 / 设备独立像素。可以通过js获取。


window.devicePixelRatio


几款手机的屏幕像素参数,点击这里查看更多


型号 分辨率(物理像素点总和) 设备独立像素(dip或dp) 像素比(dpr)
IPhone 3GS 320 * 480 320 * 480 1
IPhone 4 / 4s 640 * 960 320 * 480 2
IPhone 5 / 5s 640 * 1136 320 * 568 2
IPhone 6 / 7 / 8 750 * 1334 375 * 667 2
IPhone 6p / 7p / 8p 1242 x 2208 414 * 736 3
IPhone X 1125 * 2436 375 * 812 3
HUAWEI P10 1080 x 1920 360 x 640 3


像素之间的关系


在不考虑缩放的情况下(理想状态下):


  • 普通屏(dpr = 1):1css像素 = 1设备独立像素 = 1物理像素


  • 高清屏(dpr = 2):1css像素 = 1设备独立像素 = 2物理像素


  • 高清屏(dpr = 3):1css像素 = 1设备独立像素 = 3物理像素


一个width为100px的盒子,那么:


1.代表100个css像素。


2.若用户不进行缩放,则对应100个设备独立像素。


3.在dpr为2的设备上,这100个css像素占据了100*2=200个物理像素(横向)。


描述一下你的屏幕:


现在以iPhone6为例,我们描述一下屏幕(横向上):


  1. 物理像素:750px


  1. 设备独立像素:375px


  1. css像素:375px


相关文章
|
2月前
|
编解码 UED 开发者
谈谈你对移动应用中的动态布局的理解。
动态布局是移动应用设计的关键,它依据设备尺寸、方向和用户需求动态调整界面,增强用户体验和适应性。布局随屏幕旋转和设备差异自动适配,保证界面清晰易用。尽管需要技术和设计投入,处理兼容性与性能问题,但动态布局降低了开发成本,确保跨设备一致性。随着移动设备多样化,动态布局的重要性将日益凸显。
28 1
|
2月前
|
JavaScript 前端开发 程序员
程序员必备技能之JS模块化,改变你的JavaScript开发方式!(一)
程序员必备技能之JS模块化,改变你的JavaScript开发方式!
|
9天前
|
前端开发 JavaScript 小程序
技术经验解读:你所不知的十二个前端组件库
技术经验解读:你所不知的十二个前端组件库
|
2月前
|
安全 网络安全 网络架构
网络开发过程详细知识点
网络开发过程详细知识点
23 0
|
2月前
|
Web App开发 JavaScript 前端开发
程序员必备技能之JS模块化,改变你的JavaScript开发方式!(二)
程序员必备技能之JS模块化,改变你的JavaScript开发方式!
|
12月前
|
移动开发 JavaScript 前端开发
探究Uniapp在移动端开发中的应用
探究Uniapp在移动端开发中的应用
152 0
|
编解码 前端开发 UED
这次终于搞清楚移动端开发了(二)
这次终于搞清楚移动端开发了(二)
|
Web App开发 JavaScript 前端开发
这次终于搞清楚移动端开发了(三)
这次终于搞清楚移动端开发了(三)
|
前端开发
前端也要学习基本的UI设计原则与实践套路
有的人可能说,我是技术研发人员,UI的事情我们团队内会有别的人去操心这个,我只管技术即可。 在一天之前,我也是这么觉得的,但是我前些日子听了字节的《给开发看的UI设计》这节课后,觉得一个前端工程师也是要具备一定的UI设计能力的。 依赖市面上的组件库已经不能让产品维持在好用的状态了,还需要将一些设计元素添加进去,才能让我们开发的作品,达到一个更好的层次,给与用户最好的体验。 你的团队可能没有UI同学,也可能有UI同学,但是不一定专业,他们经常会是外包人员,UI给出的设计稿通常只是静态文件,是某一交互切面的,很多的交互细节都体现不出来,在大厂中,许多的B端产品是没有专职UI角色的,前端可能要
|
JavaScript 前端开发 算法
react只停留在表层?五大知识点带你梳理进阶知识
那在下面的这篇文章中,将来探索关于 react 的进阶知识。
react只停留在表层?五大知识点带你梳理进阶知识