`
axl234
  • 浏览: 268968 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

移动端webapp开发必备知识

 
阅读更多

移动设备的用户越来越多,每天android手机的激活量都已经超过130万台,所以我们面向移动终端的WebAPP也开始跟进了。本文主要介绍webapp的开发与调试的相关知识和经验,以及给出几种可选的解决方案。
一、基本概念(1) CSS pixels与device pixelsCSS pixels: 浏览器使用的抽象单位, 主要用来在网页上绘制内容。
device pixels: 显示屏幕的的最小物理单位,每个dp包含自己的颜色、亮度。
等值的 CSS pixels在手机屏幕上占多大的位置,这不是固定的,这取决于很多属性。经过分析和总结,我们可以得出这么一条公式: 1 CSS pixels = (devicePixelRatio)^2 device pixels (^2是平方的意思,至于 devicePixelRatio是什么东西,后面会讲解) 。
(2) PPI/DPIPPI,有时也叫DPI,所表示的是每英寸所拥有的像素(pixel)数目,数值越高,即代表显示屏能够以越高的密度显示图像。(注:这里的像素,指的是device pixels。)搞清楚了PPI是什么意思,我们就能很容易理解PPI的计算方式了,我们需要首先算出手机屏幕的对角线等效像素,然后处以对角线(我们平常所说的手机屏幕尺寸就是说的手机屏幕对角线的长度),就可以得到PPI了。准确的计算公示大家可以参照下图。比较有意思的是,根据公式计算出来的iPhone 4的PPI为330,要比苹果官方公布的326要高一点点。

同理,以HTC G7为例,480*800的分辨率,3.7英寸,算出来就是252的PPI。
(3) 密度决定比例我们计算PPI就是为了知道一部手机设备是属于哪个密度区间的,因为不同的密度区间,对应着不同的默认缩放比例,这是一个很重要的概念。

由上图可知,PPI在120-160之间的手机被归为低密度手机,160-240被归为中密度,240-320被归为高密度,320以上被归为超高密度(Apple给了它一个上流的名字——retina)。
这些密度对应着一个特定的缩放比例值,拿我们最熟悉的iphone4或4s来说,它们的PPI是326,属于超高密度的手机。当我们书写一个宽度为320px的页面放到iphone中显示,你会发现,它竟然是满宽的。这是因为,页面被默认放大了两倍,也就是640px,而iphone4或4s的宽,正是640px。
图中把高密度的一类圈起来,是因为这是android手机的统计数据,在国内安卓手机市场中,高密度的设备占了绝大多数的市场份额,这是很重要的一点,也是我们做安卓端webapp要注意的关键点。
(4) viewport的使用viewport总共有5个属性,分别如下:

1234567 <meta name="viewport"content="height = [ pixel_value |device-height] ,width = [ pixel_value |device-width ] ,initial-scale = float_value , minimum-scale = float_value , maximum-scale = float_value ,user-scalable =[yes | no] ,target- densitydpi = [ dpi_value | device-dpi| high-dpi | medium-dpi | low-dpi] " />


在这些属性里面,我们重点关注target-densitydpi,这个属性可以改变设备的默认缩放。medium-dpi是target-densitydpi的默认值,如果我们显式定义target-densitydpi=device-dpi,那么设备就会按照真实的dpi来渲染页面。打个比方说,一张320*480的图片,放在iphone4里面,默认是占满屏幕的,但如果定义了target-densitydpi=device-dpi,那么图片只占屏幕的四分之一(二分之一的平方),因为iphone4的分辨率是640*960。
二、解决方案(1) 简单粗暴如果我们按照320px宽的设计稿去制作页面,并且不做任何的设置,页面会默认自动缩放到跟手机屏幕相等的宽度(这是由于 medium-dpi是target-densitydpi的默认值,和不同密度对应不同缩放比例所决定的,这一切都是移动设备自动完成的 )。所以这种解决方案,简单,粗暴,有效。但有一个致命的缺点,对于高密度和超高密度的手机设备,页面(特别是图片)会失真,而且密度越多,失真越厉害。
(2) 极致完美在这种方案中,我们采用 target-densitydpi=device-dpi,这样一来,手机设备就会按照真实的像素数目来渲染,用专业的话来说,就是1 CSS pixels = 1 device pixels。比如对于 640*960的 iphone,我们就可以做出 640*960的页面,在iphone上显示也不会有滚动条。当然,对于其他设备,也需制作不同尺寸的页面,所以这种方案往往是使用媒体查询来做成响应式的页面。这种方案可以在特定的分辨率下完美呈现,但是随着要兼容的不同分辨率越多,成本就越高,因为需要为每一种分辨率书写单独的代码。下面举个简单的例子:

1 <meta name="viewport"content="target-densitydpi=device-dpi, width=device-width " />

 

1234567891011 #header {background:url (medium-density-image.png);}@media screen and (- webkit -device-pixel-ratio:1.5) {/* CSS for high-density screens */#header { background:url (high-density-image.png);}}@media screen and (- webkit -device-pixel-ratio:0.75) {/* CSS for low-density screens */#header { background:url (low-density-image.png);}}



(3) 合理折中针对安卓设备绝大多数是高密度,部分是中密度的特点,我们可以采用一个折中的方案:我们对480px宽的设计稿进行还原,但是页面制却做成320px宽(使用background-size来对图片进行缩小),然后,让页面自动按照比例缩放。这样一来,低密度的手机有滚动条(这种手机基本上已经没有人在用了),中密度的手机会浪费一点点流量,高密度的手机完美呈现,超高密度的手机轻微失真(超高密度的安卓手机很少)。这种方案的优点非常明显:只需要一套设计稿,一套代码(这里只是讨论安卓手机的情况)。

分享到:
评论
1 楼 yuur369 2014-03-17  
不错。。。

相关推荐

    2019最新移动端WebApp及混合APP开发(368集).txt

    用面向对象打造迷你Vue框架(完结-10集).rar - 288.52MB 微信小程序基础与实战(完结-23集).rar - 1.80GB ...2知识点讲解(240集).rar - 7.44GB 1阶段课程体系(完结-16).rar - 614.42MB

    HTML5+JQuery Mobile 移动端WebApp案例

    这个实例不仅展示了HTML5的新特性如何提升移动WebApp的功能性,还展示了JQuery Mobile如何简化移动界面的开发和维护。对于想要学习或提升移动Web开发技能的人来说,这是一个很好的实践项目。通过解压并分析...

    网易云音乐移动端webapp

    【标题】:“网易云音乐移动端WebApp” 在互联网技术领域,移动端WebApp是现代Web开发的一个重要方向,它旨在提供类似原生应用...对于深入理解Vue.js及其生态系统,以及提高WebApp开发能力,这是一个极好的实践案例。

    更简单的方式开发移动端webapp.zip

    "更简单的方式开发移动端webapp.zip" 这个压缩包似乎包含了一个名为 "lincoui-master" 的项目,可能是一个专注于简化移动端Web应用程序开发的Python库或者框架。尽管标题并未直接提及Python爬虫,但我们可以假设这个...

    vue写的蘑菇街移动端webapp.zip

    本项目"vue写的蘑菇街移动端webapp"是一个基于Vue.js的示例,它展示了如何利用Vue.js构建一个类似于蘑菇街的移动购物网站,对于学习Vue.js开发WebApp具有很高的参考价值。 首先,Vue.js 的核心特性包括声明式渲染、...

    Vue2的移动端webApp音乐播放器

    总的来说,Vue2的移动端WebApp音乐播放器项目涵盖了前端开发的多个关键知识点,包括前端框架的使用、状态管理、路由管理、音频处理以及API调用等,是一个很好的学习和实践平台,可以帮助开发者深入理解Vue2生态系统...

    移动端webapp支持overflow

    移动版游戏器不支持overflow:auto,即多余内容隐藏,并能通过手指拉动来滚动内容。目前有很多模拟这种效果的js库,如iScroll。但经项目测试,iscroll在很多浏览器中有明显的性能问题。根据isSCROLL改写的

    采用vuejs重写的cnode社区移动端webapp

    本项目“采用Vue.js重写的Cnode社区移动端Webapp”旨在利用Vue.js的优势,为Cnodejs社区构建一个响应式、高效的移动版Web应用程序。 Cnode社区是一个专注于Node.js技术讨论的平台,它提供了丰富的API供开发者进行二...

    meleme一个基于Vue全家桶实现的饿了么移动端webapp

    【标题】"meleme一个基于Vue全家桶实现的饿了么移动端webapp"揭示了这个项目是使用Vue.js框架的全套工具集(Vue全家桶)来构建的饿了么移动应用的克隆版本。Vue.js是现代前端开发中非常流行的一个轻量级JavaScript...

    移动端webApp之大前端

    移动端包括ipad、itocuch...不得不说的是viewport,这是移动端开发必备的一个meta标签属性。移动端设备分为屏幕设备大小以及浏览器视口大小,一般来说width表示浏览器视口大小,而device-width表示设备屏幕大小。比如ip

    基于Vue2x全家桶制作的移动端音乐WebApp

    【Vue2x全家桶制作的移动端音乐WebApp】 在现代前端开发中,Vue.js是一个非常受欢迎的JavaScript框架,尤其在2.x版本时,其全家桶工具集为开发者提供了全面而强大的解决方案。Vue2.x全家桶是指包括Vue核心、Vuex...

    给你几个web app站的例子,套个壳在浏览器中浏览就是 移动端webapp(伪APP).zip

    标题和描述中提到的“移动端webapp(伪APP)”是指一种通过在浏览器中封装Web应用的方式,模拟原生移动应用程序的用户体验。这种方式通常利用HTML、CSS和JavaScript等Web技术构建,无需通过应用商店下载安装,用户只...

    千锋HTML5高级教程-移动端WebApp及混合APP开发(368集)-基础到项目实战.txt

    1阶段课程体系(完结-16) 2知识点讲解(240集) 3HTML5微案例讲解(29集) Vue组件之手机通讯录实战课程(完结-25集) 微信小程序基础与实战(完结-23集) 用面向对象打造迷你Vue框架(完结-10集) 网盘打包下载

    angular1.x 移动端开发webapp.zip

    在本文中,我们将深入探讨使用Angular 1.x进行移动端Web应用程序开发的相关知识点。AngularJS(1.x版本)是Google推出的一款强大的前端JavaScript框架,它极大地简化了构建动态单页应用(SPA,Single Page ...

    基于vue全家桶音乐项目(Musicproject)vue+typescript实现高仿网易云音乐移动端WebApp.zip

    该项目是一个使用Vue.js全家桶(包括Vue.js、Vuex、Vue Router和Vue CLI)和TypeScript编写的音乐播放Web应用程序,高度仿照了网易云音乐的移动端应用。Vue.js是目前非常流行的一个前端框架,它提供了组件化开发、...

    网易云音乐接口vue全家桶开发一款移动端音乐webApp

    在本项目中,我们将利用“网易云音乐接口”和“Vue全家桶”技术栈...以上就是利用“网易云音乐接口vue全家桶”开发移动端音乐WebApp的相关知识点。在实际开发中,还需要不断学习和实践,提升技术能力,以应对各种挑战。

    移动端WebApp隐藏地址栏的方法

    主要介绍了移动端WebApp隐藏地址栏的方法,本文分别给出了4种方法,适应不同情况下使用,小编推荐最后一个方法,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics