Viewport

手机屏幕宽度通常只有 375~414px,而网页大多按更宽的桌面尺寸设计。若不加处理,手机浏览器会把整页缩小塞进屏幕,文字小到几乎没法读。Viewport(视口)正是解决“页面按多宽渲染、以什么比例缩放”的关键概念,是响应式设计的第一步。

什么是视口

视口是浏览器显示网页的可视区域。手机浏览器里存在两个视口:

  • 布局视口:页面实际排版使用的画布,默认宽约 980px,接近桌面宽度。
  • 视觉视口:用户屏幕上真正看到的那一小块区域。

两者宽度不一致时,页面被等比缩小,于是出现“文字如蚂蚁”的效果。通过 meta 标签可以让布局视口等于设备宽度,问题随之解决。

viewport meta 标签

<head> 中加入下面这一行,是所有响应式页面的标配:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

取值说明:

属性作用常用值
width设置布局视口宽度device-width(等于设备宽)
initial-scale页面初始缩放比例1.0(不缩放)
maximum-scale允许放大的上限一般省略,保留用户缩放权
user-scalable是否允许用户缩放不要设为 no,影响可访问性

加上前后的差别

假设页面有一个 960px 宽的容器:

.box { width: 960px; margin: 0 auto; }

不加 meta 时,手机按约 980px 的布局视口排版,再整体缩小呈现,文字细小、需要双击放大;加上 meta 后布局视口贴近真实屏幕宽度,配合百分比宽度与媒体查询,页面才能按手机宽度正常排版。用浏览器开发者工具的设备模拟模式即可直观对比这两种效果。

配合 CSS 一起用

meta 只是把“画布宽度”定对,真正的自适应排版要靠 CSS:百分比/弹性单位加媒体查询。手机优先的最小示例:

.box { width: 100%; }                 /* 任何屏幕都占满 */
@media (min-width: 768px) {
    .box { width: 50%; }              /* 平板及以上只占一半 */
}

效果:小屏全宽、宽屏半宽,内容随设备宽度自然伸缩。

小结

Viewport 是响应式设计的起点:在 head 里加上 width=device-width、initial-scale=1.0 的 meta,让布局视口贴合真实屏幕。没有它,后面的媒体查询、栅格与弹性图片都无从谈起。

笔记加载中…