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

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

我们知道,当把我们开发的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月前
|
JavaScript 前端开发 算法
react只停留在表层?五大知识点带你梳理进阶知识
该文章深入探讨了React进阶主题,包括PropTypes与默认属性的使用、虚拟DOM的工作机制、Refs的高级用法、生命周期方法的详解以及CSS动画在React中的集成技巧。
|
3月前
|
开发者 C# Android开发
明白吗?Xamarin与Native的终极对决:究竟哪种开发方式更适合您的项目需求,让我们一探究竟!
【8月更文挑战第31天】随着移动应用开发的普及,开发者面临多种技术选择。本文对比了跨平台解决方案Xamarin与原生开发方式的优势与劣势。Xamarin使用C#进行跨平台开发,代码复用率高,可大幅降低开发成本;但因基于抽象层,可能影响性能。原生开发则充分利用平台特性,提供最佳用户体验,但需维护多套代码库,增加工作量。开发者应根据项目需求、团队技能和预算综合考量,选择最适合的开发方式。
110 0
|
3月前
|
前端开发 Java UED
JSF 面向组件开发究竟藏着何种奥秘?带你探寻可复用 UI 组件设计的神秘之路
【8月更文挑战第31天】在现代软件开发中,高效与可维护性至关重要。JavaServer Faces(JSF)框架通过其面向组件的开发模式,提供了构建复杂用户界面的强大工具,特别适用于设计可复用的 UI 组件。通过合理设计组件的功能与外观,可以显著提高开发效率并降低维护成本。本文以一个具体的 `MessageComponent` 示例展示了如何创建可复用的 JSF 组件,并介绍了如何在 JSF 页面中使用这些组件。结合其他技术如 PrimeFaces 和 Bootstrap,可以进一步丰富组件库,提升用户体验。
55 0
|
3月前
|
自然语言处理 前端开发 JavaScript
前端进阶必读:JS闭包深度解析,掌握这一特性,你的代码将焕然一新!
【8月更文挑战第23天】闭包是JavaScript的一项高级功能,让函数能够访问和操作外部函数作用域中的变量。本文深入解析闭包概念、组成及应用场景。闭包由函数及其词法环境构成,通过在一个函数内定义另一个函数来创建。它有助于封装私有变量、维持状态和动态生成函数。然而,不当使用闭包可能导致内存泄漏或性能问题。掌握闭包对于实现模块化代码和成为优秀前端开发者至关重要。
40 0
|
6月前
|
存储 Web App开发 运维
发布、部署,傻傻分不清楚?从概念到实际场景,再到工具应用,一篇文章让你彻底搞清楚
部署和发布是软件工程中经常互换使用的两个术语,甚至感觉是等价的。然而,它们是不同的! • 部署是将软件从一个受控环境转移到另一个受控环境,它的目的是将软件从开发状态转化为生产状态,使得软件可以为用户提供服务。 • 发布是将软件推向用户的过程,应用程序需要多次更新、安全补丁和代码更改,跨平台和环境部署需要对版本进行适当的管理,有一定的计划性和管控因素。
1481 1
|
移动开发 JavaScript 前端开发
探究Uniapp在移动端开发中的应用
探究Uniapp在移动端开发中的应用
197 0
|
Android开发
虚拟框架你了解多少?如今市面上能用的框架总汇!来了解了解!
什么是虚拟框架? 框架(Xposed Framework)是一套开源的、在Android高权限模式下运行的框架服务,可以在不修改APK文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。
1840 0
|
编解码 前端开发 UED
这次终于搞清楚移动端开发了(二)
这次终于搞清楚移动端开发了(二)
|
Web App开发 JavaScript 前端开发
这次终于搞清楚移动端开发了(三)
这次终于搞清楚移动端开发了(三)
|
存储 编解码 前端开发
聊一聊前端开发中既熟悉又陌生的图片
聊一聊前端开发中既熟悉又陌生的图片
370 0
聊一聊前端开发中既熟悉又陌生的图片