移动端适配的基础概念

news/2024/11/15 13:40:17/文章来源:https://www.cnblogs.com/alisadream/p/18307132

一、英寸

一般用英寸描述屏幕的物理大小。如苹果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个设备独立像素,而且我们也是基于理想视口来进行布局的,所以呈现出来的页面布局在各种设备上都能大致相似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/745220.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 提权-密码搜寻

本文通过 Google 翻译 Password Hunting – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航0 前言 1 密码搜寻 – 文件名和文件内容1.1 寻找有趣的文件名 1.2 寻找有趣的字符串2 密码搜寻 – Web 文件/Con…

Bk1_Ch10_01

Chapter 10 解剖一幅图 Book_1《编程不难》 | 鸢尾花书:从加减乘除到机器学习 代码来源:https://matplotlib.org/stable/gallery/showcase/anatomy.html import matplotlib.pyplot as plt import numpy as npfrom matplotlib.patches import Circle from matplotlib.patheffe…

java八股复习指南-多线程篇

多线程 线程的实现 在 Java 中,实现多线程的主要有以下四种继承 Thread 类,重写 run() 方法; 实现 Runnable 接口,实现 run() 方法,并将 Runnable 实现类的实例作为 Thread 构造函数的参数 target; 实现 Callable 接口,实现 call() 方法,然后通过 FutureTask 包装器来创…

W外链创建抖音私信卡片教程,私信卡片跳转微信工具

W外链地址wai.cn 在数字化时代的浪潮中,私域流量的价值愈发凸显,成为企业获取用户、建立品牌忠诚度、提升转化率的关键手段。抖音,作为当下最热门的短视频社交平台之一,其用户基数庞大、互动性强,为企业私域引流提供了绝佳的舞台。而抖音私信卡片,正是私域引流中的一把利…

Gradle更换阿里云镜像源

1、下载Gradle 官网:https://gradle.org/releases/ 2、配置Gradle环境变量 3、安装目录下找到init.d文件夹 再该文件夹中创建init.gradle文件,编写一下脚本替换阿里云镜像// 阿里云仓库和源仓库地址对比:https://developer.aliyun.com/mvn/guidegradle.projectsLoaded {root…

CANXL协议解读系列 | (2)一文读懂ISO 11898-2:2024 CANXL物理层

伴随着ISO 11898-2:2024版本的更新,第三代CAN总线通信CAN XL技术迎来了它的序幕。 2024年3月22日, ISO 推出11898-2:2024版本,标志着CAN总线收发器的最高速率由CANFD行业认可的8Mbit/s提速到最高20Mbit/s(2024年5月24日ISO 11898-1 2024已发表)。20Mbit/s的传输带…

EFCore -CodeFirst模式 数据库使用SqLite

首先安装nuget包:System.Data.SQLite 和 SQLite.CodeFirst,如下二图:然后在App.config中配置数据库连接字符串: <connectionStrings><add name="StuDB" connectionString="data source=BoilerCalculator.db" providerName="System.Data.S…

log4net 在.NET Core 控制台程序中的应用(2)

简介 本文主要讲解log4net 在.NET Core控制台程序中的应用 步骤 1.安装log4net Nuget包 2.增加配置文件 3.直接调用 4.验证结果 实施 1.安装log4net Nuget包 首先,需要在你的.NET Core项目中安装log4net包。可以通过NuGet包管理器来安装。打开你的项目,然后使用以下命令安装l…

.NET开源、简单、实用的数据库文档生成工具

前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等多文档格式的导出:DBCHM。 支持的数据库 SqlServer、MySQL、Oracle、PostgreSQL、DB2、SQLite。 文档的内容都包…

记4道弱智题

今天集训模拟赛,3h,喜提110pts/400pts。 第一题:反复覆盖区间,求各点处的最小值。 上来想了差分,记录左端点等方法,越写越长。20min跳了,慌。 第二题:模拟题,ipv6压缩。 看起来不难,开始写,先去掉全0串,再去掉前导零,最后处理输出,样例全过了,我觉得能A。 第三题…

log4net 在.NET Core 控制台程序中的应用

简介 本文主要讲解log4net 在.NET Core控制台程序中的应用 步骤 1.安装log4net Nuget包 2.增加配置文件 3.增加封装的LogHelper的类 4.调用 5.验证结果 实施 1.安装log4net Nuget包 首先,需要在你的.NET Core项目中安装log4net包。可以通过NuGet包管理器来安装。打开你的项目,…

iOS开发基础116-性能监控

在iOS开发中,性能监控是确保应用流畅运行和用户体验的关键。常用的性能监控工具能够帮助开发者实时监控系统性能,检测和诊断性能问题。下面列举几款常用的iOS性能监控工具,深入解析其底层原理、优缺点。 1. Instruments Instruments 是由Apple官方提供的用于性能分析和调试的…