viewport并非只是ios上的独有属性,在android、winphone上同样也有viewport。它们要解决的问题是相同的,即无视设备的真实分辨率,直接通过dpi,在物理尺寸和浏览器之间重设分辨率,这个分辨率和设备的分辨率无关。比如,你拿个3.5寸-320 * 480的iphone3 gs、3.5寸-640 * 960的iphone4或者9.7寸-1024*768的ipad2,虽然设备的分辨率不同,物理尺寸也不同,但你可以通过设置viewport让它们在浏览器里有相同的分辨率。比如说,你的网站是800px宽,你可以通过设置viewport的width=800,来让你的网站在这三个不同的设备上都刚好满屏显示你的网站。
以上的知识,相信每个对viewport稍有了解的同学应该都已经了解了。这不是我今天想说的重点。我想说明的是viewport在ios和android上的一些差异表现。
网上一搜关于viewport的知识,基本上全都是如下信息:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
这段代码的意思是,让viewport的宽度等于物理设备上的真实分辨率,不允许用户缩放。一都主流的web app都是这么设置的,它的作用其实是故意舍弃viewport,不缩放页面,这样dpi肯定和设备上的真实分辨率是一样的,不做任何缩放,网页会因此显得更高细腻。玩ps的同学应该都知道,当你将一张1000 * 1000的图片直接缩放至500 * 500分变成什么样,对吧?图片的失真一定逃不掉。
但我要做的一个应用却恰恰相反,需要利用viewport,利用缩放。不论真实分辨率是多少,无论物理尺寸是多少,我都希望在浏览器里,能有统一的分辨率,同时也不允许用户缩放。我用来测试的设备有:iphone4、ipad2、htc的g11、不知道什么厂商的aquos phone(android系统)、华硕的android pad、dell的winphone然后我一路遇到了如下问题:
1)如果不显示地设置viewport,那么width的默认为980。如果页面的所有元素宽度都小于980,此时width为980,如果页面最宽的位置超过980,那么width等于最大宽度。总之,默认能将整个页面从左到右显示出来。如果设置了viewport,比如,只单纯地设置了user-scalable=no,例如<meta name="viewport" content="user-scalable=no" />,那么ios下width还是按980显示(即默认就会通过dpi缩放),但android和winphone下却不会再缩放了,浏览器分辨率和真实设置分辨率一致。
2)对于ios设备,设置width可以生效,但对于android,设置width并不会生效。ios设备,缩放的比率即dpi是通过你设置的width和设置真实分辨率自动计算的,而android下你设置width无效,你能设置的是一个特殊的字段target-densitydpi,关于target-densitydpi可以参考一下这篇文章:http://hi.baidu.com/j_fo/blog/item/748361279ebccd18908f9d7d.html。也就是说,有三个变量:浏览器width、设备真实width、dpi。 我们简单地用个公式来表达它们之间的关系吧(并非真实关系,简单说明用) 设备真实width * dpi = 浏览器width,这里的三个变量,设备真实width是个我们不能操作的已知值,另外两个变量我们可以设置一个来影响另一个,在ios中,我们能改的是浏览器width,dpi自动生成,而在android中,我们能改的是dpi,浏览器width自动生成。对于android,无论我们如何设置width,也不会对浏览器width产生影响。
ps:这里我另外再说一个奇怪的问题:在htc的g11里(htc的手机我只有这一个,别的没有测),如果设置了dpi而不显示地设置width,则user-scalable=no不生效,即是说:<meta name="viewport" content="target-densitydpi=300,user-scalable=no" />,无法阻止用户缩放屏幕。我们需要显示地设置一下width值,仅管这个值对android下的浏览器分辨屏并不产生任何影响(对ios还是会产生影响的),我们仍然要设置它,而且这个值一定要大于320,如果小于等于320,也无法使user-scalable=no生效。这个问题只在htc的g11手机上出现,在aquos phone没有这个问题。兼容android真是件头痛的事 @_@,未来还不知道有多少坑呢。而在winphone上,结果就更奇怪了:我给viewport的width设一个大于480的值,user-scalable=no就失效了,而设一个小于480的值,user-scalable=no能生效。但无论我给viewport的width设多少值,对winphone真正显示的width却并不产生我预期的影响,通过target-densitydpi也没有影响。设置width,如果小于480的话,屏幕会缩放,但缩小的比例却和我预期完全不一样,我不知道它是按照什么规律缩放的。不知道这是winphone的问题,还是dell实现的问题。
3)这一条和上一条应该是直接相关的:ios设备在横竖屏时,会自动调整dpi,无论横屏还是竖屏,都能保证浏览器width等于viewport中设置的值,所以横竖屏的时候,页面里显示的内容的大小是会自动缩放产生变化的。而android手机在横竖屏的时候,不会改变dpi,在横竖屏的时候,网页不会产生缩放。也正因此,ios可以保证横竖屏页面都不会产生滚动条,满屏显示,而android却无法保证这一点,横着满屏则竖着无法满屏,反之亦然。
4)对于ios设备,如果width显示定义了,而页面最宽的位置超过width的话,width无效,仍按最宽的宽度来显示(不会有滚动条)。但此时会出现一个很奇怪的问题,当你将手机横竖屏切换几次之后,会发现你的页面自动放大了,出现了滚动条,但其实放大后的宽度其实和你设的width也并没有关系。为了防止这种情况出现,你需要将width的宽度设置得比页面最宽的地方更大,或者相同。
相关推荐
### 自学手机网站开发教程:手机网页设计与制作 随着移动互联网技术的飞速发展以及智能手机的普及,越来越多的人选择通过手机上网。由此,“哪里有人群,哪里就有发展”的趋势愈发明显,促使互联网产业逐渐向移动端...
网页设计是将创意、技术与用户体验融合的艺术,它涵盖了从页面布局到交互设计,再到前端代码实现等多个方面。本资源“网页设计的基本概念的光盘”深入浅出地介绍了这一领域的核心知识,帮助初学者从零开始理解网页...
网页设计基本框架是构建网页的一种标准化模板,它包含了一系列预设的CSS样式和布局结构,旨在简化网页开发过程,提高工作效率。这样的框架通常包括网格系统、响应式设计、导航栏、按钮、表单元素等常见组件,使得...
【描述】:“wap手机网页设计,从零开始教你如何制作手机网页” 设计WAP手机网页涉及多个关键步骤和技术。首先,你需要理解WAP的基本架构和工作原理,包括WAP Gateway、WAP浏览器以及WML(Wireless Markup Language...
【标题】"手机壳在线DIY设计前端页面"是一个基于Web技术实现的用户自定义手机壳设计的应用。这个项目仅包含前端代码,不涉及后端处理,因此它的核心在于为用户提供一个直观、易用的界面,让他们能够自由地在手机壳...
### 手机页面设计及编写的建议规则 随着移动互联网技术的发展与普及,越来越多的人开始通过智能手机访问网页,这也使得手机页面的设计与编写变得尤为重要。本文将基于提供的内容概述几个关键知识点,帮助开发者更好...
HTML模板是网页设计中常见的一种资源,用于快速构建和定制网站或手机应用的用户界面。在本案例中,"手机APP注册页面html模板" 是专为创建手机应用程序注册页面而设计的一个模板,它利用了CSS3(层叠样式表第三版)的...
每个CSS文件可能针对特定的页面或页面元素,例如,style3之最.css可能是用于“植物之最”页面的特殊样式,而style.css通常作为全局样式表,包含应用于整个网站的基本样式规则。 1. **HTML基础知识**:HTML由一系列...
响应式设计是现代网页设计的标准,确保网页在不同设备(手机、平板、电脑)上都能正常显示和操作。篮球主题的网页设计也需要考虑这一点,确保无论用户在何种设备上访问,都能获得一致的浏览体验。 此外,网页的加载...
在"海的女儿"网页设计中,HTML将用于创建如标题、段落、图像、链接等基本元素,构建网页的基本框架。 2. CSS美化:CSS(Cascading Style Sheets)用于控制网页的外观和布局。通过CSS,我们可以定义字体、颜色、间距...
这个“大学生web网页制作设计期末大作业【6个页面+多元素组合】”项目,旨在检验学生的网页设计与开发能力,同时也体现了他们对网页布局、交互设计以及多媒体整合的理解。 首先,我们关注的是网页设计的基本组成...
这些主题均旨在帮助学生理解和掌握基本的网页设计技能,并能够完成高质量的期末项目。 #### 二、项目特点 - **多主题支持**:项目提供了丰富的主题选择,使得学生可以根据自己的兴趣或课程需求挑选合适的主题来...
2. **信息架构**:设计网页的层次结构,规划页面间的链接关系,以便用户能方便地找到所需信息。 3. **界面设计**:考虑色彩搭配、字体选择、按钮和图标的设计,确保整体视觉效果与品牌一致,同时提升用户体验。 4....
在"最基本的网页设计展示"中,我们将深入探讨这个领域的基础知识,帮助初学者轻松理解网页的基本原理。 首先,我们要理解网页的基本结构。一个网页通常由HTML(超文本标记语言)编写,它是网页内容的基础。HTML通过...
网页设计器中的组件代表了网页的基本元素,如按钮、图片、文本框、表单等。用户可以通过拖拽这些组件到工作区,然后调整它们的大小、位置和属性,实现快速布局。这种方式大大降低了网页制作的门槛,使得设计过程更...
1. **页面结构规划**:一个有效的网页设计需要有明确的导航结构,通常包括首页、产品介绍、关于我们、联系我们等基本页面。每个页面都应该有清晰的标题和内容,便于用户理解和浏览。 2. **响应式设计**:考虑到不同...
首先,我们要理解网页设计的基本概念。网页设计是指通过HTML、CSS和JavaScript等技术,创建和维护具有视觉吸引力和功能性的网站。HTML(超文本标记语言)负责构建网页内容的结构,CSS(层叠样式表)用于定义页面的...
在网页设计中,HTML(超文本标记语言)是构建网页结构的基础,CSS(层叠样式表)则负责页面的样式和布局。Dreamweaver提供了一个内置的CSS设计工具,用户可以通过直观的界面创建和编辑样式规则,包括颜色、字体、...
作者通过创建多个页面,展示了不同类型的网页结构,包括首页、内容页、联系我们页等,这些都是网页设计的基础构成。 接着,CSS(Cascading Style Sheets)是用于控制网页样式的语言。在这个作业中,作者利用CSS实现...
页面框架图是设计初期的概念草图,它展示了网页或应用的基本布局结构,包括主要的导航元素、内容区域和功能模块。通过框架图,可以快速理解整个项目的组织结构,便于后期的交互设计和视觉设计。 【10张页面输出图】...