WarpPrism / Blog

Do Epic Things
51 stars 8 forks source link

移动端前端页面适配 #30

Open WarpPrism opened 7 years ago

WarpPrism commented 7 years ago

首先来了解一些基本概念:

视口 viewport

简单的理解,viewport是严格等于浏览器的窗口。在桌面浏览器中,viewport就是浏览器窗口的宽度高度。但在移动端设备上就有点复杂。分为布局视口(layout viewport) 和 视觉视口(visual viewport):

通俗的讲,布局视口 就是html最外面包裹的那个容器,我们的页面就“装”在布局视口中,可以通过document.documentElement.clientWidth获取其大小。

视觉视口 是指用户通过设备屏幕看到的区域,可以通过缩放来改变视觉视口的大小,并通过window.innerWidth获取。

viewport

缩放

缩放改变的是CSS像素的大小,放大时CSS像素增大,则一个CSS像素可以跨越更多的设备像素,视觉视口会变小。

分辨率

指屏幕像素的多少,如 MacBook Pro 2015 13inch 的分辨率为 2560 × 1600,就是指屏幕宽度是2560个像素,高度为1600个像素。同样尺寸的屏幕,分辨率越高,屏幕像素密度(PPI)越大,屏幕显示效果越清晰。

分辨率

物理像素 physical pixel

又称为设备像素,是显示设备上最小的物理部件,物理像素的密集程度决定了我们看到的图像质量。每一个物理像素都有其独立的颜色值和亮度值。

CSS像素

主要用在浏览器上,用来精确确定web页面上的内容,css像素是一种设备无关像素(DIPs),device independent pixel,在一个标准的显示密度下,1css pixel = 1 physical pixel。

DPR

Device Pixel Ratio 设备像素比,DPR = 同宽度下设备像素数量 / 设备独立像素数量。非视网膜屏的DPR一般为1,视网膜屏DPR一般大于1。在js中可以使用window.devicePixelRatio来获取设备的dpr值.

DPR

PPI/DPI

屏幕像素密度,pixels(dots) per inch,每英寸上的物理像素数量,PPI越高,像素密度越大。在PPI高到一定程度的情况下,如300PPI,人类的眼睛就无法辨认出屏幕上的像素点,这种高PPI技术称为视网膜技术或Retina技术。注意区分DPI和DIP。

rem及其他css像素单位

rem和px,pt一样是一个css单位,定义是font size of the root element,意思是根元素的字体大小,比如设置html元素的font-size: 16px;1rem = 16px; 这个单位在做css响应式设计时非常有用,你可以计算页面中所有像素相对于根字体的相对大小,然后再根据屏幕的实际大小动态改变根元素的font-size就可以做出响应式的页面了。其他css单位:

如何做移动端页面适配?

淘宝移动端解决方案: Flexible

  1. 使用Flexible实现手淘H5页面的终端适配
  2. 移动端高清、多屏适配方案
  3. 再聊移动端页面的适配