`

手机页面设计基本

 
阅读更多

什么是Viewport

手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。移动版的 Safari 浏览器最新引进了 viewport 这个 meta tag,让网页开发者来控制 viewport 的大小和缩放,其他手机浏览器也基本支持。

 

Viewport 基础

一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:

<meta name=”viewport” content=”width=device-width, initial-scale=1, maximum-scale=1″>

width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
height:和 width 相对应,指定高度。
initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
maximum-scale:允许用户缩放到的最大比例。
minimum-scale:允许用户缩放到的最小比例。
user-scalable:用户是否可以手动缩放

 

关于viewport的一些问题

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的宽度设置得比页面最宽的地方更大,或者相同。

 

手机页面资料整理

来自:http://hi.baidu.com/onionsmm/item/977b8142e64b9b12886d10ea

一关于手机页面的标准头

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

字符编码使用utf-8


<meta http-equiv="Cache-Control" content="no-cache"/>

指定页面手机内存缓存中的存储时间段


<meta name="viewport" content="width=device-width; initial-scale=1.0;

minimum-scale=1.0; maximum-scale=2.0"/>

device-width通知浏览器使用设备的宽度作为可视区的宽度

initial-scale - 初始的缩放比例

minimum-scale - 允许用户缩放到的最小比例

maximum-scale - 允许用户缩放到的最大比例


<meta name="MobileOptimized" content="240"/>

解决原先在Pocket PC 2002上能够全萤幕显示的Flash影片(240×320),到了Pocket

PC2003之后,自动会缩小的问题


二 关于css样式

1页面自带css建议style标签头标准化,格式:<style type="text/css"

id="internalStyle">

2 部分手机浏览器对如下css样式支持不是很好,建议慎重使用:

· 不支持font-family属性,也就是说,在很多浏览器可能只有一种默认字体;

· 不支持font-szie属性,如在UC浏览器你只能看到一样大小的字体;

· 不支持width、height、padding、margin、line-height属性,如,在UC浏览器只

能通过p、br 等HTML标签来换行以达到字符上下间隔;

· 不支持固定像素的宽度,100%显示页面,如:在UC浏览器始终将看到的是“满屏的

”;

· 不支持浮动、层叠布局,float和position属性无效,如:在UC浏览器你只能看到

“左对齐”,建议使用table格局。

· 支持background-color,但不支持background-image,也就是说不支持CSS背景图

显示,在UC浏览器你只 能看到背景色,为了手机的流量,提倡尽量少用背景图。

· max-device-width这样的选项,限定屏幕宽度小于480的设备才采用该样式表,代

码格局如下:
<link media="only screen and (max-device-width: 480px)"  href="small

-device.css" type= "text/css" rel="stylesheet" />

三 其他

1网页大小限制:建议低版本页面不超过15k,高版本页面不超过60k。

2部分手机不支持png8和png24,所以尽量使用jpg和gif的图片;

3另外对于平滑的渐变等精细的图片细节,部分手机的色彩支持度并不能达到要求,所

以慎用有平滑渐变的bar设计;

4部分手机对于超大图片,既不进行缩放,也不显示横下滚动条;

5少数手机在打开超过20k的测试页面时,会显示内存不足

6大部分手机不支持表单元素的“disable”属性

7在手持设备上,按钮最好不要直接用img标签
<input type="image" src="图片路径" name="Submit" value="" />

四 浏览器使用情况:

CNNIC与CR-Nielsen联合发布的《2009年中国移动互联网与3G用户调查报告》显示,

手机自带浏览器市场份额高达49.6%,

在现有手机浏览器品牌中,

腾讯手机浏览器份额27.3%,

UC手机浏览器份额11.2%,

Opera手机浏览器份额1.8%,

其他手机浏览器份额2.4%。

尽管今年 UC浏览器扳回一城,重新超越了QQ浏览器,但不排除有随时被对方超越的可

能。

 

 

 

分享到:
评论

相关推荐

    自学手机网站开发教程-手机网页设计和制作

    ### 自学手机网站开发教程:手机网页设计与制作 随着移动互联网技术的飞速发展以及智能手机的普及,越来越多的人选择通过手机上网。由此,“哪里有人群,哪里就有发展”的趋势愈发明显,促使互联网产业逐渐向移动端...

    网页设计的基本概念的光盘

    网页设计是将创意、技术与用户体验融合的艺术,它涵盖了从页面布局到交互设计,再到前端代码实现等多个方面。本资源“网页设计的基本概念的光盘”深入浅出地介绍了这一领域的核心知识,帮助初学者从零开始理解网页...

    网页设计基本框架

    网页设计基本框架是构建网页的一种标准化模板,它包含了一系列预设的CSS样式和布局结构,旨在简化网页开发过程,提高工作效率。这样的框架通常包括网格系统、响应式设计、导航栏、按钮、表单元素等常见组件,使得...

    wap手机网页程序设计

    【描述】:“wap手机网页设计,从零开始教你如何制作手机网页” 设计WAP手机网页涉及多个关键步骤和技术。首先,你需要理解WAP的基本架构和工作原理,包括WAP Gateway、WAP浏览器以及WML(Wireless Markup Language...

    手机壳在线diy设计前端页面

    【标题】"手机壳在线DIY设计前端页面"是一个基于Web技术实现的用户自定义手机壳设计的应用。这个项目仅包含前端代码,不涉及后端处理,因此它的核心在于为用户提供一个直观、易用的界面,让他们能够自由地在手机壳...

    手机页面设计及编写的建议规则

    ### 手机页面设计及编写的建议规则 随着移动互联网技术的发展与普及,越来越多的人开始通过智能手机访问网页,这也使得手机页面的设计与编写变得尤为重要。本文将基于提供的内容概述几个关键知识点,帮助开发者更好...

    手机APP注册页面html模板是一款采用css3制作的手机APP注册页面设计html模板。.rar

    HTML模板是网页设计中常见的一种资源,用于快速构建和定制网站或手机应用的用户界面。在本案例中,"手机APP注册页面html模板" 是专为创建手机应用程序注册页面而设计的一个模板,它利用了CSS3(层叠样式表第三版)的...

    html网页设计大作业

    每个CSS文件可能针对特定的页面或页面元素,例如,style3之最.css可能是用于“植物之最”页面的特殊样式,而style.css通常作为全局样式表,包含应用于整个网站的基本样式规则。 1. **HTML基础知识**:HTML由一系列...

    网页设计9页面

    响应式设计是现代网页设计的标准,确保网页在不同设备(手机、平板、电脑)上都能正常显示和操作。篮球主题的网页设计也需要考虑这一点,确保无论用户在何种设备上访问,都能获得一致的浏览体验。 此外,网页的加载...

    海的女儿网页设计

    在"海的女儿"网页设计中,HTML将用于创建如标题、段落、图像、链接等基本元素,构建网页的基本框架。 2. CSS美化:CSS(Cascading Style Sheets)用于控制网页的外观和布局。通过CSS,我们可以定义字体、颜色、间距...

    基于HTML仿oppo手机商城电商项目的设计与实现6个页面

    这些主题均旨在帮助学生理解和掌握基本的网页设计技能,并能够完成高质量的期末项目。 #### 二、项目特点 - **多主题支持**:项目提供了丰富的主题选择,使得学生可以根据自己的兴趣或课程需求挑选合适的主题来...

    大学生web网页制作设计期末大作业【6个页面+多元素组合】

    这个“大学生web网页制作设计期末大作业【6个页面+多元素组合】”项目,旨在检验学生的网页设计与开发能力,同时也体现了他们对网页布局、交互设计以及多媒体整合的理解。 首先,我们关注的是网页设计的基本组成...

    网页设计及设计报告

    2. **信息架构**:设计网页的层次结构,规划页面间的链接关系,以便用户能方便地找到所需信息。 3. **界面设计**:考虑色彩搭配、字体选择、按钮和图标的设计,确保整体视觉效果与品牌一致,同时提升用户体验。 4....

    最基本的网页设计展示

    在"最基本的网页设计展示"中,我们将深入探讨这个领域的基础知识,帮助初学者轻松理解网页的基本原理。 首先,我们要理解网页的基本结构。一个网页通常由HTML(超文本标记语言)编写,它是网页内容的基础。HTML通过...

    网页设计器图形化工具期末作业

    网页设计器中的组件代表了网页的基本元素,如按钮、图片、文本框、表单等。用户可以通过拖拽这些组件到工作区,然后调整它们的大小、位置和属性,实现快速布局。这种方式大大降低了网页制作的门槛,使得设计过程更...

    期末网页设计 作业 大学生 高中生 网页设计作业成品下载

    1. **页面结构规划**:一个有效的网页设计需要有明确的导航结构,通常包括首页、产品介绍、关于我们、联系我们等基本页面。每个页面都应该有清晰的标题和内容,便于用户理解和浏览。 2. **响应式设计**:考虑到不同...

    网页设计合集,4个完整版

    首先,我们要理解网页设计的基本概念。网页设计是指通过HTML、CSS和JavaScript等技术,创建和维护具有视觉吸引力和功能性的网站。HTML(超文本标记语言)负责构建网页内容的结构,CSS(层叠样式表)用于定义页面的...

    htm+css网页设计课程作业

    作者通过创建多个页面,展示了不同类型的网页结构,包括首页、内容页、联系我们页等,这些都是网页设计的基础构成。 接着,CSS(Cascading Style Sheets)是用于控制网页样式的语言。在这个作业中,作者利用CSS实现...

    网页设计-仿小米商城-前端期末大作业

    在前端开发中,网页设计通常包括布局设计、色彩搭配、图标选择、字体应用以及按钮和链接的交互设计等,以实现美观且功能齐全的页面。 【HTML】 HTML(HyperText Markup Language)是网页设计的基础,它是网页内容的...

    UI期末大作业(手机页面一套).rar

    页面框架图是设计初期的概念草图,它展示了网页或应用的基本布局结构,包括主要的导航元素、内容区域和功能模块。通过框架图,可以快速理解整个项目的组织结构,便于后期的交互设计和视觉设计。 【10张页面输出图】...

Global site tag (gtag.js) - Google Analytics