java viewport,viewport详解

java viewport,viewport详解前言这次想聊聊移动开发相关的事 是的 你没有看错 一句话就可以开始你的移动前端开发 你心里一定在想 什么话这么酷 能够瞬间带入到移动前端开发的世界 但其实它一点也不新奇 不复杂 viewport 简介没错 就是 viewport 特性 一个移动专属的 Meta 值 用于定义视口的各种行为 该特性最先由 Apple 引入 用于解决移动端的页面展示问题 后续被越来越多的厂商跟进 举个简单的例子来讲为什么会需要它 我

前言

这次想聊聊移动开发相关的事。是的,你没有看错,一句话就可以开始你的移动前端开发。

你心里一定在想,什么话这么酷,能够瞬间带入到移动前端开发的世界。

但其实它一点也不新奇,不复杂。

viewport简介

没错,就是viewport特性,一个移动专属的Meta值,用于定义视口的各种行为。

该特性最先由Apple引入,用于解决移动端的页面展示问题,后续被越来越多的厂商跟进。

举个简单的例子来讲为什么会需要它:

我们知道用户大规模使用手机等移动设备来进行网页浏览器,其实得益于智能手持设备的兴起,也就是近几年的事。(还记得不久前的几年,满大街都还是诺基亚的天下么?)

这时有一个很现实的问题摆在了厂商面前,用户并不能很好地通过手机等设备访问网页,因为屏幕太小。

layout viewport

Apple也发现了这个问题,并且适时的出现,它提出了一个方案用来解决这个问题。在iOS Safari中定义了一个viewport meta标签,用来创建一个虚拟的布局视口(layout viewport),而这个视口的分辨率接近于PC显示器,Apple将其定义为980px(其他厂商各有不同①)。

这就很好的解决了早期的页面在手机上显示的问题,由于两者之间的宽度趋近,CSS只需要像在PC上那样渲染页面就行,原有的页面结构不会被破坏。

①的描述大致如下,数值不一定持续准确,厂商可能更改,但这个绝对值其实并非特别重要:

iOS, Android基本都是: 980px

BlackBerry: 1024px

visual viewport

有了layout viewport,我们还需要一个视口用来承载它,这个视口可以简单的认为是手持设备物理屏幕的可视区域,我们称之为(视觉视口)visual viewport。这是一个比较直观的概念,因为你能看得见你的手机屏幕。

对于visual viewport,开发者一般只需要知道它的存在和概念就行,因为无法对它进行任何设置或者修改。很明显,visual viewport的尺寸不会是一个固定的值,甚至每款设备都可能不同。大致列几种常见设备的visual viewport尺寸:

iPhone4~iPhone5S: 320*480px

iPhone6~iPhone6S: 375*627px

iPhone6 Plus~iPhone6S Plus: 414*736px

以iPhone4S为例,会在其320px②的visual viewport上,创建一个宽980px的layout viewport,于是用户可以在visual viewport中拖动或者缩放网页,来获得良好的浏览效果;布局视口用来配合CSS渲染布局,当我们定义一个容器的宽度为100%时,这个容器的实际宽度是980px而不是320px,通过这种方式大部分网页就能以缩放的形式正常显示在手机屏幕上了。

②的描述大致如下:

早期移动前端开发工程师常能见到宽640px的设计稿,原因就是UI工程师以物理屏幕宽度为320px的iPhone4-iPhone5S作为参照设计;

当然,现在你还可能会见到750px和1242px尺寸的设计稿,原因当然是iPhone6的出现

当然,为了更好的适配移动端或者只为移动端设计的应用,单有布局视口和视觉视口还是不够的。

ideal viewport

我们还需要一个视口,它类似于布局视口,但宽度和视觉视口相同,这就是完美视口(ideal viewport)。

有了完美视口,用户不用缩放和拖动网页就能够很好的进行网页浏览。而完美视口也是通过viewport meta的某种设置来达到。

说了这么一大堆的东西,貌似都和viewport有关联,那么viewport到底怎么搞,请继续往下。

viewport特性

通常情况下,viewport有以下6种设置。当然厂商可能会增加一些特定的设置,比如iOS Safari7.1增加了一种在网页加载时隐藏地址栏与导航栏的设置:minimal-ui,不过随后又将之移除了。

Name

Value

Description

width

正整数或device-width

定义视口的宽度,单位为像素

height正整数或device-height

定义视口的高度,单位为像素

initial-scale

