# meta

# viewport

viewport也称为视口,主要是用在移动端展示的场景中。

# 三个基础的视口概念:

# - 布局视口(layout viewport)

默认情况下,在移动端的布局视口宽度为 980px(某些设备可能为 1024px),所以一个 pc 端的页面,想要在移动端展示,移动端的浏览器会将整个页面缩小到 980px 的宽度。

很明显,当元素宽度正好为 980px,则撑满页面宽度,大于 980px 则出现横向滚动条, 这个时候布局视口宽度就是980px,可以通过document.documentElement.clientWidth来获取。

viewport

# - 理想视口(ideal viewport)

理想视口和设备有关,一般为移动端物理像素/DPR 作为 css 的逻辑像素,可以通过window.screen.width来获取,比如 iphone 13promax 固定为430px

# - 视觉视口(visual viewport)

主要是用户通过手机屏幕看到的网页的区域,默认情况下也是 980px,可以通过window.innerWidth来获取,这个时候页面是进行缩放的,具体的缩放比例为理想视口/视觉视口。

# meta viewport

我们肯定不希望 980px 宽度的元素在移动端设备(比如 430px)进行缩放展示。<meta>元素可以通过viewport来设置视口和缩放,从而让页面在移动端有更好的展示效果,其实就是让布局视口和视觉视口都等于理想视口。

<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; minimum-scale=1; user-scalable=no;">

# 1) width=device-width

布局视口 === 理想视口

# 2) initial-scale=1(initial-scale=理想视口/视觉视口)

视觉视口 === 理想视口

其中缩放也会影响布局视口,一般为 width 和视觉视口宽度的最大值