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

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

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


接着上一期的文章


我们来了解一些视口和缩放的相关概念。


pc端视口


在pc端,视口的默认宽度和浏览器窗口的宽度一致。在 css 标准文档中,pc端视口也被称为:初始包含块,它是所有 css 百分比宽度推算的根源,在pc端可通过如下几种方式获取宽度:


  • console.log('最干净的显示区域',document.documentElement.clientWidth);//常用


  • console.log('最干净的显示区域+滚动条',window.innerWidth);


  • console.log('最干净的显示区域+滚动条+浏览器边框',window.outerWidth);


  • console.log('与浏览器无关,当前设备显示分辨率横向的值',screen.width);


移动端视口


在移动端,浏览器厂商面临着一个比较大的问题,他们如何将数以万计甚至可以说是数以亿计的pc端网页完整的呈现在移动端设备上,并且不会出现横向滚动条呢?那就要引出移动端的三个概念:1.布局视口、2.视觉视口、3. 理想视口


布局视口


早期的时候我们这样做:pc端网页宽度一般都为:960px ~ 1024px 这个范围,就算超出了该范围,960px ~ 1024px这个区域也依然是版心的位置,浏览器厂商针对移动端设备设计了一个容器,先用这个容器去承装pc端的网页,这容器的宽度一般是980px,不同的设备可能有所差异,但相差并不大。


随后将这个容器等比例压缩到与手机等宽,这样就可以保证没有滚动条且能完整呈现页面,但是这样做依然有问题:网页内容被压缩的太小,严重影响用户体验。而且可能浏览器网页高度不够,手机会有留白。


移动端获取布局视口方式:document.documentElement.clientWidth


注意:布局视口经过压缩后,横向的宽度用css像素表达就不再是375px了,而是980px


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


视觉视口


视觉视口就是用户可见的区域,它的绝对宽度永远和设备屏幕一样宽,但是这个宽度里所包含的css像素值是变化的,例如:一般手机会将980个css像素放入视觉视口中,而ipad Pro会将1024个css像素放入视觉视口中。


移动端获取视觉视口方式:window.innerWidth,不过在Android2、Opera mini 、UC8 中无法正确获取。(一般不通过代码看视觉视口)


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


描述一下你的屏幕:


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


  • 物理像素:750px


  • 设备独立像素:375px


  • css像素:980px


理想视口标准


与屏幕(设备独立像素)等宽的布局视口,称之为理想视口,所以也可以说理想视口是一种标准:让布局视口宽度 与 屏幕等宽(设备独立像素),靠meta标签实现。


理想视口的特点:


  • 布局视口和屏幕等宽,以iPhone6为例,符合理想视口标准之后:设备独立像素:375px,布局视口宽度:375px。


  • 用户不需要缩放、滚动就能看到网站的全部内容。


  • 要为移动端设备单独设计一个移动端网站。


设置理想视口的具体方法:


<meta name="viewport" content="width=device-width" />


总结


不写meta标签(不符合理想视口标准):


  • 描述屏幕:物理像素:750px 、设备独立像素:375px、css像素:980px。


  • 优点:元素在不同设备上,呈现效果几乎一样,因都是通过布局容器等比缩放的,例如200宽的盒子:200/980。


  • 缺点:元素太小,页面文字不清楚,用户体验不好。 下面是等比缩放的效果图:即将网页放在980px的容器中,然后缩放放入不同的手机中。


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


meta标签(符合理想视口标准):


  • 描述屏幕:物理像素:750px 、设备独立像素:375px、css像素:375px。


  • 优点:


  • 页面清晰展现,内容不再小到难以观察,用户体验较好。


  • 更清晰的像素关系:布局视口 = 视觉视口 = 设备独立像素 = 375px。


  • 更清晰的dpr,即dpr = 物理像素/设备独立像素 = 物理像素/css像素。 例如:dpr=2的设备,1 * 1 css像素 = 1 * 1 设备独立像素 = 2 * 2 物理像素


  • 缺点:同一个元素,在不同屏幕(设备)上,呈现效果不一样,例如375宽的盒子: 375/375 和 375/414 (不是等比显示) 下面当我们在iphone6下设置一个375px的盒子刚好占满手机宽度。但是在iphone4下,会出现滚动条,iphone6plus下还有剩余空间。


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


  • 解决缺点:做适配。


缩放


PC 端


放大时


  • 视口变小


  • 元素的 css 像素值不变,但一个css像素所占面积变大了。


缩小时


  • 视口变大


  • 元素的 css 像素值不变,但一个css像素所占面积变小了。


移动端


放大时


  • 布局视口不变


  • 视觉视口变小


缩小时


  • 布局视口不变


  • 视觉视口变大


注意:移动端缩放不会影响页面布局,因为缩放的时候,布局视口视口没有变化,简记:移动端的缩放没有改变布局视口的任何东西!

相关文章
|
IDE Java Linux
Pycharm2022.2.3最新激活破解教程(永久激活)
pycharm破解直达:https://cloud.fynote.com/share/d/fG3ILUVAJ
29039 10
|
API
vue3 mixins
vue3 mixins
207 0
|
7月前
|
数据采集 存储 运维
无头浏览器与请求签名技术
本文分享了在面对Cloudflare防护(如Amazon网站)时,如何通过无头浏览器、请求签名技术和爬虫代理IP实现数据采集的故障排查与改进方案。首先,介绍了从常规请求失败到引入Selenium无头浏览器的过程,解决了Cookie和User-Agent检测问题。接着,通过生成请求签名绕过二次验证,并利用代理IP规避访问风险。最后,提出了架构改进方案,包括无头浏览器集群化、签名算法优化、代理池管理和多层次容错机制,以提高系统的稳定性和扩展性。示例代码展示了如何设置代理、获取Cookie并生成签名,成功采集商品信息。
206 6
无头浏览器与请求签名技术
|
11月前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
JavaScript 安全 API
构建高效后端服务:RESTful API 设计与实现
【8月更文挑战第31天】在数字化时代,一个清晰、高效且安全的后端服务是应用程序成功的关键。本文将深入探讨如何设计并实现一个遵循REST原则的API,确保服务的可扩展性和维护性。我们将从基础概念出发,逐步引入真实代码示例,展示如何利用现代技术栈创建高性能的后端服务。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和实用的技巧。
|
机器学习/深度学习 编解码 并行计算
【深度学习】多头注意力机制详解
【深度学习】多头注意力机制详解
505 1
|
存储 Ubuntu Linux
手写操作系统(3)——开发环境建立与内核架构设计
手写操作系统(3)——开发环境建立与内核架构设计
218 3
ENSP Nat地址转换(配置命令 )
ENSP Nat地址转换(配置命令 )
385 1
|
安全 Go 数据安全/隐私保护
CSRF 实验:无防御措施的 CSRF
CSRF 实验:无防御措施的 CSRF
|
XML Go Android开发
Overlay机制
Overlay机制
564 0