Maison > interface Web > Tutoriel H5 > le corps du texte

HTML5移动端-viewport的详解

黄舟
Libérer: 2017-03-17 16:30:16
original
3007 Les gens l'ont consulté

移动端页面大家都遇到过 viewport 的问题。关于 viewport 的文章有很多了,推荐给大家这两篇,写得非常详细。

本文对 viewport 做一些补充

手机屏幕

手机屏幕属于硬件属性,我们无论是通过 JS 还是 meta 标签都是无法影响到它的。

  • 手机屏幕物理像素,也就是手机厂商们说的像素、分辨率、PPI这些。

安卓常见的有 720X1280 , 1080X1920 等等
iPhone 则是 iPhone5 640X1136,iPhone6 750X1334,iPhone6P 1080X1920

  • 手机屏幕逻辑像素,物理像素经过折算之后的像素数。也就是理想视口的尺寸

iPhone5 屏幕本来是 640px 宽,但是折算成了 320px
iPhone6 物理像素 750px 款,折算成 375px
iPhone6P 略微奇葩一点,物理像素实际 1080px 宽,但是系统向外暴露的确是 1242px,再折算成了 414px

screen.width/height 可以获取屏幕的逻辑像素

布局视口 layout viewport

刚才讲过的屏幕物理像素和逻辑像素,这些都是手机厂商设置好的,我们是无法设置的,重点再与接下来的两个视口,大家千万别混淆了。

layout viewport 相当于浏览器的宽度。
我们是可以通过 设置的。
默认情况下,layout viewport 一般为 980px 宽。

document.documentElement.clientWidth 可以获取 layout viewport 的宽度。

视觉视口 visual viewport

视觉视口可以看作是手机屏幕这么大的一个窗口,但是它能显示的像素个数却不是屏幕上面的这么多逻辑像素。

视觉视口不太容易理解,虽然手机屏幕的逻辑像素已经固定了,比如 iPhone5 是 320px。

但是屏幕这 320px 宽,却可以显示 980px 宽的内容,所以视觉窗口的宽度是 980px。
很多没有对移动端做适配的网页,我们用手机打开,发现网页被缩小到手机屏幕这么宽了。

重点就在于缩放,缩放让320px的屏幕能显示更多内容了。
window.innerWidth 可以获取 visual viewport 的宽度。

通过 可以设置 visual viewport 的宽度。
visual viewport 的宽度为 screen.width / initial-scale
同时,也会影响到 布局视口 的宽度,因为布局视口的宽度始终大于等于 visual layout 的宽度。

如果不设置 initial-scale ,iOS设备会自动将 visual viewport 缩放到 布局视口一样大。
Copier après la connexion

还记得默认的 布局视口 是多宽吗?

屏幕逻辑像素、布局视口、视觉视口 三者的关系

<meta name="viewport" content="width=device-width">
Copier après la connexion

将 layout viewport 的宽度设置为 屏幕宽

<meta name="viewport" content="width=640">
Copier après la connexion

将 layout viewport 宽度设置为 640px (逻辑像素,而不是物理像素)

<meta name="viewport" content="initial-scale=0.5">
Copier après la connexion

将 visual viewport 设置为 屏幕宽度的 2 倍(正确的理解是:visual viewport 的 0.5 倍是屏幕宽度,所以 visual viewport 的宽度就是屏幕的2倍了)

此时 布局视口的宽度也是 屏幕宽的2倍,而不再是默认的 980px 了

总结:

1、默认情况下 layout viewport 为 980px
2、width=x 设置布局视口,initial-scale=y 设置视觉视口
3、如果只设置 布局视口 和 视觉视口 中的一个,那么另一个也是同样的宽度
4、布局视口 的宽度始终大于等于 视觉视口
Copier après la connexion

举例 iPhone 5 上面

<meta name="viewport" content="width=600,initial-scale=0.5">
Copier après la connexion

那么视觉视口和布局视口分别是多宽呢?

最后的最后,终于到了我们耳熟能详的

<meta name="viewport" content="width=device-width,initial-scale=1.0">
Copier après la connexion

大家知道这是什么意思了吧。
layout viewport 浏览器窗口,设置为屏幕宽度。
visual viewport 也设置为屏幕宽度,不缩放,屏幕有多宽,就显示多少像素。
也就是所谓的完美视口。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!