ViewPort视口

一个典型的针对移动端优化的页面会包含类似这样的内容:

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

  maximum-scale=1.0, user-scalable=no">

  其中的name="viewport"中的viewport我们称作视口

常说的viewport-视口就是显示器显示页面内容的屏幕区域

  1.layout viewport(布局视口)

  2.visual viewport(视觉视口)

  3.ideal viewport(理想视口)

  4.css像素

  5.dip(device independent pixels)设备独立像素和CSS像素之间的关系

viewport的概念

  通俗的来说移动设备上的 viewport 就是设备的屏幕上能用来显示网页的那个区域,再具体点儿就是浏览器上或是 app 中的 webview 用来显示网页的那部分区域。

layout viewport布局视口

  一般呢,移动设备的浏览器都默认设置了一个 viewport 定义了一个虚构的布局视口,用于解决早期页面在手机上的显示问题。 ios 和 android 基本都将介个视口分辨率

  设置为 980px,所以 pc 上的网页基本可以在手机上呈现,

  只是元素看上去会比较小,并可以手动缩放页面。

  移动设备上的浏览器认为自己必须能正常显示所有的网站,无论是不是为移动设备而设计的网站。但由于移动设备的屏幕都不是很宽,如果以浏览器的可视区域作为

  viewport 的话,那些为桌面浏览器设计的网站放到移动设备

  上显示时,必然会因为移动设备的 viewport 太窄而挤作一团,甚至毁掉布局。

  

  css 中的 1px 并不一定代表屏幕上的 1px,分辨率越大,css 中 1px 代表的物理像素就会越多,分辨率比的值也越大。这很好理解,你分辨率增大了,但屏幕尺寸并没

  有变大,就必须让 css 中的 1px 渲染(塞入)更多的物理像素,才能让 1px 的东西在屏幕上的大小与那些低分辨率的设备看起来差不多,不然就会因为太小而看不清。

  所以如果把移动设备上浏览器的可视区域设为 viewport 的话,某些网站(例如左右分区的网页)就会因为 viewport 太窄而显示错乱,所以这些浏览器就决定:默认情

  况下把 viewport 设为一个较宽的值,比如 980px。这样的话即使是那些为桌面设计的网站也能在移动浏览器上正常显示了。所以也把这个 浏览器默认的 viewport

  叫做 layout viewport 。它的宽度可以通过 document.documentElement.clientWidth  来获取。

  visual viewport 视觉视口与 device pixel 设备物理像素(分辨率)

   layout viewport 的宽度是 > 浏览器可视区域的宽度的,所以我们还需要一个 viewport 来代表 浏览器可视区域的大小,这个 viewport 叫做 visual viewport。

 

  无论你是用桌面设备或是移动设备的浏览器去访问一个页面的时候,你所看到的浏览器窗口就是你的 visual viewport ,它的宽度可以通过 window.innerWidth 来获取。

  对于一个移动设备来说就是你通过浏览器看到的那部分的大小,它的计量单位为 px,设备独立像素 dip 的那个 px。这个 visual viewport 通常是可以变化的,比如你对

  屏幕进行缩放,就可以改变它的大小,或者移动屏幕的滚动条就可以改变 visual viewport 的位置。

 

  视觉视口是物理屏幕的可视区域,屏幕显示器的物理像素。相同尺寸的屏幕像素密度大的设备,硬件像素会更多。

   

  设备像素

  设备像素是物理概念,指的是设备中使用的物理像素,用 px 表示,它是一个“相对绝对单位”,即:

 

  1.在同一设备上每个设备像素所代表的物理长度是固定不变的(绝对性)

     2.但在不同设备之间每个设备像素所代表的物理长度是可以变化的(相对性)

  layout viewport 与 visual viewport 的区别与联系

  把 layout viewport 想像成为一张不会变更尺寸的大图。想像你有一个小一些的镂空框架(比如一个没放照片的相框),你通过这个框来看这张大图。类似于看望远镜 这个

  框架的周围被不透明的材料所环绕,于是掩盖了你所有的视线,只留这张大图的一部分给你。你通过这个框架所能看到的大图的部分就是 visual viewport 。你可以拿远框架

  (缩小)来看整个图片,或者可以靠近一些(放大)只看局部。你也可以移动框架的位置、改变框架的方向,但是大图(layout viewport)的大小和形状永远不会变。

  ideal viewport —— 移动设备的理想视口。

  

  ideal viewport 并没有一个固定的尺寸,不同的设备拥有不同的 ideal viewport。以 iPhone 来说,所有的非 plus 系列的 iPhone 的 ideal viewport 宽度都是 320px,也就是说,

  在非 plus 系列的 iPhone 中,css 中的 320px 就代表 iPhone 屏幕的理想宽度。

  移动设备上的 viewport 分为 layout viewport、 visual viewport 和 ideal viewport 三类,其中 ideal viewport

 

  是最适合移动设备的 viewport,它宽度 = 移动设备的屏幕宽度,只要在 css 中把某一元素的宽度设为 ideal viewport 的宽度(单位用px),那么这个元素的宽度就是设备屏幕的宽

  度了,也就是宽度为100%的效果。ideal viewport 的意义在于,无论在何种分辨率的屏幕下,那些针对 ideal viewport 而设计的网站,不需要用户手动缩放,也不需要出现横向

  滚动条,都可以完美的呈现给用户。

  

  dip

  设备独立像是跟设备的硬件像素(物理像素)无关的,一个dip在任意像素密度的设备上都占据相同的空间。

  设备的独立像素宽与物理像素宽(或者说像素分辨率)的关系可以满足这样的公式

