自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

移動(dòng)前端分享:對(duì)于移動(dòng)設(shè)備頁面尺寸的理解

移動(dòng)開發(fā) Android
為移動(dòng)設(shè)備制作前端頁面,往往會(huì)遇到很多令人迷惑的情況,本文中,我整理了一些相關(guān)的概念和方法,與大家分享一下。

為移動(dòng)設(shè)備制作前端頁面,往往會(huì)遇到很多令人迷惑的情況,本文中,我整理了一些相關(guān)的概念和方法,與大家分享一下。


設(shè)備像素和CSS像素

css像素是固定不變的,瀏覽器上縮放的話,css像素會(huì)被拉伸或者縮小,設(shè)備像素不變

100%zoom : css像素 和設(shè)備像素 一致

[[117516]]

zoom被縮放 : css像素在設(shè)備像素里 被縮放

[[117517]]

[[117518]]


屏幕尺寸和窗口尺寸

屏幕尺寸和窗口尺寸較好理解

請(qǐng)輸入圖片描述

請(qǐng)輸入圖片描述

但是需要注意的是:當(dāng)縮放窗口的時(shí)候,窗口尺寸更改了,這一點(diǎn)對(duì)于后面理解移動(dòng)端尺寸有一定幫助

請(qǐng)輸入圖片描述

解釋:當(dāng)放大頁面的時(shí)候,窗口尺寸變小了,為什么呢?因?yàn)榇翱诔叽?window.innerWidth)的定義是窗口里能展現(xiàn)的像素寬高,頁面放大了,頁面里展現(xiàn)的css像素變少了,所以窗口尺寸變小了,相反縮小頁面的時(shí)候,窗口尺寸變大了。


pc上的viewport

viewport并非是移動(dòng)端的專利,viewport是瀏覽器內(nèi)部的一個(gè)數(shù)據(jù),它約束html的寬度。viewport基本等同于窗口尺寸,所以當(dāng)你縮放窗口的時(shí)候viewport會(huì)改變,相應(yīng)的html寬度也會(huì)改變。

請(qǐng)輸入圖片描述

這個(gè)例子中,由于放大頁面,viewport變小,而頁面中的頭部藍(lán)條css設(shè)置為100%,跟隨viewport變化,所以右側(cè)logo暴露了出來,藍(lán)條沒有覆蓋100%的文檔寬度,而只取viewport的寬度。


移動(dòng)終端的viewport

移動(dòng)終端的viewport更加麻煩一些,有兩種viewport,分別是展示viewport(visual viewport)和布局viewport(layout viewport)。

請(qǐng)輸入圖片描述

上面這張圖片你可以這么理解:

手機(jī)是一個(gè)放大鏡,它游走在頁面上,手機(jī)上展示的寬高為visual-viewport,而整個(gè)頁面的寬高是layout-viewport。

好奇的朋友一定會(huì)問,為什么要這樣呢,何必這么麻煩?這是因?yàn)槭謾C(jī)的尺寸太小了,“移動(dòng)瀏覽器廠商想給它們的客戶盡可能的提供***的體驗(yàn),這現(xiàn)在指的就是「盡可能的跟桌面一樣」。因此耍一些花招是必要的。”

那么,假如我的頁面沒有經(jīng)過任何優(yōu)化,手機(jī)默認(rèn)的layout-viewport是多大呢,“layout viewport有多寬?每個(gè)瀏覽器都不一樣。Safari iPhone為980px,Opera為850px,Android WebKit為800px,***IE為974px。”

這就是為什么普通一個(gè)頁面在iphone上看會(huì)變得很大的原因,iphone默認(rèn)把你的頁面的viewport設(shè)置為980px,也就是說html的100%寬度默認(rèn)為980px;

#p#

現(xiàn)代移動(dòng)端網(wǎng)頁設(shè)計(jì)與viewport

雖說visual-viewport是為了用戶看得更清楚而做的設(shè)定,但實(shí)際上,這帶來了用戶體驗(yàn)上的下降,用戶往往需要縮放和移動(dòng)頁面。所以現(xiàn)代針對(duì)移動(dòng)端的網(wǎng)頁設(shè)計(jì)(或者響應(yīng)式設(shè)計(jì))通常采用的方法是,精簡(jiǎn)頁面內(nèi)容,放大視覺元素,避免體驗(yàn)不好的縮放和移動(dòng)頁面。包括boostrap在內(nèi)的眾多前端框架也無不在設(shè)計(jì)上采用這種解決方案。

要滿足這種設(shè)計(jì),首先要保證一件事情就是,讓layout-viewport就是visual-viewport,消除兩個(gè)viewport帶來的頁面差異。

蘋果公司推動(dòng)的的viewport meta可以解決這個(gè)問題,viewport的主要作用是指定layout-viewport的大小。

比如:

<meta name="viewport" content="width=device-width">

這個(gè)設(shè)定其實(shí)就是讓layout-viewport和visual-viewport保持一致,回想一下上面那張把手機(jī)當(dāng)做放大鏡的圖片,有了這個(gè)設(shè)定以后,手機(jī)就不是放大鏡了,而是把整個(gè)頁面裝在手機(jī)里。

此外,viewport還可以設(shè)置 initial-scale , user-scalable


蘋果給的一些例子

關(guān)于Viewport,safari的開發(fā)官網(wǎng)給了一些例子,可以加深我們對(duì)這個(gè)問題的理解:

請(qǐng)輸入圖片描述

請(qǐng)輸入圖片描述

請(qǐng)輸入圖片描述

請(qǐng)輸入圖片描述

可以看到?jīng)Q定頁面展示效果的兩個(gè)因素,width和scale,scale類似pc端的放大縮小

一個(gè)默認(rèn)寬度為100%頁面的樣子

請(qǐng)輸入圖片描述

默認(rèn)寬度 + initial scale = 1.0

請(qǐng)輸入圖片描述

寬度設(shè)為320 + 默認(rèn) initial scale

請(qǐng)輸入圖片描述

參考:

一、http://weizhifeng.net/viewports.html

二、http://weizhifeng.net/viewports2.html

三、https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html

原文地址:http://blog.segmentfault.com/fishenal/1190000000495454

責(zé)任編輯:閆佳明 來源: blog.segmentfault
相關(guān)推薦

2014-12-10 14:34:40

2015-07-30 10:04:43

viewport前端

2015-10-28 14:06:26

移動(dòng)設(shè)備數(shù)據(jù)保護(hù)

2011-01-24 15:15:09

2013-10-12 16:45:42

SAP

2011-01-07 10:54:02

2013-09-04 14:49:10

移動(dòng)Web前端開發(fā)設(shè)計(jì)理念

2013-02-19 09:56:05

2012-01-06 09:49:01

圖標(biāo)移動(dòng)設(shè)備

2011-12-13 09:43:44

2013-08-26 10:19:03

移動(dòng)設(shè)備移動(dòng)應(yīng)用

2012-05-04 23:24:10

應(yīng)用

2012-06-14 16:04:56

移動(dòng)端圖片分享

2016-03-21 10:05:18

2011-08-11 13:31:41

移動(dòng)設(shè)備

2012-06-04 10:48:24

HTML5

2012-03-20 15:06:40

NFC功能移動(dòng)設(shè)備

2016-04-29 13:29:32

2011-06-29 14:01:40

HTML 5

2015-03-06 09:56:42

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)