首页 > 其他分享 >移动端适配的基础概念

移动端适配的基础概念

时间:2024-07-17 14:31:14浏览次数:9  
标签:适配 分辨率 像素 概念 视口 iPhone 屏幕 移动 设备

一、英寸

一般用英寸描述屏幕的物理大小。如苹果SE 4英寸,苹果XS 6.5英寸,电脑显示器的22英寸

上面的尺寸都是屏幕对角线长度。英寸和厘米的换算:1英寸 = 2.54 厘米

二、分辨率

2.1 像素

像素即一个方块,具有特定的位置和颜色。像素可以作为图片和电子屏幕最小组成单元

 通常我们所说的分辨率有两种,屏幕分辨率和图像分辨率。

2.2 屏幕分辨率

屏幕分辨率指一个屏幕由多少个像素点组成。

iPhone XS Max 和 iPhone SE的分辨率分别为 2688 x 12421136 x 640。这表示手机分别在垂直和水平上所具有的像素点数。

当然分辨率高不代表屏幕就清晰,屏幕的清晰程度还与尺寸有关。

2.3 图像分辨率

图片分辨率指一张图片由多少个像素点组成。

比如一张图片的分辨率为800 x 400。这表示图片分别在垂直和水平上所具有的像素点数为800400。同一尺寸的图片,分辨率越高,图片越清晰。

三、设备独立像素

实际上,上面我们描述的像素都是物理像素,即设备上真实的物理单元。

设备独立像素简称DIP,与设备无关的逻辑像素,代表可以通过程序控制的虚拟像素。

一个设备独立像素里可能包含1个或者多个物理像素点,包含的越多则屏幕看起来越清晰

下面举个例子:

iPhone 3GS 和 iPhone 4/4s 的尺寸都是 3.5 寸,但 iPhone 3GS 的分辨率是 320x480,iPhone 4/4s 的分辨率是 640x960

这意味着,iPhone 3GS 有 320 个物理像素,iPhone 4/4s 有 640 个物理像素

如果我们按照真实的物理像素进行布局,比如说我们按照 320 物理像素进行布局,到了 640 物理像素的手机上就会有一半的空白,为了避免这种问题,就产生了虚拟像素单位

我们统一 iPhone 3GS 和 iPhone 4/4s 都是 320 个虚拟像素,只是在 iPhone 3GS 上,最终 1 个虚拟像素换算成 1 个物理像素,在 iphone 4s 中,1 个虚拟像素最终换算成 2 个物理像素

至于 1 个虚拟像素被换算成几个物理像素,这个数值我们称之为设备像素比,也就是下面介绍的dpr

3.1 设备像素比

设备像素比device pixel ratio简称dpr,即物理像素和设备独立像素的比值。

计算公式如下:

当设备像素比为1:1时,使用1(1×1)个设备像素显示1个CSS像素

当设备像素比为2:1时,使用4(2×2)个设备像素显示1个CSS像素

当设备像素比为3:1时,使用9(3×3)个设备像素显示1个CSS像素

3.2 移动端开发

在开发中样式单位其实都使用的设备独立像素,UI给我们的原型图一般基于ipnone6的像素给定的。

在写css时,用到最多的单位是px,即css像素。当页面缩放比例为100%时,一个css像素等于一个设备独立像素

页面的缩放系数 = CSS像素 / 设备独立像素

四、视口

视口的概念通常用于移动端。一般我们所说的视口共包括三种:布局视口、视觉视口和理想视口,它们在屏幕适配中起着非常重要的作用。

4.1 布局视口

布局视口是网页布局的基准窗口。在 PC 上,布局视口就等于当前浏览器的窗口大小;在移动端,布局视口被赋予一个默认值,以 iPhone6 为例,其布局视口的宽度为 980px。

可以通过调用 document.documentElement.clientWidth/clientHeight 来获取布局视口大小。在进行 @media 媒体查询的时候,查询的宽度值也是布局视口的宽度值。

4.2 视觉视口

视觉视口(visual viewport):用户通过屏幕真实看到的区域。

可以通过调用 window.innerWidth/innerHeight 来获取视觉视口大小

4.3 理想视口

网站页面在移动端展示的理想大小

可以通过调用windnow.screen.width / height来获取理想视口大小。

通过 meta viewport 设置布局视口

<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; minimum-scale=1; user-scalable=no;">

viewport 有以下字段可配置:

4.5 移动端适配

为了在移动端让页面获得更好的显示效果,我们必须让布局视口、视觉视口都尽可能等于理想视口。

device-width就等于理想视口的宽度,所以设置width=device-width就相当于让布局视口等于理想视口。

