viewport总结

我在无意中看到这样一个专题页http://action.weixin.qq.com/payact/readtemplate?t=mobile/2015/wxzfsht/index_tmpl,正好我看了一下它的代码,我看到它的图片设置的都是px单位,我就想px单位怎么做自适应呀,然后我就调整浏览器测试窗口的大小,发现完美适配,我又像是不是js动态控制窗口文档大小了,但是html上面也没有行内样式fontsize的变化,因此它并没有使用基于字体的rem方案。我当时就纳闷了,这是什么神奇的技术,如此厉害。我仔细看了一下,发现它的meta标签写的和我们平时不一样,<meta name="viewport" content="width=750, user-scalable=no, target-densitydpi=device-dpi">,意思是这个网页基于750宽的布局视口来做,浏览器根据移动设备的虚拟视口的不同去动态缩放布局视口以使两个视口保持一致。

viewport是一个浏览器级别的概念,它是存放html文档的上一级容器,从字面上理解视口,我们观看网页的窗口,这个窗口的越大,我们能够看到的内容就越多,就像大的显示器比小的显示器呈现的内容多是一个道理。PC端和移动端的viewport差别比较大,我们先从PC端的viewport入手,下面是我总结的几个关于PC端viewport的要点

  1. viewport的功能在于控制你网站html元素的大小(如果你没有对html设置宽度的情况下),viewport是html的父级容器,比如html的宽用css设置为100%,那么这个100%计算的依据就是viewport的宽度,及浏览器可视区的宽度。viewport可以限制html,但是html控制不了viewport,因此在PC端开发网页的时候我们其实并不关心viewport。
  2. PC端的viewport始终与浏览器的可视区大小一致。它会随着浏览器窗口的变大而变大,缩小而缩小,并且不能通过css去修改,viewport的大小可以通过window.innerWidth和window.innerHeight获得,整个html文档可以通过document. documentElement. offsetWidth/Height获得宽和高;
  3. PC端的CSS像素与电脑系统设置的分辨率单位保持一一对应。如果系统分辨率与物理分辨率一一对应,那么CSS单位与物理分辨率也一一对应,我们其实不用关心物理像素,只关注CSS像素即可;

只看文字可能有点不好理解,我喜欢用图片表达我所说的,

在移动端视口就稍微复杂一些。我们假设在移动端依然采用PC端的方案(下图左),视口与移动端可以去屏幕大小完全一致,那用户看到的网页内容就会非常少,用户就会拖动网页查看,体验非常的不好。由此在移动端引入了虚拟视口和布局视口。

我们可以这样理解这两个概念,布局视口是真实网页的大小,比如一张图片,虚拟视口犹如一个查看图片的窗口,这个窗口和手机屏幕的可视区一致,我们如果想看到完整的图片大小必须移动窗口与图片的距离,相当于用户对网页的缩放。在我们不对viewport进行设置的情况下,移动端会自动缩放布局视口以适应虚拟视口,避免出现滚动条。这个落地页也正是利用了浏览器自动缩放的原理,它以75px宽为基准,也就是iphone6的大小为标准制作,然后让移动端浏览器自动根据自己的虚拟视口去缩放匹配,避免了我们自己维护的麻烦。

补充一下

meta viewport 有6个属性(暂且把content中的那些东西称为一个个属性和值),如下:

width 设置layout viewport  的宽度,为一个正整数,或字符串"width-device"
initial-scale 设置页面的初始缩放值,为一个数字,可以带小数
minimum-scale 允许用户的最小缩放值,为一个数字,可以带小数
maximum-scale 允许用户的最大缩放值,为一个数字,可以带小数
height 设置layout viewport  的高度,这个属性对我们并不重要,很少使用
user-scalable 是否允许用户进行缩放,值为"no"或"yes", no 代表不允许,yes代表允许

这些属性可以同时使用,也可以单独使用或混合使用,多个属性同时使用时用逗号隔开就行了。

