两个viewports的故事-第二部分

原文链接:A tale of two viewports — part two

在这个迷你系列中,我将解释viewports和各种重要元素的宽度是如何工作的,比如说<html>元素,窗口以及屏幕。

我们将在本页讨论移动浏览器。如果你是刚刚接触移动端,我建议你首先阅读关于桌面浏览器的第一部分。这会让你在熟悉的环境中循序渐进。

移动浏览器的问题

手机浏览器与桌面浏览器的最大不同就是屏幕尺寸。对于一个基于桌面优化的网站,移动浏览器的显示效果明显不如桌面浏览器,要么缩小后文字太小无法阅读,要么放大后只能看到网站的一部分。

手机屏幕远小于桌面屏幕,最大宽度也就400px甚至更小(有些手机据称有更大的宽度,那是骗人的,或者至少给我们的是无用的信息)。

平板设备如ipad以及传闻基于webOs的惠普产品将缩小桌面与手机的差距,但也无法改变最基本的问题。因为网站也需要在移动端显示,所以我们必须让它们在小屏幕上正常显示。

最重要的问题与CSS有关,尤其视图的尺寸。如果我们一比一的复制桌面模型,CSS可能不会正常工作。

将侧边栏设置为width:10%。如果移动浏览器和桌面浏览器的工作原理相同,侧边栏至多显示40px宽,确实太窄了。你的自适应布局看上去被压扁了。

解决这个问题的方法之一就是为移动浏览器设计特殊的网站。除了你是否应该这样做的问题之外,实际的问题是只有很少的网络公司会为移动单独设计网站。

手机浏览器的供应商希望为客户提供最好的用户体验,这意味着“尽可能如桌面显示的一样”。因此必须使用一些小花招。

两个viewports

所以视图太窄而不能作为你CSS布局的基础。很明显解决方式就是让视图更宽一点,我们要将视图分为两部分:视觉视图和布局视图。

George Cummins在Stack Overflow上很好的解释了视图的基本概念,“把布局视图想象成一张无法改变大小和形状的很大的图片,你可以通过一个很小的相框来看这张图片。这个小相框的周围是不透明的材料,你只能看到相框内的图片。你从相框内看到的图片就是视觉视图。你可以拿着你的相框远离图片来看整张图片(缩小),或者离近一点只看图片的一部分(放大)。你也可以改变相框的角度,但是图片(视觉视图)的大小和尺寸不会变。”

 视觉视图是页面的一部分,如下所示。用户可以通过滚动来查看页面,或者通过缩放改变视觉视口的大小。

CSS的布局是根据布局视图计算的,所以比视觉视图更宽。

由于<html>元素首先获取布局视图的尺寸,所以CSS被编译后页面就会比手机屏幕宽。这使得你的网站和在桌面浏览器中显示的一样。

布局视图有多宽呢?不同的浏览器各有差异。Safari/980px,Opera/850px,Android Webkit/800px,IE/974px。

还有一些浏览器比较特殊:。。。

缩放

很明显,两种视图都是用CSS像素测算。当视觉视图通过缩放改变时(如果是放大,屏幕上的CSS像素会变少),布局视图的尺寸不会变。(如果变化了,你的页面会用百分比的宽度被重新计算)

理解布局视图

为了理解布局视图的尺寸,我们应该看一下页面被完全缩小后发生了什么。大多数手机浏览器默认以完全缩小模式显示页面。

关键的一点是:布局视图在缩小模式下能够完全显示在屏幕上。(此时视觉视图等于布局视图)

如下图,布局视图的宽高与完全缩小模式下的宽高是相同的。当用户放大后,这些尺寸仍然相同。

布局视图的宽度始终相同。如果你旋转手机,视觉视图会发生改变,但是浏览器会放大布局视图来适应新的方向,所以布局视图和视觉视图的宽度仍然相等。

这会对布局视图的高度产生影响,纵向模式下布局视图的高度小于实际高度。但是网页开发者不关心高度,只关心宽度。

测算布局视图

时间: 2024-10-06 01:45:41

两个viewports的故事-第二部分的相关文章

两个和尚的故事

原文引自:http://www.ndrcms.edu.cn/bbs/dispbbs.asp?boardID=3&RootID=0&ID=4668&skin=1 有二个和尚住在隔壁.所谓隔壁是:隔壁那座山.他们分别在相邻的二座山上的庙里.这二座山之间有一条溪.于是这二个和尚,每天都会在同一时间下山去溪边挑水.久而久之,他们便成为好朋友了. 就这样,时间在每天挑水中,不知不觉己经过了五年.突然有一天,左边这座山的和尚没有下山挑水,右边那座山的和尚心想:"他大概睡过头了.&qu

