`
crayster
  • 浏览: 50505 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【学习笔记】viewport相关的几个概念

阅读更多
学习移动Web应用开发中。网上搜了些与下面这句代码相关的概念,特此记录。
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">


device pixel和css pixel
大致可以理解为前者是物理的,后者是逻辑的。
device pixel是设备的像素/分辨率,通过screen.width/height可以取到。
而我们为特定元素指定的width:24px,这样的像素则是css pixel。
在浏览器未缩放时(100%显示),两个像素大小相等。如果放大,则css pixel的面积会变大(比如200%时,1个css pixel包含4个device pixel)。

screen size和window size
screen size是显示屏大小。
window size是浏览器的client区大小(window.innerWidth 和window.innerHeight)。

桌面浏览器的viewport
桌面浏览器的viewport size等于window size(可视区域大小)。
就是说viewport的物理大小是确定的,所以缩放的话,viewport的css pixel size实际上是变化的。
比如下面的代码,blue元素(width:100%),继承了viewport的size;red元素(width:1200px)固定为1200 css pixel。结果blue元素在缩放时css pixel大小是变化的。
<html>
<head>
<script type="text/javascript">
function show()
{
   alert('blue.width=' + document.getElementById('blue').clientWidth);
   alert('red.width=' + document.getElementById('red').clientWidth);
}
</script>
</head>
<body>
<div id="blue" style="background-color:blue;width:100%;">
<input type="button" value="show" onclick="show();" >
</div>
<div id="red" style="background-color:red;width:1200px;">
test
</div>
</body>
</html>


移动浏览器的viewport
按照quirksmode上的说法,移动浏览器上有两种概念的viewport。一个layout viewport,一个visual viewport。visual viewport是可视区域的viewport,分横竖两种。layout viewport跟桌面版的有些类似。
移动浏览器load页面的过程,大概可以理解成:移动浏览器会先按照桌面浏览器那样,把layout布局好,然后再框上一个visual viewport供用户查看其中一部分。portrait和landscape的切换,只会导致visual viewport的变化,而layout viewport不会重新计算。
移动浏览器的layout viewport根据不同厂家而不同,不过值貌似是固定的,宽800px到1000px不等。显然这个数字比device pixel的320px要大得多,所以实际显示出来内容就很小了,但是layout的话跟desktop上的差别并不大。

meta viewport语句
可以调整layout viewport。<html>会继承此viewport的width,然后开始布局。
过程的话,貌似和桌面浏览器把宽度拉到320px之后的效果一样。
如果桌面浏览器把宽度拉到320px之后仍能够正常显示,那移动设备上应该可以正常显示吧。
sacle指的是缩放比例,即layout viewport和visual viewport的对应关系。user-scalable:用户是否可以手动缩放。

dpi
Their text will be smooth and crisp, but their bitmap images will probably not take advantage of the full screen resolution.
听起来针对不同dpi的设备,只需要处理好图片就可以了。

参考文档:
http://www.quirksmode.org/mobile/viewports.html
http://www.quirksmode.org/mobile/viewports2.html
https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics