摘要:為移動設(shè)備制作前端頁面,往往會遇到很多令人迷惑的情況,本文中,我整理了一些相關(guān)的概念和方法,與大家分享一下。所以現(xiàn)代針對移動端的網(wǎng)頁設(shè)計或者響應(yīng)式設(shè)計通常采用的方法是,精簡頁面內(nèi)容,放大視覺元素,避免體驗不好的縮放和移動頁面。
為移動設(shè)備制作前端頁面,往往會遇到很多令人迷惑的情況,本文中,我整理了一些相關(guān)的概念和方法,與大家分享一下。
設(shè)備像素和CSS像素css像素是固定不變的,瀏覽器上縮放的話,css像素會被拉伸或者縮小,設(shè)備像素不變
100%zoom : css像素 和設(shè)備像素 一致
zoom被縮放 : css像素在設(shè)備像素里 被縮放
屏幕尺寸和窗口尺寸屏幕尺寸和窗口尺寸較好理解
但是需要注意的是:當(dāng)縮放窗口的時候,窗口尺寸更改了,這一點對于后面理解移動端尺寸有一定幫助
解釋:當(dāng)放大頁面的時候,窗口尺寸變小了,為什么呢?因為窗口尺寸(window.innerWidth)的定義是窗口里能展現(xiàn)的像素寬高,頁面放大了,頁面里展現(xiàn)的css像素變少了,所以窗口尺寸變小了,相反縮小頁面的時候,窗口尺寸變大了。
pc上的viewportviewport并非是移動端的專利,viewport是瀏覽器內(nèi)部的一個數(shù)據(jù),它約束html的寬度。viewport基本等同于窗口尺寸,所以當(dāng)你縮放窗口的時候viewport會改變,相應(yīng)的html寬度也會改變。
這個例子中,由于放大頁面,viewport變小,而頁面中的頭部藍(lán)條css設(shè)置為100%,跟隨viewport變化,所以右側(cè)logo暴露了出來,藍(lán)條沒有覆蓋100%的文檔寬度,而只取viewport的寬度。
移動終端的viewport移動終端的viewport更加麻煩一些,有兩種viewport,分別是展示viewport(visual viewport)和布局viewport(layout viewport)。
上面這張圖片你可以這么理解:
手機是一個放大鏡,它游走在頁面上,手機上展示的寬高為visual-viewport,而整個頁面的寬高是layout-viewport。
好奇的朋友一定會問,為什么要這樣呢,何必這么麻煩?這是因為手機的尺寸太小了,“移動瀏覽器廠商想給它們的客戶盡可能的提供最好的體驗,這現(xiàn)在指的就是「盡可能的跟桌面一樣」。因此耍一些花招是必要的?!?/em>
那么,假如我的頁面沒有經(jīng)過任何優(yōu)化,手機默認(rèn)的layout-viewport是多大呢,“l(fā)ayout viewport有多寬?每個瀏覽器都不一樣。Safari iPhone為980px,Opera為850px,Android WebKit為800px,最后IE為974px。”
這就是為什么普通一個頁面在iphone上看會變得很大的原因,iphone默認(rèn)把你的頁面的viewport設(shè)置為980px,也就是說html的100%寬度默認(rèn)為980px;
現(xiàn)代移動端網(wǎng)頁設(shè)計與viewport雖說visual-viewport是為了用戶看得更清楚而做的設(shè)定,但實際上,這帶來了用戶體驗上的下降,用戶往往需要縮放和移動頁面。所以現(xiàn)代針對移動端的網(wǎng)頁設(shè)計(或者響應(yīng)式設(shè)計)通常采用的方法是,精簡頁面內(nèi)容,放大視覺元素,避免體驗不好的縮放和移動頁面。包括boostrap在內(nèi)的眾多前端框架也無不在設(shè)計上采用這種解決方案。
要滿足這種設(shè)計,首先要保證一件事情就是,讓layout-viewport就是visual-viewport,消除兩個viewport帶來的頁面差異。
蘋果公司推動的的viewport meta可以解決這個問題,viewport的主要作用是指定layout-viewport的大小。
比如:
這個設(shè)定其實就是讓layout-viewport和visual-viewport保持一致,回想一下上面那張把手機當(dāng)做放大鏡的圖片,有了這個設(shè)定以后,手機就不是放大鏡了,而是把整個頁面裝在手機里。
此外,viewport還可以設(shè)置 initial-scale , user-scalable
蘋果給的一些例子關(guān)于Viewport,safari的開發(fā)官網(wǎng)給了一些例子,可以加深我們對這個問題的理解:
可以看到?jīng)Q定頁面展示效果的兩個因素,width和scale,scale類似pc端的放大縮小
一個默認(rèn)寬度為100%頁面的樣子
默認(rèn)寬度 + initial scale = 1.0
寬度設(shè)為320 + 默認(rèn) initial scale
參考:
http://weizhifeng.net/viewports2.html
http://weizhifeng.net/viewports.html
https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110895.html
摘要:為移動設(shè)備制作前端頁面,往往會遇到很多令人迷惑的情況,本文中,我整理了一些相關(guān)的概念和方法,與大家分享一下。所以現(xiàn)代針對移動端的網(wǎng)頁設(shè)計或者響應(yīng)式設(shè)計通常采用的方法是,精簡頁面內(nèi)容,放大視覺元素,避免體驗不好的縮放和移動頁面。 為移動設(shè)備制作前端頁面,往往會遇到很多令人迷惑的情況,本文中,我整理了一些相關(guān)的概念和方法,與大家分享一下。 設(shè)備像素和CSS像素 css像素是固定不變的...
摘要:做移動端自適應(yīng)時可能很多人都對自適應(yīng)和之間的關(guān)系產(chǎn)生疑問也有一些人會疑慮比如我的自適應(yīng)方案沒有加會不會出問題針對這些疑問我說一下我的見解。 做移動端自適應(yīng)時可能很多人都對自適應(yīng)和dpr之間的關(guān)系產(chǎn)生疑問,也有一些人會疑慮比如我的自適應(yīng)方案沒有加dpr會不會出問題,針對這些疑問我說一下我的見解。 1. 什么是尺寸自適應(yīng) 首先標(biāo)題說的自適應(yīng),可能自適應(yīng)在不同人眼里理解不同,特別與響應(yīng)式的關(guān)...
摘要:做移動端自適應(yīng)時可能很多人都對自適應(yīng)和之間的關(guān)系產(chǎn)生疑問也有一些人會疑慮比如我的自適應(yīng)方案沒有加會不會出問題針對這些疑問我說一下我的見解。 做移動端自適應(yīng)時可能很多人都對自適應(yīng)和dpr之間的關(guān)系產(chǎn)生疑問,也有一些人會疑慮比如我的自適應(yīng)方案沒有加dpr會不會出問題,針對這些疑問我說一下我的見解。 1. 什么是尺寸自適應(yīng) 首先標(biāo)題說的自適應(yīng),可能自適應(yīng)在不同人眼里理解不同,特別與響應(yīng)式的關(guān)...
摘要:做移動端自適應(yīng)時可能很多人都對自適應(yīng)和之間的關(guān)系產(chǎn)生疑問也有一些人會疑慮比如我的自適應(yīng)方案沒有加會不會出問題針對這些疑問我說一下我的見解。 做移動端自適應(yīng)時可能很多人都對自適應(yīng)和dpr之間的關(guān)系產(chǎn)生疑問,也有一些人會疑慮比如我的自適應(yīng)方案沒有加dpr會不會出問題,針對這些疑問我說一下我的見解。 1. 什么是尺寸自適應(yīng) 首先標(biāo)題說的自適應(yīng),可能自適應(yīng)在不同人眼里理解不同,特別與響應(yīng)式的關(guān)...
閱讀 2584·2021-11-24 09:38
閱讀 2615·2019-08-30 15:54
閱讀 930·2019-08-30 15:52
閱讀 1917·2019-08-30 15:44
閱讀 2725·2019-08-30 13:48
閱讀 778·2019-08-29 16:21
閱讀 1006·2019-08-29 14:03
閱讀 2223·2019-08-28 18:15