两个viewport的故事(第二部分)

在这个迷你系列的文章里边我将会解释viewport,以及许多重要元素的宽度是如何工作的,比如<html>元素,也包括窗口和屏幕. 这篇文章我们来聊聊关于移动浏览器的内容.如果你对移动开发完全是一个新手的话,我建议你先读一下第一篇关于桌面浏览器的文章,先在熟悉的环境中进行下热身. 移动浏览器的问题 当我们比较移动浏览器和桌面浏览器的时候,它们最显而易见的不同就是屏幕尺寸.为桌面浏览器所设计的网站在移动浏览器中显示的内容明显要少于在桌面浏览器中显示的:不管是对其进行缩放直到文字小得无法阅读,还是在

两个viewport的故事(第一部分)

原文:http://www.quirksmode.org/mobile/viewports.html 在这个迷你系列的文章里边我将会解释viewport,以及许多重要元素的宽度是如何工作的,比如<html>元素,也包括窗口和屏幕. 这篇文章是关于桌面浏览器的,其唯一的目的就是为移动浏览器中相似的讨论做个铺垫.大部分开发者凭直觉已经明白了大部分桌面浏览器中的概念.在移动端我们将会接触到相同的概念,但是会更加复杂,所以对大家已经知道的术语做个提前的讨论将会对你理解移动浏览器产生巨大的帮助. 概念:

两只蜗牛的故事

有一天,一只蜗牛妈妈生了两只小蜗牛,母亲叫它们一个是大牛,一个是小牛. 大牛天性活泼好动,而弟弟小牛却好吃懒做,但妈妈都很爱它们.一天,蜗牛妈妈告诉了一个蜗牛族流传的话:"能到达金字塔顶端的只有两种动物:一种是鹰,另一种是蜗牛,可现在也没有哪只蜗牛到达塔顶".大牛听了这句话心被触动了,它决心要去征服金字塔,要证实这个传言. 然而它偷偷地跑了出去,但它很盲目,因为它并不知道金字塔在哪里,是什么样,它拖着沉重的壳,四处游走,它看到了小鸟,就问小鸟:"小鸟,请问你知道金字塔在哪里吗

两套图标的故事

关于@2x,@x图片的问题. 1)每个软件都是要两套图标的,一套@2x,一套一般的.@2x的用来识别retian屏幕的,另外一套是用来识别一般屏幕的.少了哪一套都是不行的. 2)写代码的时候,可以直接用一般的那套图标的图标名就可以,是png的图片可以不加后缀,否则是要加图片后缀的. 3)用[UIImage imageNamed:@“picture.png”]或[UIImage imageNamed:@“picture”].

【开心一笑】小明的故事第二季

1.老师:蒸一个包子一分钟,蒸九个包子要多久? 小明:九分钟? 老师:你傻呀!你们家蒸包子一个一个蒸呀?! 小明表示不服:那我问你,吃一个馒头一分钟,吃十个馒头呢? 老师:十分钟呀!你以为我想你一样傻呀! 小明:十分钟吃十个馒头!撑死你个饭桶! 老师:...滚出去. 2.语文课上老师说:诸葛亮上知天文下知地理,精通奇门八卦,阅读的各种书籍无数. 小明:老师,有本书他肯定没看过! 老师:哦,你说说是什么书? 小明:<三国演义>! 老师:滚出去… 3.小明:老师,我以后再也不惹你生气了. 老师:这

&lt;转&gt;两个蛋蛋的故事

来自为知笔记(Wiz)

magent 两主一备 telnet 上去第二次set卡住的解决

[[email protected]_168_1_81 ~]# telnet 192.168.1.80 11311 Trying 192.168.1.80... Connected to 192.168.1.80. Escape character is '^]'. stats memcached agent v0.6 matrix 1 -> 192.168.1.79:11211, pool size 0 matrix 2 -> 192.168.1.80:11211, pool size 0

我的前端故事----欢乐大富翁( ̄︶ ̄)↗ (摇骰子+棋盘)

十一马上就要到了~~做为前端的小伙伴~活动页面必然是少不了了~那怎么吸引眼球呢?当然是玩游戏啦~这次就带来一个我为十一做的小游戏,作为活动页中的衬托~~ 那我们要做个什么样的游戏呢?先上图~ 由于实际的效果图因为是公司的活动,我就不贴出来了~这里用这个棋盘来大致说明一下效果咯~下面是游戏规则: 1,当用户看到棋盘的时候,棋子出现在上一次停留下来的位置: 2,当用户点击开始后,中间的骰子开始摇动,最后停止在服务器返回的数字前: 3,当骰子结束动画后,棋子还是移动,一步一步的向前移动,遇到四个顶点的