移动端开发系列 (一)—— 像素与viewport

目录

1、移动端开发的基本观点
2、像素基础知识
3、viewport原理解析
4、弹性布局
5、响应式设计
6、1rem的运用
7、移动端的事件
8、zepto库的使用

一、移动端开发的基本观点

移动端开发就是手机端开发吗?首先回答是否定的,移动端是一个大的范畴,应该包括智能手机以及平板电脑在内的所有移动设备,但主要是这两者。

二、像素基础知识

2.1、设备像素
设备像素(Device Pixels):设备屏幕的物理像素,设备能控制显示的最小单位,我们可以把这些像素看作成显示器上一个个的点。

2.2、CSS像素
CSS像素(CSS Pixels):是Web编程的概念,指的是CSS样式代码中使用的逻辑像素。

所以,1个CSS像素在不同设备上可能对应不同的物理像素,这个比值是 是设备的属性(Device Pixel Ratio,设备像素比)。

在CSS规范中,长度单位可以分为绝对单位和相对单位。px是一个相对单位,相对的是设备像素(Device Pixels)。

比如iPhone5使用的是Retina视网膜屏幕,用2x2px的Device Pixel代表1x1px的CSS Pixel,所以设备像素数为640x1136px,而CSS逻辑像素数为320x568px

CSS像素和设备像素关系

为了更清晰的理解设备像素和CSS像素,接下来的两幅图说明了当用户缩放的时候会发生什么。

第一幅图展示的是当用户进行缩小操作的时候设备像素(深蓝色背景)和CSS像素(半透明前景)的样子。CSS像素变得小了;一个设备像素覆盖了多个CSS像素。


缩小操作

第二幅图展示的当用户进行放大操作时候设备像素和CSS像素的样子。一个CSS像素现在覆盖了多个设备像素。


放大操作

2.3、分辨率
分辨率(Resolution)也是一个物理概念,含义要看对谁。

对于屏幕,分辨率一般表示屏幕上显示的物理像素总和。比如,我们说iPhone6屏幕分辨率是750x1334px

对于图像,概念等同于图像尺寸、图像大小、像素尺寸等等。比如,我们说20x20px的icon。

其实严格来说,图像分辨率的单位是ppi(Pixels Per Inch),对于一个图片文件,其像素尺寸是一定的,可能含有来自相机的meta信息,比如分辨率200ppi,该值只是个建议值,图片显示出来我们看到的尺寸由屏幕像素密度决定,像素密度越高,图片看起来越小。

2.4、设备像素比
设备像素比缩写为DPR或者DPPX,如下:

  • Device Pixel Ratio: Number of device pixels per CSS Pixel
  • Dots Per Pixel: the amount of device pixels per CSS pixel (e.g. in Retina displays this will be 2).

设备像素比表示1个CSS像素(宽度)等于几个物理像素(宽度):

DPR = 物理像素数 / 逻辑像素数

比如dpr=2时,1个CSS像素由4个物理像素点组成。

DPR不是单位,而是一个属性名,比如在浏览器中通过window.devicePixelRatio获取屏幕的DPR

2.5、像素密度
像素密度也叫显示密度或者屏幕密度,缩写为DPI(Dots Per Inch)或者PPI(Pixel Per Inch),含义相同

专业的一般说PPI,细微差异如下:

ppi和dpi(每英寸点数)。从技术角度说,“像素”(p)只存在于计算机显示领域,而“点”(d)只出现于打印或印刷领域。

经常看到相同尺寸的屏幕像素尺寸却不同,也就是DPI的差异,比如4.7英寸的iPhone6像素尺寸为750x1334px,而4.7英寸的HTC One像素尺寸为1080x1920px

像素密度很容易算出来,比如iPhone6的:

// 屏幕对角线的像素尺寸 / 物理尺寸(inch)
Math.sqrt(750*750 + 1334*1334) / 4.7 = 326ppi

2.6、设备独立像素
一般指Google提出的用来适配Android海量奇怪屏幕的,Windows也有这个概念,但含义不同,IOS好像没有设备独立像素一说。

设备独立像素作为单位,一般是指Android开发中的东西,缩写为DIP(Device Independent Pixels)或者DP(Density-independent Pixels),含义完全一致

Android设备的特点是屏幕尺寸很多,因此为了显示能尽量和设备无关,提出了dip,参照的density是160。计算公式为:

// 当屏幕密度为160(单位是ppi或者dpi,一个意思)时,px === dip
px = dip * density / 160 
// 所以
dip = px * 160 / dpi

当然,这两个式子都只适用于Android设备,这个dip拿到其它地方去没什么意义。

2.7、下面就是应用了
实际开发中,设计师和前端工程师之间的协同是这样的:
一般由设计师按照设备像素(Device Pixel)为单位制作设计稿。
前端工程师,参照相关的设备像素比(Device Pixel Ratio),进行换算以及编码。

我们就拿iPhone 6s来说:


iPhone 6s屏幕数据

可以看到,其分辨率为1334*750px,设备尺寸为4.7英寸,可以计算出ppi为326,查资料得知其dpr为2,可以得到对于该设备1个CSS像素数对应4个设备像素点显示,所以iPhone 6s的虚拟像素为宽750/2=375px,高1334/2 = 667px,即虚拟分辨率为667*375px

此时,我们如果在代码中设置元素的宽高为667*375px的话,会发现它的实际尺寸就等于iPhone 6s的屏幕尺寸。

Paste_Image.png
Paste_Image.png

三、viewport原理解析

桌面上视口宽度等于浏览器宽度,但在手机上有所不同。

  • 布局视口
    手机上为了容纳为桌面浏览器设计的网站,默认布局视口宽度远大于屏幕宽度,为了让用户看到网站全貌,它会缩小网站

  • 视觉视口
    屏幕的可视区域,即物理像素尺寸

  • 理想视口
    当网站是为手机准备的时候使用。通过meta来声明。早期iPhone理想视口为320x480px

所以,在没有缩放的情况下,屏幕的CSS像素宽度其实是指理想视口的宽度,而meta标签:

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>

指定了布局视口=理想视口,并且禁止缩放。所以添上width=device-widthviewport meta后页面变大了(一开始页面内容小得看不清),实际上是布局视口变小了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容