由于initial-scale = 理想视口宽度 / 视觉视口宽度,所以我们设置initial-scale=1;就相当于让视觉视口等于理想视口。

这时,1个CSS像素就等于1个设备独立像素,而且我们也是基于理想视口来进行布局的,所以呈现出来的页面布局在各种设备上都能大致相似。

标签:适配,分辨率,像素,概念,视口,iPhone,屏幕,移动,设备
From: https://www.cnblogs.com/alisadream/p/18307132

相关文章

  • 直播概念和流程框架(转载)
    1.直播初识热门直播产品:映客,斗鱼,熊猫,虎牙,花椒等等1.1一个完整直播app功能1.聊天私聊、聊天室、点亮、推送、黑名单等;2.礼物普通礼物、豪华礼物、红包、排行榜、第三方充值、内购、礼物动态更新、提现等;3.直播列表关注、热门、最新、分类直播用户列表等;4.自己直播录制、推......
  • 移动硬盘提示未格式化维修数据恢复
    当移动硬盘提示未格式化时,通常意味着操作系统无法正确识别或访问硬盘上的文件系统。这可能是由于多种原因引起的,包括文件系统损坏、硬盘物理损坏、分区表错误等。一、原因分析文件系统损坏:文件系统是硬盘上组织和存储数据的关键结构,如果受到病毒攻击、非法操作或系统崩溃等因素......
  • 移动硬盘不显示盘符分区丢失
    一、检查连接确保连接良好:首先,检查移动硬盘与电脑之间的USB连接线是否插紧,没有松动或损坏。可以尝试将移动硬盘连接到不同的USB端口或使用另一根USB线,以排除连接问题。二、分配盘符打开磁盘管理工具:按下Win+R组合键,输入“diskmgmt.msc”打开磁盘管理工具。分配盘符:在磁盘管理......
  • 日立爱国者移动硬盘数据恢复
    一、检查硬盘状态物理检查:首先,检查硬盘是否有物理损坏,如外壳破裂、接口松动等。如果硬盘有物理损坏,需要数据恢复。连接检查:确保硬盘已正确连接到电脑,并且电脑能够识别硬盘。如果电脑无法识别硬盘,可能需要更换数据线或尝试在其他电脑上连接。二、尝试基础恢复方法回收站恢复:如......
  • 关于三星SSD移动硬盘的维修与数据恢复
    通常涉及多个方面,包括故障诊断、硬件维修以及数据恢复等。一、故障诊断检查连接:确保SSD移动硬盘与计算机的连接是稳定的,检查数据线是否损坏或接触不良。尝试更换不同的USB端口或电脑进行测试,以排除USB接口问题。电源检查:确认移动硬盘的电源供应是否正常,特别是对于需要外接电......
  • 移动硬盘删除格式化后还能恢复出来吗
    移动硬盘删除格式化后,在一定条件下,数据是有可能恢复出来的。一、数据恢复的可能性格式化方式:格式化分为快速格式化和完全格式化。快速格式化只是删除文件系统的索引,数据本身并未被完全清除,因此恢复的可能性较大。而完全格式化则会尝试清除硬盘上的所有数据,恢复难度相对较大。新......
  • E9-控制移动建模应用页面中的提交按钮根据日期条件校验是否可提交
    背景在移动建模页面中提交表单时,有时需要根据表单上的日期字段校验是否满足提交条件,如果满足则可提交,如果不满足则不可提交本期以报餐管理场景为例:实现控制用户只能在指定的时间范围内提交报餐数据实现效果1、若当前时间不在指定的时间范围内,则提交失败;2、若当前时间在指......
  • 03各种概念
    1、BeanDefinition概念(辅助Class概念从而实现spring世界的基石)spring的世界里,把bean的信息(bean与别的bean的关系,bean自身各属性的值)封装到BeanDefinition,这样实例化bean时能更加丰富,有了BeanDefinition就不再是用newInstance方法实例化出一个个光秃秃的对象,而是把对象之间互相......
  • LVM FS NFS CIFS NAS 等存储概念解析
    存储:    LVM:存储的格式,块存储。    FS:文件系统,在LVM的创建的磁盘的基础上,安装FS,形成了文件存储。    NFS:Unix系统间实现磁盘文件共享的一种方法,支持应用程序在客户端通过网络存取位于服务器磁盘中数据的一种文件系统协议。其实它包括许多种协议,最简单的网络文......
  • 关于静态文件目录与模板引用和Nginx location块的适配设置
    项目配置文件内关于静态文件的设置项#静态文件的URL前缀STATIC_URL='/static/'#项目根目录的静态文件目录STATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),os.path.join(BASE_DIR,'parallel/static'),os.path.join(BASE_DIR,'blog/static&#......