viewport :用户网页的可视区域/视口。
手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。
设置viewport
一个常用的针对移动网页优化过的页面的viewport meta 标签大致如下:
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0,user-scalable=yes ">
宽度默认,初始缩放比例为1.0,允许用户最大缩放比例为1.0,用户可以手动缩放
width:控制 viewport 的大小,可以指定的一个值,如 600,或者特殊的值,如 device-width 为移动设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。为一个正整数,或字符串"device-width"。
height:和 width 相对应,指定高度。
initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。为一个数字,可以带小数。
maximum-scale:允许用户缩放到的最大比例。为一个数字,可以带小数
minimum-scale:允许用户缩放到的最小比例。为一个数字,可以带小数
user-scalable:用户是否可以手动缩放。值为"no"或"yes", no 代表不允许,yes代表允许
把当前的viewport宽度设置为 ideal viewport 的宽度(移动设备的屏幕宽度),只需要把width设置为width=device-width。
这些属性可以同时使用,也可以单独使用或混合使用,多个属性同时使用时用逗号隔开就行了。
此外,在安卓中还支持 target-densitydpi 这个私有属性,它表示目标设备的密度等级,作用是决定css中的1px代表多少物理像素。
target-densitydpi 值可以为一个数值或 high-dpi 、 medium-dpi、 low-dpi、 device-dpi 这几个字符串中的一个
特别说明的是,当 target-densitydpi=device-dpi 时, css中的1px会等于物理像素中的1px。
因为这个属性只有安卓支持,并且安卓已经决定要废弃 target-densitydpi 这个属性了,所以这个属性我们要避免进行使用 。
visual viewport宽度 (浏览器可视区域的宽度)
ideal viewport宽度 (理想视区/默认)
/当前缩放值
当前缩放值 = ideal viewport宽度 / visual viewport宽度
归来仍是少年