移动端适配原理与实战(share)
目录
- 目标
- 理解移动端适配原理与工程化方案、理解常用像素概念、理解视口概念
什么是适配
可以在不同屏幕的尺寸、分辨率和显示比例中,展示合适的界面内容、布局与交互。
适配方案
响应式设计(Responsive Design)
媒体查询、rem、viewport
流式布局(Fluid Layout)
百分比
固定布局(Fixed Layout):
移动端适配原理与代码案例
- 百分比
- 媒体查询
- rem
- viewport
- 搭配 webpack 方案
- 高 dpr 屏幕的 1px 实现
像素与像素之间的关系
分类
- 设备像素(device pixels)、设备分辨率、物理像素
- 硬件层面,制造的时候决定。
设备独立像素(Device Independent Pixels)、逻辑分辨率、逻辑像素、
操作系统层面,可以通过设置分辨率或放大缩小调整。
window.screen.width
css像素
- 浏览器层面,像素数量不可变,但是大小可变。
- 设备像素(device pixels)、设备分辨率、物理像素
关系
设备像素比(devicePixelRatio)由设备独立像素 除以 设备像素获得
window.devicePixelRatio
设备独立像素放大缩小的影响
- 当 dip 变大时,dpr 变小,同时 1px 所对应的 dp 变少,视觉上变小。
浏览器放大缩小的影响
- 元素的css像素数量不会改变,改变的只是每个css像素的大小。只不过每个css像素的宽度和高度变为原来的两倍。如果原本元素宽度为128个设备独立像素,那么缩放200%以后元素宽度为256个设备独立像素(css像素宽度始终是128)。
视口
布局适口(layout viewport)
document.documentElement.clientWidth
可视视口(visual viewport)
window.innerWidth;
完美视口
- 布局视口与可视视口 1:1。
由html 源标签设置
- 屏幕宽度自适应调整。网页内容将以设备屏幕的实际宽度为基准自适应调整,避免了默认的缩放行为。
- 不设置移动设备上的浏览器会以一个较大的视口宽度(通常是980像素)进行呈现网页。
当写上meta标签后,width=device-width,使css像素与设备独立像素链接了起来。iphone的像素比为2,则1CSS像素(设备独立像素占据了 2*2个物理像素)
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
在移动端中(PC端没这种情况),元素过大,会出现可视视口大于布局视口的情况。如在 375 的 iphon12中定义宽度为 500 的元素