← 全部文章

viewport 是什么?如何查看视口尺寸,以及它为何与屏幕分辨率不同

视口尺寸详解:CSS 像素与屏幕分辨率、设备像素比、布局视口与视觉视口、svh 和 dvh 单位,以及如何查看自己的视口尺寸。

viewport(视口)是浏览器用来显示网页的区域,视口尺寸就是这块区域的宽度和高度,单位是 CSS 像素。它通常比设备的屏幕分辨率小得多:一部屏幕为 1206 × 2622 像素的 iPhone,视口是 402 × 874 CSS 像素,因为每个 CSS 像素在横竖方向上各用 3 个物理像素来绘制。响应式 CSS、媒体查询和大多数布局决策依据的都是视口尺寸,而不是屏幕分辨率。

视口尺寸与屏幕分辨率的区别

描述手机屏幕的有三个数字,很容易混淆:

术语 示例(iPhone 17) 含义
屏幕分辨率 1206 × 2622 px 屏幕面板上的物理像素
设备像素比(DPR) 3 每个 CSS 像素在每个方向上对应的物理像素数
视口尺寸 402 × 874 CSS px 分辨率除以 DPR,也就是 CSS 看到的尺寸

在桌面端,DPR 通常是 1(一台 1920 × 1080 的显示器在 100% 缩放下,视口宽度为 1920 px,再减去滚动条),高密度屏幕的笔记本上则是 2。浏览器缩放也会改变 DPR:放大到 200% 时,以 CSS 像素计的视口宽度会减半。

各机型的具体数值见 iPhone 屏幕尺寸与视口对照表。

如何查看视口尺寸

在浏览器控制台中查看

打开 DevTools(F12 或 Cmd + Option + I),进入 Console 面板,运行:

`${window.innerWidth} × ${window.innerHeight} @ ${window.devicePixelRatio}x`

window.innerWidth 包含垂直滚动条。document.documentElement.clientWidth 不包含滚动条,更接近 CSS 百分比和 100% 宽度实际使用的值。

在 DevTools 设备模式中查看

设备工具栏会在页面上方显示模拟视口的尺寸。在 Responsive 模式下,可以拖动边缘或直接输入任意尺寸。参见 Chrome 手机模拟器使用指南。

在手机上查看

打开任意一个“what is my viewport”之类的网站,或者加载一个带小脚本、能显示 innerWidth 和 devicePixelRatio 的页面。注意结果会随屏幕方向和浏览器工具栏而变化。

布局视口与视觉视口

移动浏览器其实有两个视口:

  • 布局视口是 CSS 排版页面所用的区域。只要 viewport meta 标签设置正确,它的宽度就等于以 CSS 像素计的设备宽度。
  • 视觉视口是当前屏幕上可见的部分。用户双指放大或屏幕键盘弹出时,它会变小。

position: fixed 的元素是相对布局视口定位的,所以固定底栏可能被键盘挡住。在 JavaScript 中可以通过 window.visualViewport.width 和 .height 读取视觉视口,并监听它的 resize 事件。

为什么手机上的视口高度总在变化

在手机上,地址栏和工具栏会随滚动收起,可见高度因此不断变化。传统的 100vh 取的是可能的最大高度,所以过去全屏区块的底部经常被截掉。现在 CSS 为每种情况都提供了单位:

单位 含义
svh 小视口高度:浏览器工具栏完全显示时
lvh 大视口高度:工具栏完全隐藏时
dvh 动态视口高度:随工具栏移动而变化
vh 在现代移动浏览器中等同于 lvh

如果首屏区块需要在页面加载时刚好占满屏幕,min-height: 100svh 通常最稳妥。宽度方向也有对应的 svw、lvw 和 dvw。

常见视口尺寸

设备类型 常见视口宽度(竖屏)
小屏手机 320–375 px
近年的 iPhone 375–440 px
安卓手机 360–412 px
平板 744–1032 px
笔记本电脑 1280–1536 px
桌面显示器 1440–2560 px

正因为范围这么大,响应式布局才要在断点之间保持流式伸缩,而不是针对某个精确尺寸。

如何测试不同的视口尺寸

在桌面端调整窗口大小会改变视口宽度,但桌面浏览器一般只能缩到 500 px 左右,DPR 也仍是 1 或 2。要看到尺寸和像素比都正确的手机视口,可以使用 DevTools 设备模式,或 Mobile View Extension 这类手机视图扩展。它会应用设备的屏幕尺寸、像素比和 User-Agent,也支持输入自定义分辨率。完整流程见如何测试响应式设计。

常见问题

怎样知道我的视口尺寸?

在浏览器控制台运行 window.innerWidth 和 window.innerHeight。在手机上,打开一个显示这些数值的页面即可;结果会随屏幕方向变化。

视口尺寸和屏幕分辨率是一回事吗?

不是。视口尺寸以 CSS 像素计,屏幕分辨率以物理像素计。用分辨率除以设备像素比,就得到视口尺寸。

设计时应该以哪个视口尺寸为准?

做从 320 px 起就能正常显示的流式布局。然后检查常见的手机宽度 360、390–402 和 430–440 px,平板约 768–834 px,桌面约 1280–1440 px。

用手机视图查看你的下一个网站。

添加扩展,在你正在使用的标签页中直接打开设备预览。