前端面试之移动端适配篇

本文详细探讨了前端面试中移动端适配的相关知识,包括设备像素、设备无关像素、页面缩放比、DPR以及CSS像素的关系。介绍了布局视口、视觉视口、理想视口的概念及其获取方法,并提出了移动端适配的四种解决方案:viewport、rem、vm/vh和flex布局。此外,还讨论了1px问题及其解决方案,以及相关的小知识点和参考资料。
摘要由CSDN通过智能技术生成

关于像素,括号中为别名

设备像素(物理像素)

DP(Device Pixel),显示屏上的像素点,出厂即确定。

设备无关像素(设备独立像素)

DIP(Device Independent Pixel),缩放比为1时,设备独立像素也等于CSS像素(逻辑像素)。我们通过CSS和javascript代码设置的像素都是逻辑像素。在CSS规范中,长度单位可以分为两类,绝对(absolute)单位以及相对(relative)单位,px是一个相对单位,相对的是设备像素(device pixel)。显示器上的小色框就是像素。

设备无关像素与CSS像素之间的关系 —— 页面缩放比

页面缩放比 = CSS像素/设备无关像素

设备像素与设备无关像素之间的关系 —— DPR

一般情况下,

设备像素比DPR = 设备像素/设备无关像素(在某一方向上,x方向或者y方向)

缩放比为1时, 设备无关像素等于CSS像素,因此

设备像素比DPR = 设备像素/CSS像素(在某一方向上,x方向或者y方向)

缩放比为1时,iphone4下dpr=2,iphone6 plus及以后dpr=3。
以iphone6为例,iphone6的CSS像素为375px*677px,DPR是2,所以其设备像素为750px*1354px(x和y方向都乘了2)。

设备像素与CSS像素之间的关系

在PC端,CSS的1px往往等于一个设备像素。而在移动端,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同的。以iPhone为例,iPhone4之前的手机,屏幕像素密度都较低,CSS的1px等于一个设备像素。但从iPhone4开始,乔布斯提出了Retina视网膜屏的概念。此时一个CSS像素等于(dpr*页面缩放比)个设备像素。

获取DPR的方法

  1. js获取:window.devicePixelRatio

    打开控制台,输入window.devicePixelRatio。就可以看到当前设备的DPR。切换手机视图,再次输入,可以看到模拟的手机视图的DPR。
    在这里插入图片描述
    上图中,第一个是PC端dpr,第二个是iPhoneX的dpr。

  2. css媒体查询:min-device-pixel-ratio

关于视口

这部分内容中的图借用一下思否中的一篇文章:关于移动端适配,你必须知道的

布局视口(layout viewport)

布局视口就是DOM的宽度。各浏览器默认的 layout viewport宽度一般都是800,980,1024等值。

在这里插入图片描述

js获取

document.documentElement.clientWidth

document.documentElement.clientHeight

视觉视口(visual viewport)

视觉视口是可见视口,在PC端,浏览器窗口可以调整,视觉窗口等于整个浏览器的宽度,而在移动端,浏览器不能缩放,因此视觉视口即为屏幕的宽度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值