:物理像素宽带=独立像素宽度*倍率

  CSS像素

    CSS中的1px并不代表设备的1像素

时间: 2024-12-14 14:07:23

ViewPort视口的相关文章

Meta viewport (视口元信息标签)

前几天在研究移动版开发时,意外查阅到了PPK大神的关于viewport(视口)的三篇研究文档,但无奈全是英文,只好硬着头皮看下去,并顺便试着翻译一下,以备日后回顾. 本人水平有限,如翻译错误,欢迎指正 原文地址:http://www.quirksmode.org/mobile/metaviewport/#t10 读前须知:PPK写这篇文章的时候,IPhone还没有生产出4S之后的产品.所以,这篇文章中提到的IPhone,都是指IPhone4S及之前的手机. TOP This page conta

移动前端中viewport(视口)

移动前端中常说的 viewport (视口)就是浏览器显示页面内容的屏幕区域.其中涉及几个重要概念是 dpi ( device-independent pixel 设备逻辑像素 )和 CSS 像素之间的关系. (1) layout viewport(布局视口) 一般移动设备的浏览器都默认设置了一个viewport 元标签,定义一个虚拟的layout viewport(布局视口),用于解决早期的页面在手机上显示的问题.iOS, Android基本都将这个视口分辨率设置为 980px,所以pc上的网

jmobile学习之路 ---- 视口

当我们的浏览器在窗口最大化的时候,此时屏幕的宽度,就是我们桌面的分辨率.这个规则仅仅适用于PC! 我们试图在iPhone中输出屏幕宽度,你会发现屏幕宽度是980!居然和PC屏幕差不多大! 苹果主导的这些手机厂商,为了使用户获得完整web体验(就是让用户在手机屏幕上,也能够看见完整的PC网页), 就大部分设备都会欺骗浏览器返回一个数值较大的“视口”(viewport),告诉浏览器,别以为我身子小, 但是我想以980px宽度来显示这个页面. iPhone的分辨率1136*640,三星Note3的分辨

流式布局和viewport

流式布局 百分比布局,非固定宽度,内容向两边填充,流动的布局. viewport(视口) PC端的网页在手机端的浏览器显示是不会出现网页的,这是因为移动端的网页不是直接放在移动端的浏览器中,而是放在移动端的一个虚拟区域中,这个虚拟区域叫做viewport(视觉窗口,视口,视口的宽度一般默认比浏览器宽度大),然后视口进行相应的缩放,最后将视口放在浏览器中. 适配方案 因为viewport默认会进行缩放,所以网页在移动端显示的对用户不友好,所以我们需要进行一些配置来使网页在移动端显示得和pc端一样.

HTML5-移动开发常用技巧与弹性布局的使用

一.移动开发常用技巧 Viewport基本知识 设置布局Viewport的各种信息 1.width=device-width: 设置Viewport视口宽度等于设备宽度 2.initial-scale=1: 网页默认缩放比为1(网页在手持设备上,不会进行默认缩放 3.minimum-scale=1 网页最小缩放比为1 4.maximum-scale=1 网页最小大缩放比为1 5.user-scalable=no 禁止用户手动缩放网页(ios10+ 的设备失效) 在手机站及响应式网站的制作中,网页

WorldWind源码剖析系列:相机类[未完]

PluginSDK中的相机类CameraBase是三维计算机图形学中的概念.观察者在三维场景中漫游时,通过眼睛看到的场景和相机拍摄过程非常一致.实际上,Direct3D和OpenGL都是先通过对现实世界中的场景先进行世界变换,再通过设置观察矩阵以在场景中安置一个虚拟相机,构建一个视景体来裁剪场景的可见区域,然后在通过投影变换(平行投影或透视投影),获取三维场景的“像”,最后再通过视口变换,将场景的“像”光栅化输出到二维显示屏幕上.如下图所示. 在三维地形系统中,通常定义一个虚拟相机来实现对三维场

ExtJs xtype类型介绍

自定义组件在定义的时候可以通过xtype配置为组件指定xtype短名称,此后创建对象可以通过xtype来创建自定义对象了,示例代码如下: Ext.define('MyApp.PressMeButton', { extend: 'Ext.button.Button', xtype: 'pressmebutton',//指定自定义组件的xtype text: 'Press Me' }); 基本组件: xtype Class 描述 button Ext.Button 按钮 splitbutton Ex

第三部分-----移动开发与响应式

  PART-1 移动开发常用技巧   [viewport基本知识] 设置布局viewport的各种信息: 1.width=device-width:设置viewport视口宽度等于设备宽度            2.initial-scale=1:网页默认缩放比为1(网页在手持设备上不会进行缩放)            3.minimum-scale=1:网页最小缩放比为1            4.maximum-scale=1:网页最大缩放比为1            5.user-sca

移动开发与响应式

一.移动开发常用技巧 (一)viewport基本知识 设置布局viewport的各种信息: 1.width=device-width:设置viewport视口宽度等于设备宽度 2.initial-scale=1:网页默认缩放比为1(网页在手持设备上,不会进行默认缩放) 3.minimum-scale=1网页最小缩放比为1 4.maximum-scale=1网页最大缩放比为1 5.user-scalable=no 禁止用户手动缩放网页(IOS10+ 的设备失效) 在手机站以及响应式网站的制作中,网