虽然 H5 的页面与 PC 的 Web 页面相比简单了不少,但让我们头痛的事情是要想尽办法让页面能适配众多不同的终端设备。下图是我们需要适配的移动端屏幕设备尺寸,看到这些数据,是不是有一种键盘敲烂的感觉。
移动端设备主要包括 Android、iOS 等手机设备。屏幕尺寸非常多,手机分辨率和大小也不尽相同,碎片化严重。
常见的移动端设备的屏幕尺寸
移动端设备 | 屏幕尺寸(英寸) | 分辨率(px) | 设备像素比(dpr) |
---|---|---|---|
iPhone 6/6S/7/8 | 4.7 | 750 ×1334 | 2.0 |
iPhone 6/7/8 plus | 5.5 | 1080 × 1920 | 3.0 |
iPhone X/XS | 5.8 | 1125 × 2436 | 3.0 |
iPhone XR | 6.1 | 828 × 1792 | 2.0 |
iPhone XS Max | 6.5 | 1242 × 2688 | 3.0 |
iPad Mini 4/2 | 7.9 | 1536 × 2048 | 1.0 |
Samsung Galaxy S10+ | 6.4 | 1440 × 3040 | 3.5 |
Samsung Galaxy S20 | 6.2(直角) | 1440 ×3200 | 3.5 |
Samsung Galaxy S20+ | 6.7 | 1440 ×3200 | 3.0 |
Samsung Galaxy S20 Ultra | 6.9 | 1440 ×3200 | 3.0 |
移动 Web 开发需注意两点
单独制作移动端页面,通常的做法是不改变原有的PC端页面,然后针对移动端单独开发出一套特定的版本。如果是移动设备,则跳转到移动端页面;如果是PC端设备,则跳转到PC端页面。
单独制作移动端页面优点
单独制作移动端页面缺点
响应式页面指的是同一页面在不同屏幕尺寸下实现不同的布局,从而使一个页面兼容不同的终端。
响应式开发主要是为了解决移动互联网浏览的问题。
响应式页面优点
响应式页面缺点
制作复杂,同时对于移动端而言,需要加载非常多的 pc 端的样式和图片等资源,影响加载速度,同时费流量。国内流量非常贵。(这也是国内纯响应式网站不多的原因。)
现今大型网站,大部分已经没有做响应式了(例如淘宝)。
我们会发现,淘宝网手机端和网页端使用的是两个域名,也就是说,不同的客户端已经不再共用一套页面布局结构了。而是区分开来做自适应。然后每次用户访问的时候它就根据客户端的类型重定向。
为什么呢?
视口(Viewport)最早是由苹果公司在推出 iPhone 手机时发明的,其目的是为了让 iPhone 的小屏幕尽可能完整显示整个网页,它是浏览器显示页面内容的屏幕区域。
视口主要包括布局视口(layout viewport)、视觉视口(visual viewport)和理想视口(ideal viewport)。视口能将大分辨率尺寸网页缩小显示在手机浏览器上,这样保证网页在手机上看起来更像在桌面浏览器中的样子。
布局视口是指网页的宽度,一般移动端浏览器都默认设置了布局视口的宽度。
当移动端浏览器展示 PC 端网页内容时,由于移动端设备屏幕比较小,布局视口不能像PC端浏览器那样完美地展示网页,网页在手机的浏览器中会出现左右滚动条,用户需要左右滑动才能查看完整的一行内容。
视觉视口是指用户正在看到的网站的区域,这个区域的宽度等同于移动设备的浏览器窗口的宽度。
理想视口是指对设备来讲最理想的视口尺寸。
理想视口下,布局视口的大小和视觉视口是一致的,这样就不需要左右滚动页面了。
为了实现理想视口,需要给移动端页面添加 <meta>
标签配置视口,在 <meta>
标签中,将 name 属性设为viewport,即可设置视口。
<meta name="viewport" content="width=device-width">
<meta>
标签常用设置参数
参数名 | 说明 |
---|---|
width | 设置视口宽度,可以设为正整数(像素)或特殊值 device-width |
height | 设置视口高度,可以设为正整数(像素)或特殊值 device-height |
initial-scale | 初始缩放比,取值范围为 0.0~10.0 |
maximum-scale | 最大缩放比,取值范围为 0.0~10.0 |
minimum-scale | 最小缩放比,取值范围为 0.0~10.0 |
user-scalable | 用户是否可以缩放,其值为 yes 或 no |
viewport-fit | 视窗填充屏幕的方式。默认值 contain,cover完全填充 |
在实际开发中,通常会将视口设置为不允许用户缩放页面、视口宽度等于设备宽度、初始缩放比为1.0,最大缩放比为1.0。
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
分辨率分为屏幕分辨率和图像分辨率。屏幕分辨率是指一个屏幕上可以显示多少信息,通常以像素(px)为单位来衡量。在同一台设备上,图片的像素点和屏幕的像素点通常是一一对应的。
屏幕分辨率 1920×1080 表示水平方向含有 1920 个像素,垂直方向含有 1080 个像素,屏幕上总共有 2 073 600个像素点。
图像分辨率5 00×200 表示这张图片在屏幕上按1:1显示时,水平方向有500个像素点(色块),垂直方向有200个像素点(色块)。
图片的分辨率越低,图片越模糊。图片的分辨率越高,图片越清晰。
物理像素又被称为设备像素,是屏幕上显示数据的最基本的点,表示相对大小。不同分辨率下相同长度的 px 元素显示会不一样,是因为像素点的个数相同情况下,不同分辨率下每个像素点对应的像素宽度不同。比如同样是 14px 大小的字,在 1366×768 显示屏下会显示的小,在 1024×768 显示屏下会相对大。也称为物理像素(设备像素),是分辨率的尺寸单位。
在不同屏幕上,CSS 像素呈现的物理尺寸一致,但 CSS 像素对应的物理像素具数不同。标准的显示密度下,1个 CSS 像素对应一个物理像素,缩放时,1个 CSS 像素对应的物理像素会减增。一般情况之下,CSS像素称为与设备无关的像素(device-independent pixel),简称DIPs。
屏幕密度是指一个设备表面上存在的像素数量,它通常以每英寸有多少像素来计算(PPI)。
设备像素(device pixel ratio)比简称为dpr,其定义了物理像素和 CSS 像素的对应关系。设备物理像素和设备独立像素比,即是指在理想布局宽度,使用多少个物理像素来渲染一个 CSS 像素。
设备像素比 = 物理像素 / CSS像素
<html>
的 font-size 来做计算。而我们的方案中使用 rem 单位,是能轻易的根据 <html>
的 font-size 计算出元素的盒模型大小。而这个特色对我们来说是特别的有益处。rem:简单来说,rem 就是相对于根元素 <html>
的 font-size 来做计算。而我们的方案中使用 rem 单位,是能轻易的根据 <html>
的 font-size 计算出元素的盒模型大小。而这个特色对我们来说是特别的有益处。