视口

视口(viewport)就是浏览器显示页面内容的屏幕区域。 视口可以分为布局视口、视觉视口和理想视口

layout viewport(布局视口)

一般移动设备的浏览器都默认设置了一个viewport 元标签,定义一个虚拟的layout viewport(布局视口),用于解决早期的页面在手机上显示的问题。iOS, Android基本都将这个视口分辨率设置为 980px,所以pc上的网页基本能在手机上呈现,只不过元素看上去很小,一般默认可以通过手动缩放网页。
2.png

visual viewport(视觉视口)

视觉视口是用户当前看到的区域,用户可以通过缩放操作视觉视口,同时不会影响布局视口。

3.png

当前缩放值 = 理想视口宽度 / 视觉视口宽度

ideal viewport(理想视口)

布局视口的默认宽度并不是一个理想的宽度,于是 Apple 和其他浏览器厂商引入了理想视口的概念,它对设备而言是最理想的布局视口尺寸。显示在理想视口中的网站具有最理想的宽度,用户无需进行缩放。

理想视口的值其实就是屏幕分辨率的值,它对应的像素叫做设备逻辑像素(device independent pixel, dip)。dip 和设备的物理像素无关,一个 dip在任意像素密度的设备屏幕上都占据相同的空间

视口的设置

我们可以使用视口元标签(viewport meta 标签)来进行布局视口的设置。如,理想视口的设置

  1. <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
属性 解释说明
width 宽度设置的是viewport宽度,可以设置device-width特殊值
initial-scale 初始缩放比,大于0的数字
maximum-scale 最大缩放比,大于0的数字
minimum-scale 最小缩放比,大于0的数字
user-scalable 用户是否可以缩放,yes或no(1或0)

注意:viewport 标签只对移动端浏览器有效,对 PC 端浏览器是无效的。

二倍图、三倍图

设备像素比

设备像素比 = 物理像素宽度 / 逻辑像素宽度。之所以会出现设备像素比,是因为视网膜屏(Retina)会用多个物理像素去渲染一个css像素,使画面更加细腻。
iShot2020-05-20下午08.45.51.png

常见的设备像素比:

  • 普通密度桌面显示屏:1
  • 高密度桌面显示屏(Mac Retina):2
  • 主流手机显示屏:2或3

二倍图

对于一张图片,在普通显示屏的电脑中打开是正常的(一个图片像素对应一个物理像素)。但在视网膜屏中打开这张图片,会按照逻辑分辨率来渲染,以iPhone8为例(设备像素比=2),相当于拿 4 个物理像素来渲染 1 个图片像素。在视觉上,等于拿一个2倍的放大镜去看图片,图片就会变得模糊。

所以在开发时应该用二倍图或者三倍图,来避免出现图片失真的问题。

移动web开发技术选择

  1. 单独制作移动端页面,应用
  • 流式布局(百分比布局)
  • flex弹性布局
  • less + rem + 媒体查询
  • 混合布局

2.响应式页面布局

  • 媒体查询
  • bootstarp