[0.0-10.0]

定义初始缩放值

minimum-scale

[0.0-10.0]

定义缩小最小比例,它必须小于或等于maximum-scale设置

maximum-scale

[0.0-10.0]

定义放大最大比例,它必须大于或等于minimum-scale设置

user-scalable

yes/no

定义是否允许用户手动缩放页面,默认值yes

width

width被用来定义layout viewport的宽度,如果不指定该属性(或者移除viewport meta标签),则layout viewport宽度为厂商默认值。如:iPhone为980px;

举个例子:

此时的layout viewport将成为ideal viewport,因为layout viewport宽度与设备视觉视口宽度一致了。

除了width之外,还有一个属性定义也能实现ideal viewport,那就是initial-scale。

height

与width类似,但实际上却不常用,因为没有太多的use case。

initial-scale

如果想页面默认以某个比例放大或者缩小然后呈现给用户,那么可以通过定义initial-scale来完成。

initial-scale用于指定页面的初始缩放比例,假定你这样定义:

那么用户将会看到2倍大小的页面内容。

在说width的时候,我们说到initial-scale也能实现ideal viewport,是的,你只需要这样做,也可以得到完美视口:

maximum-scale

在移动端,你可能会考虑用户浏览不便,然后给予用户放大页面的权利,但同时又希望是在一定范围内的放大,这时就可以使用maximum-scale来进行约束。

maximum-scale用于指定用户能够放大的比例。

假设页面的默认缩放值initial-scale是1,那么用户最终能够将页面放大到这个初始页面大小的5倍。

minimum-scale

类似maximum-scale的描述,不过minimum-scale是用来指定页面缩小比例的。

通常情况下,为了有更好地体验,不会定义该属性的值比1更小,因为那样页面将变得难以阅读。

user-scalable

如果你不想页面被放大或者缩小,通过定义user-scalable来约束用户是否可以通过手势对页面进行缩放即可。

该属性的默认值为yes,即可被缩放(如果使用默认值,该属性可以不定义);当然,如果你的应用不打算让用户拥有缩放权限,可以将该值设置为no。

使用方法如下:

结语

正如开篇所说,这既不高深也不新奇,它而仅仅是一点观念转变。

当你掌握了viewport,那么意味着你已经大致了解了移动平台与PC平台的不同,你可以更专注而细致的去解决某些平台差异问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210274.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:55
下一篇 2026年3月19日 上午7:56


相关推荐

  • mysql15 激活码【2021.7最新】

    (mysql15 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsa…

    2022年3月21日
    43
  • JAVA常用的工具类

    JAVA常用的工具类目录 1org apache commons io IOUtils2org apache commons io FileUtils3or apache commons lang StringUtils4 apache http util EntityUtils5 apache commons lang3 StringUtils6 apache

    2026年3月17日
    3
  • Landsat系列卫星介绍

    Landsat系列卫星介绍美国陆地卫星(Landsat)系列卫星是由美国航空航天局(NASA)和美国地质调查局(USGS)共同管理的。自1972年,Landsat卫星陆续发射,是美国用来探测地球资源与环境的系列地球观测卫星系统,曾称为地球资源技术卫星(ERTS)。现在中国科学院遥感与数字地球研究所主要接受、处理、存档和分发美国陆地卫星系列中的Landsat-5、Landsat-7和Landsat-8三颗卫星的数据。1.Landsat1Landsat-1卫星是美国陆地卫星的第一颗卫星,原名ETRS…

    2022年7月23日
    18
  • openclaw本地部署实践复盘 openclaw本地部署案例分享 openclaw本地部署亲测记录 openclaw本地部署实践分享 openclaw本地部署经验复盘 openc

    openclaw本地部署实践复盘 openclaw本地部署案例分享 openclaw本地部署亲测记录 openclaw本地部署实践分享 openclaw本地部署经验复盘 openc

    2026年3月16日
    2
  • 免费申请国外免费域名超详细教程

    免费申请国外免费域名超详细教程1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

    2022年6月30日
    57
  • ADB连接Android设备的三种方法

    ADB连接Android设备的三种方法https blog csdn net weixin article details 使用 adb 命令安装安卓 apk 包 1 连接设备 adbconnect 设备 IP 2 adbinstall rapk 所在路径 ADB 连接 Android 设备的三种方法 ADB 连接 Android 设备的三种方法连接方式有三种方法 一 WiFi 连接 手机 设备 IP

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号