2021-4-29 ui設(shè)計(jì)分享達(dá)人
寬度單位我是用百分比還是px?還是rem?區(qū)別是什么?
什么是屏幕尺寸、屏幕分辨率、屏幕像素密度、設(shè)備像素、css像素?瀏覽器窗口大小和設(shè)備大小和分辨率大小區(qū)是什么區(qū)別?
什么是響應(yīng)式網(wǎng)站,自適應(yīng)又是什么??jī)烧哂泻螀^(qū)別和聯(lián)系?
百分比寬度布局和流式布局和前者的關(guān)系是什么?
既然響應(yīng)式這么流行,為何淘寶、京東等沒(méi)有去做,而是單獨(dú)開(kāi)發(fā)了一個(gè)移動(dòng)端版?這里面有那些坑需要避開(kāi)?
歷史長(zhǎng)廊
在早期,硬件設(shè)備落后,網(wǎng)頁(yè)使用的是絕對(duì)靜態(tài)布局為主,絕對(duì)固定寬度的布局被稱(chēng)為是靜態(tài)布局(StaticLayout),也有叫固定布局(Fixed Layout)。
后隨時(shí)代變遷,技術(shù)發(fā)展。因?yàn)g覽器的增多,開(kāi)發(fā)者們忙于兼容各種瀏覽器。在這個(gè)期間,實(shí)際已經(jīng)有了針對(duì)各設(shè)備適配的解決方案,只是未成為主流,這種新布局方式叫自適應(yīng)布局(Adaptive Web Design,簡(jiǎn)稱(chēng)AWD)。
在當(dāng)時(shí),大多指的就是寬度自適應(yīng)布局。在這種新思想下,又出現(xiàn)了兩派的具體解決方案:百分比寬度布局和流體式布局(Fluid Layout)。
在當(dāng)時(shí),大家都還沒(méi)有響應(yīng)式布局的概念,但此時(shí)出現(xiàn)了一個(gè)新的詞--漸進(jìn)增強(qiáng)。漸進(jìn)增強(qiáng)出現(xiàn)后,另一個(gè)詞優(yōu)雅降級(jí)也隨之出現(xiàn)了。這里只是舉個(gè)典型的例子:gmail和qqmail。這兩個(gè)都是百分比寬度布局,都屬于自適應(yīng)布局,但有區(qū)別。
qqmail就是css hack的完美體現(xiàn),你用任何一個(gè)瀏覽器,幾乎可以看到同一個(gè)樣子的郵箱,為的是用戶(hù)體驗(yàn)統(tǒng)一。gmail則使用了漸進(jìn)增強(qiáng),你的瀏覽器越新越強(qiáng),你看到的效果就越好,為的是用戶(hù)體驗(yàn)增強(qiáng)。再后來(lái),Google發(fā)布了Android,移動(dòng)互聯(lián)網(wǎng)爆發(fā),html5標(biāo)準(zhǔn)發(fā)布。
互聯(lián)網(wǎng)大戰(zhàn)從PC打到了手機(jī)。手機(jī)雖然屏幕變小了,但是卻提供了更豐富的功能,用戶(hù)要求不斷提高,網(wǎng)站更加看重的是用戶(hù)體驗(yàn)了,所以,谷歌式的漸進(jìn)增強(qiáng)被廣泛認(rèn)可,結(jié)合自適應(yīng)的思想,出現(xiàn)了響應(yīng)式布局 (Responsive Web Design)的概念——2010年由Ethan Marcotte提出。
描述響應(yīng)式界面最著名的一句話(huà)就是“Content is like water”——無(wú)論用戶(hù)正在使用筆記本還是iPad,我們的頁(yè)面都應(yīng)該能夠自動(dòng)切換分辨率、圖片尺寸及相關(guān)腳本功能等,以適應(yīng)不同設(shè)備。
現(xiàn)如今,為何需要考慮多設(shè)備的兼顧呢,依然是因?yàn)闀r(shí)代發(fā)展與生活方式的變遷:
即便是PC或Mac用戶(hù),有查顯示只有一半的人會(huì)將瀏覽器全屏顯示,而剩下的一般人使用多大的瀏覽器,很難預(yù)知;
臺(tái)式機(jī)、投影、電視、筆記本、手機(jī)、平板、手表、VR……智能設(shè)備正在不斷增加,“主流設(shè)備”的概念正在消失;
屏幕分辨率正飛速發(fā)展,同一張圖片在不同設(shè)備上看起來(lái),大小可能天差地別。
結(jié)合自身產(chǎn)品用戶(hù)訪(fǎng)問(wèn)瀏覽器分辨率
鼠標(biāo)、觸屏、筆、攝像頭手勢(shì)……不可預(yù)期的操控方式正在不斷出現(xiàn)。
因此我們需要在了解基本布局方式的特征下,選擇適合自身產(chǎn)品的布局實(shí)現(xiàn)方式。
靜態(tài)式、自適應(yīng)、流體式、響應(yīng)式布局,A+R混合布局的特點(diǎn)對(duì)比如下
靜態(tài)式布局:
窗口縮小后內(nèi)容被遮擋時(shí),拖動(dòng)滾動(dòng)條顯示布局。不管在哪種設(shè)備,哪種瀏覽器上瀏覽都是一個(gè)樣。移動(dòng)設(shè)備上則顯示太小或不全。
自適應(yīng)布局:
用自適應(yīng)技術(shù)(Adaptive)我們可以開(kāi)發(fā)和提供不同的布局來(lái)為類(lèi)似純觸屏或者混合觸屏設(shè)備這樣的一類(lèi)具體場(chǎng)景提供最好的體驗(yàn)。
分別為不同的屏幕分辨率設(shè)備設(shè)計(jì)不同的樣式布局,相當(dāng)于多個(gè)靜態(tài)布局組成的一個(gè)系列合集,每個(gè)靜態(tài)布局對(duì)應(yīng)一個(gè)屏幕分辨率范圍,頁(yè)面通過(guò)百分比自動(dòng)適配設(shè)備屏幕分辨率和可視窗口大小,當(dāng)可視窗口改變時(shí),不會(huì)出現(xiàn)橫向滾動(dòng)條,UI,圖片,文字會(huì)自動(dòng)縮放,元素內(nèi)容、布局、交互方式基本不變。
彈性布局:
以百分比作為頁(yè)面的基本單位,可以適應(yīng)一定范圍內(nèi)所有尺寸的設(shè)備屏幕及瀏覽器寬度,并能完美利用有效空間展現(xiàn)最佳效果。
流體式布局:
屬于自適應(yīng)的一個(gè)子集,也是通過(guò)百分比自動(dòng)適配設(shè)備屏幕分辨率和可視窗口大小,不同于百分比自適應(yīng)的是隨著窗口大小的改變,頁(yè)面的布局會(huì)發(fā)生小的變化,可以進(jìn)行適配調(diào)整,這個(gè)正好與自適應(yīng)相補(bǔ)。
響應(yīng)式布局:
如果從廣義上講,響應(yīng)式布局實(shí)際上就是更好、更機(jī)智、更靈活的去實(shí)現(xiàn)自適應(yīng),他們都算是一種彈性布局。再通俗點(diǎn)講響應(yīng)式重在于「響應(yīng)」它會(huì)隨著設(shè)備屬性(如寬高)的變化。
頁(yè)面的設(shè)計(jì)和開(kāi)發(fā)應(yīng)當(dāng)根據(jù)用戶(hù)行為以及設(shè)備環(huán)境(系統(tǒng)平臺(tái)、屏幕尺寸、屏幕定向等)進(jìn)行相應(yīng)的響應(yīng)和調(diào)整。具體的實(shí)踐方式由多方面組成,包括彈性網(wǎng)格和刪格、布局、圖片、css media query的使用等。
狹義上講,響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)指的是一個(gè)網(wǎng)站能夠兼容多個(gè)終端——而不是為每個(gè)終端做一個(gè)特定的版本。
R和A上的區(qū)別
當(dāng)響應(yīng)式設(shè)計(jì)在基于預(yù)定義斷點(diǎn)之上用CSS或者JS調(diào)整布局和內(nèi)容。調(diào)整方法提供基于用戶(hù)代理和設(shè)備類(lèi)型的預(yù)結(jié)構(gòu)化模版。
他們之間主要的區(qū)別是DOM結(jié)構(gòu),當(dāng)采用響應(yīng)式思維開(kāi)發(fā)時(shí),HTML代碼在各種情況下都會(huì)一樣(除非你用JS移除某些DOM節(jié)點(diǎn)),而在自適應(yīng)開(kāi)發(fā)中我們可能會(huì)有不一樣的代碼結(jié)構(gòu)和體驗(yàn)。
R采用流體+斷點(diǎn),在斷點(diǎn)之間,頁(yè)面依然會(huì)隨窗口大小自動(dòng)縮放(通過(guò)fluid grid),直到遇到斷點(diǎn)改變界面樣式布局甚至內(nèi)容。R一般來(lái)說(shuō)需要在網(wǎng)頁(yè)設(shè)計(jì)初期就開(kāi)始(通常采用mobile first策略),所以舊的網(wǎng)站要做RWD很可能要完全重建。
A只在針對(duì)幾種分辨率(如320,480,760,960,1200,1600px)進(jìn)行優(yōu)化,在斷點(diǎn)之間的自動(dòng)過(guò)渡比較少。而A則采用保留現(xiàn)有桌面網(wǎng)站(desktop version)而對(duì)于更小的分辨率做針對(duì)性的優(yōu)化(適應(yīng)),減小重構(gòu)的成本。
兩種設(shè)計(jì)思維都是有效的,需衡量在項(xiàng)目中有多少組件、復(fù)雜性如何以及是否存在一種體驗(yàn)是適合所有用戶(hù)的。開(kāi)發(fā)web應(yīng)用時(shí)經(jīng)常會(huì)用到響應(yīng)式設(shè)計(jì),例如通過(guò)自適應(yīng)開(kāi)發(fā)來(lái)構(gòu)建定制化體驗(yàn)。
兩種方法各有利弊,但是如果同時(shí)使用它們到底會(huì)得到什么呢?A+R模型結(jié)合了基于單個(gè)主要臨界點(diǎn)的自適應(yīng)和響應(yīng)式方法。
混合式布局就是為不同終端設(shè)備的屏幕分辨率定義布局(適配各種尺寸的PC、手機(jī)、穿戴設(shè)備等等),在每個(gè)布局中,頁(yè)面元素隨著窗口調(diào)整而自動(dòng)適配,混合了百分比、像素為基本單位的組合方式。可以把混合式布局看作是彈性布局、自適應(yīng)布局的融合。
自適應(yīng)布局、彈性布局、混合布局都是響應(yīng)式布局方式的一種。其中自適應(yīng)布局的實(shí)現(xiàn)成本最低,但拓展性比較差;而彈性布局與混合布局效果都是比較理想的響應(yīng)式布局實(shí)現(xiàn)方式。
很多時(shí)候,單一方式的布局響應(yīng)無(wú)法滿(mǎn)足理想效果,需要結(jié)合多種組合方式,但原則上盡可能是保持簡(jiǎn)單輕巧,而且同一斷點(diǎn)內(nèi)(發(fā)生布局改變的臨界點(diǎn)稱(chēng)之為斷點(diǎn),后面內(nèi)容會(huì)講到)保持統(tǒng)一邏輯。
否則頁(yè)面實(shí)現(xiàn)太過(guò)復(fù)雜也會(huì)影響整體體驗(yàn)和頁(yè)面性能。一般通欄、等分結(jié)構(gòu)的布局適合采用彈性布局方式,非等分的多欄結(jié)構(gòu)布局則需要采用混合布局的實(shí)現(xiàn)方式。
選型
如何考慮實(shí)踐過(guò)程中的判斷呢。一是看應(yīng)用場(chǎng)景,二是看如何設(shè)計(jì)“響應(yīng)式”方案。簡(jiǎn)單、輕量的頁(yè)面直接用media query實(shí)現(xiàn)響應(yīng)性就很好。比如blog、小型企業(yè)站之類(lèi)?,F(xiàn)在的CSS框架基本都具備響應(yīng)性。
但請(qǐng)注意響應(yīng)式不僅僅是響應(yīng)式布局。對(duì)于大型站簡(jiǎn)單用media query是遠(yuǎn)遠(yuǎn)不夠的。于是在同一個(gè)controller層上,識(shí)別UA,渲染不同版本的模板,組合相應(yīng)的靜態(tài)資源。這也算是響應(yīng)式。開(kāi)發(fā)及維護(hù)成本明顯提高。
當(dāng)各個(gè)版本間的差異很大時(shí),維護(hù)成本很可能會(huì)大到無(wú)法接受。即便分開(kāi)做,架構(gòu)上也要調(diào)整,后端服務(wù)化,應(yīng)用層app化。
根據(jù)不同公司的技術(shù)特點(diǎn),調(diào)整的成本也難講是否可行。對(duì)于大型站,分開(kāi)做更清晰,同時(shí)用響應(yīng)式組件解決復(fù)用、功能同步的問(wèn)題。總之,根據(jù)場(chǎng)景響應(yīng)式可以從各種層面,各種粒度上做。這是現(xiàn)代web開(kāi)發(fā)的特點(diǎn)。
建議開(kāi)發(fā)一套響應(yīng)式電腦網(wǎng)站(過(guò)渡到平板端,不過(guò)渡到手機(jī)端)和開(kāi)發(fā)一套響應(yīng)式手機(jī)端網(wǎng)站(過(guò)渡到平板端以下的尺寸,不過(guò)渡到平板端)響應(yīng)式布局有可能造成冗余的代碼較多,對(duì)研發(fā)的要求也更高,比如如何更好地讓圖片,適配,UI動(dòng)畫(huà)自適應(yīng)各種布局。
大站還是要考慮數(shù)據(jù)計(jì)算和承載的問(wèn)題,會(huì)對(duì)桌面和移動(dòng)端輸出不同數(shù)據(jù),減輕壓力。
實(shí)踐與技巧
首先,我們需要了解幾種分辨率的差別。
ps:原生應(yīng)用可查詢(xún)橫縱兩個(gè)方向的像素密度,通常瀏覽器可查詢(xún)1個(gè)系統(tǒng)像素對(duì)應(yīng)多少物理像素。而設(shè)計(jì)角度通常需要參考的是所獲取的系統(tǒng)分辨率
以一個(gè)SaaS類(lèi)后臺(tái)產(chǎn)品為例,對(duì)于基本流量來(lái)自Web端網(wǎng)頁(yè)的產(chǎn)品而言,需要了解當(dāng)下的瀏覽器分辨率現(xiàn)狀 Web端不同屏幕分辨率占比情況,數(shù)據(jù)來(lái)源百度統(tǒng)計(jì),如圖所示:
如上所述,選擇適配方式時(shí),設(shè)計(jì)目標(biāo)為:區(qū)分web與pad端可共享的設(shè)計(jì)布局大于手機(jī)端,且產(chǎn)品規(guī)劃上web端為主流量來(lái)源,pad端屬于短期兼顧??紤]技術(shù)維護(hù)成本與開(kāi)發(fā)成本的平衡,于是判斷需要選擇A+R模式來(lái)完成產(chǎn)品的跨端設(shè)計(jì)。
自適應(yīng)(A)方法能讓我們?cè)诓煌脑O(shè)備上有不同的體驗(yàn)、內(nèi)容甚至是功能。如將960px作為主要的自適應(yīng)臨界點(diǎn),根據(jù)全局統(tǒng)計(jì)信息定義,我們會(huì)得到一些相似處:
左側(cè)的可視區(qū)代表整個(gè)屏幕小于960px時(shí)的具體布局和內(nèi)容
右側(cè)的可視區(qū)代表整個(gè)屏幕大于等于960px時(shí)的另一種布局
在使用響應(yīng)式(R)技術(shù)時(shí),我們可以利用主要臨界點(diǎn)創(chuàng)建兩個(gè)互不相同的體驗(yàn)情景,每種體驗(yàn)里,我們都可以在可用空間內(nèi)定義二級(jí)臨界點(diǎn)去調(diào)整布局。
通過(guò)結(jié)合自適應(yīng)和響應(yīng)的方法,我們得到A+R模型。利用自適應(yīng)技術(shù),我們將致力于體驗(yàn)和功能,作出兩種不同的情景設(shè)計(jì)。使用響應(yīng)式組件,我們可以處理上下文內(nèi)的UI組件和布局。
這種設(shè)計(jì)方法要求設(shè)計(jì)師真正了解他們想要提供的體驗(yàn),以便于定義要遵循的模型。此模型非常適合那些在較少功能或結(jié)構(gòu)完全不同的小型移動(dòng)設(shè)備上運(yùn)行的大型APP。就像你看到的,你的產(chǎn)品將具有很強(qiáng)的靈活性,但同時(shí)也很復(fù)雜。
因?yàn)槟阋幚聿煌拇a庫(kù)和環(huán)境(非強(qiáng)制性),Twitter、Facebook和Github將此模式應(yīng)用在他們的移動(dòng)網(wǎng)站上。如果你在移動(dòng)設(shè)備上瀏覽這些網(wǎng)站,則可以根據(jù)移動(dòng)用戶(hù)的期望來(lái)檢驗(yàn)它們是如何改變的用戶(hù)體驗(yàn)的。
刪格
柵格系統(tǒng)可以幫助我們?cè)O(shè)計(jì),但卻不能保證我們的設(shè)計(jì)。它有多種可能的用途,并且每個(gè)設(shè)計(jì)師都可以尋找適合其個(gè)人風(fēng)格的解決方案。對(duì)于簡(jiǎn)化復(fù)雜的響應(yīng)式布局規(guī)則而言,這是一項(xiàng)十分有效的輔助手段。
1. 列和槽(Columns and Gutters)列(Column)用于對(duì)齊內(nèi)容。其中的槽(Gutter)是指相鄰列之間的空間,把控頁(yè)面留白,有助于分隔內(nèi)容。
2. 頁(yè)面邊距(Side Margins)頁(yè)邊距是指內(nèi)容和屏幕邊緣之間的空間。將邊距寬度定義為固定值,這些值決定了每個(gè)屏幕尺寸的最小呼吸空間。
3,用于組成柵格的列數(shù)稱(chēng)為列結(jié)構(gòu)。8、12、16和20是響應(yīng)式布局中最常見(jiàn)的幾種列結(jié)構(gòu)。而這取決于我們對(duì)產(chǎn)品的設(shè)計(jì)要求。12列結(jié)構(gòu)是相對(duì)靈活的。它可以進(jìn)一步細(xì)分,將內(nèi)容排列在4-4-4或3-3-3-3大小的文本框中,也有部分設(shè)計(jì)系統(tǒng)采用來(lái)24列的形式,如Ant-D
4,斷點(diǎn)是指屏幕尺寸的特定范圍,列結(jié)構(gòu)、列寬、槽寬和邊距都取決于斷點(diǎn)。在這個(gè)范圍內(nèi),布局會(huì)根據(jù)可用的屏幕尺寸重新調(diào)整,以獲得最佳的布局視圖。
如果較小的屏幕有足夠的可用空間容納內(nèi)容,則列將按比例縮小。如果一列的內(nèi)容無(wú)法在較小屏幕上顯示,該列將垂直放置圖文內(nèi)容。
5,網(wǎng)格規(guī)則,列跟槽的寬度是以網(wǎng)格作為基本單位來(lái)做增減,所以應(yīng)該先定義好柵格的原子單位,“網(wǎng)紅款”8點(diǎn)網(wǎng)格指的是設(shè)計(jì)頁(yè)面時(shí),也應(yīng)該遵循8點(diǎn)規(guī)律。值得注意的是,列跟槽的值盡量取8的倍數(shù),但不是非得是8的倍數(shù)。
產(chǎn)品中各類(lèi)元素應(yīng)該遵循這個(gè)倍數(shù)原則(圖標(biāo)、組件大小等),不同的設(shè)計(jì)系統(tǒng)根據(jù)自身需求,設(shè)定這個(gè)規(guī)則。例如在Material Design中使用的是2X網(wǎng)格。
6.流體柵格與混合刪格
流體柵格有不同寬度的列,固定的槽和固定的邊距。流體柵格有靈活的內(nèi)容寬度,根據(jù)屏幕大小變化在流體柵格中,列可以增長(zhǎng)或收縮以適應(yīng)可用空間。
混合柵格既有不同的寬度,也有固定寬度。在現(xiàn)代布局中,一些元素超出了網(wǎng)格邊緣,與屏幕邊緣對(duì)齊。頁(yè)眉、頁(yè)腳、出血都是一些常見(jiàn)的例子。
如果內(nèi)容寬度大于可用的屏幕尺寸,那么一個(gè)固定柵格就會(huì)轉(zhuǎn)變成一個(gè)適應(yīng)屏幕可用空間的流動(dòng)?xùn)鸥?,以充分適應(yīng)內(nèi)容。
設(shè)計(jì)需在技術(shù)方案前介入,根據(jù)你的產(chǎn)品特點(diǎn),進(jìn)行設(shè)計(jì)方案評(píng)估,可借助的手段有刪格,網(wǎng)格規(guī)則等,設(shè)計(jì)斷點(diǎn)規(guī)則時(shí),需關(guān)注設(shè)備的常見(jiàn)系統(tǒng)分辨率。
移動(dòng)和桌面設(shè)計(jì)的差別遠(yuǎn)不止是布局問(wèn)題。只要有足夠的編程量,這些差別是可以通過(guò)響應(yīng)式設(shè)計(jì)來(lái)解決的。事實(shí)上,你可以認(rèn)為如果一種設(shè)計(jì)不能兼顧兩種平臺(tái)的主要差別,就不能算是合格的響應(yīng)式設(shè)計(jì)。
但是,如果確實(shí)想要處理好平臺(tái)間的所有差異,我們就回到了原點(diǎn):進(jìn)行兩種不同的設(shè)計(jì)或者使用A+R的模型,在尋求合適的過(guò)程中,關(guān)注技術(shù)的革新。
A與B不是硬幣的正反面,它們?yōu)榱私鉀Q同一個(gè)問(wèn)題而生,是同一種思想的延伸。
文章來(lái)源:站酷 作者:酷家樂(lè)
藍(lán)藍(lán)設(shè)計(jì)( sillybuy.com )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶(hù)體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)
藍(lán)藍(lán)設(shè)計(jì)的小編 http://sillybuy.com