此外,在安卓中还支持  target-densitydpi  这个私有属性,它表示目标设备的密度等级,作用是决定css中的1px代表多少物理像素

target-densitydpi  值可以为一个数值或 high-dpi 、 medium-dpi、 low-dpi、 device-dpi 这几个字符串中的一个

特别说明的是,当 target-densitydpi=device-dpi 时, css中的1px会等于物理像素中的1px。

因为这个属性只有安卓支持,并且安卓已经决定要废弃target-densitydpi  这个属性了,所以这个属性我们要避免进行使用  。

时间: 2024-10-06 01:17:43

viewport总结的相关文章

移动端布局(viewport)方法

viewport默认有6个属性 width: 设置viewport的宽度(即之前所提及到的,浏览器的宽度详),这里可以为一个整数,又或者是字符串"width-device" initial-scale: 页面初始的缩放值,为数字,可以是小数 minimum-scale: 允许用户的最小缩放值,为数字,可以是小数 maximum-scale: 允许用户的最大缩放值,为数字,可以是小数 height: 设置viewport的高度(我们一般而言并不能用到) user-scalable: 是否

ExtJs布局之viewport

<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="stylesheet" type="text/css" href="ExtJs/

移动前端开发之viewport的深入理解

在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或响应各种不同分辨率的移动设备. 一.viewport的概念 通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览

移动web 的viewport设置注意事项的详细解释 六一快乐=-_-_

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!--对viewport的设置的meta建议写在已有的meta标签(<meta charset="UTF-8">)之后--> <!--name="viewport":说明当前meta标签是用来设置viewport的属性的,

viewport简介

Viewport的用处:手机拥有了浏览器的初期,人们并没有专门为移动设备设计页面,造成的直接结果就是,访问的页面是直接将电脑页面进行缩放,操作起来有诸多不便,viewport就是用来解决这个问题的 1.viewport的概念:移动设备上,用来显示网页的区域. 如果把移动设备的浏览器(也有可能是app中的webview) ,当做相框的话 viewport就相当于相框中的画,可能会比相框小,可能会比相框大,如果刚好一样大,那就皆大欢喜. 2.修改viewport:我们可以通过meta标签去修改vie

手机端的viewport属性

Window.devicePixelRatioThis read-only property returns the ratio of the resolution in physical pixels to the resolution in CSS pixels for the current display device. 该值为分辨率之间的比,不是直接比较像素.分辨率是指单位英寸内像素数,类似于PPI.pc端浏览器中dpr的值都为1,所以css中1px的元素在屏幕中占据1物理像素.但在手

meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1.0&quot; 解释

meta name="viewport" content="width=device-width,initial-scale=1.0" 解释 <meta name="viewport" content="width=device-width,initial-scale=1.0"> content属性值 : width:可视区域的宽度,值可为数字或关键词device-width height:同width intia

移动端Viewport &amp; 使用rem来开发移动端网站

Viewport大神 无双 的精彩解释 具体参数各型号是否支持参见: http://www.cnblogs.com/2050/p/3877280.html#commentform 摘录: 移动设备上的viewport: 设备的屏幕上能用来显示我们的网页的那一块区域 设备像素比: docment.devicePixelRatio = 物理像素 / 独立像素 在Retina屏的iphone上,devicePixelRatio的值为2,也就是说1个css像素相当于2个物理像素. 一些设备上浏览器的默认

html - &lt;meta name=&quot;viewport&quot; content=&quot;XX&quot;/&gt; 标签常见属性及说明

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" /> 在网页的<head>中增加以上这句话,可以让网页的宽度自动适应手机屏幕的宽度. 其中: width=device-width :表示宽度是设备屏幕的宽度 height=device-he

viewport

<meta name="viewport" content="" />     width [pixel_value | device-width] width 直接去设置具体数值大部分的安卓手机不支持的 但是IOS支持     user-scalable 是否允许缩放 (no||yes)         initial-scale 初始比例     minimum-scale 允许缩放的最小比例     maximum-scale 允许缩放的最大比例