編輯導語:如何為一款產品制定合適的界面規則?隨着產品的迭代更新,作為設計師,則更需要在瞭解產品特性的情況下、設計出合理且有效的界面佈局。本篇文章裏,作者就對web產品設計適配選型做出介紹,並提出了他的看法。
現如今,幾乎所有的網頁設計都要進行響應式和自適應設計,才能讓產品能夠覆蓋到更多終端。接手一個產品設計的初期,制定界面適配規則時,你是否也有過如下疑問:
- 寬度單位我是用百分比還是px?還是rem?區別是什麼?
- 什麼是屏幕尺寸、屏幕分辨率、屏幕像素密度、設備像素、CSS像素?瀏覽器窗口大小和設備大小和分辨率大小區是什麼區別?
- 什麼是響應式網站,自適應又是什麼?兩者有何區別和聯繫?
- 百分比寬度佈局和流式佈局和前者的關係是什麼?
- 既然響應式這麼流行,為何淘寶、京東等沒有去做,而是單獨開發了一個移動端版?這裏面有那些坑需要避開?
在早期,硬件設備落後,網頁使用的是絕對靜態佈局為主,絕對固定寬度的佈局被稱為是靜態佈局(Static Layout),也有叫固定佈局(Fixed Layout)。
後隨時代變遷,技術發展。因瀏覽器的增多,開發者們忙於兼容各種瀏覽器。在這個期間,實際已經有了針對各設備適配的解決方案,只是未成為主流,這種新佈局方式叫自適應佈局(Adaptive Web Design,簡稱AWD)。
在當時,大多指的就是寬度自適應佈局。
在這種新思想下,又出現了兩派的具體解決方案:百分比寬度佈局和流體式佈局(Fluid Layout)。
在當時,大家都還沒有響應式佈局的概念,但此時出現了一個新的詞——漸進增強。漸進增強出現後,另一個詞優雅降級也隨之出現了。這裏只是舉個典型的例子:Gmail和QQmail。這兩個都是百分比寬度佈局,都屬於自適應佈局,但有區別。
QQmail就是CSS hack的完美體現。你用任何一個瀏覽器,幾乎可以看到同一個樣子的郵箱,為的是用户體驗統一。
Gmail則使用了漸進增強,你的瀏覽器越新越強,你看到的效果就越好,為的是用户體驗增強。再後來,Google發佈了Android,移動互聯網爆發,html5標準發佈。
互聯網大戰從PC打到了手機。手機雖然屏幕變小了,但是卻提供了更豐富的功能。用户要求不斷提高,網站更加看重的是用户體驗了。
所以,谷歌式的漸進增強被廣泛認可。結合自適應的思想,出現了響應式佈局(Responsive Web Design)的概念——2010年由Ethan Marcotte提出。
描述響應式界面最著名的一句話就是“Content is like water”——無論用户正在使用筆記本還是iPad,我們的頁面都應該能夠自動切換分辨率、圖片尺寸及相關腳本功能等,以適應不同設備。
現如今,為何需要考慮多設備的兼顧呢?依然是因為時代發展與生活方式的變遷:
- 即便是PC或Mac用户,調查顯示只有一半的人會將瀏覽器全屏顯示,而剩下的一般人使用多大的瀏覽器,很難預知;
- 台式機、投影、電視、筆記本、手機、平板、手錶、VR……智能設備正在不斷增加,“主流設備”的概念正在消失;
- 屏幕分辨率正飛速發展,同一張圖片在不同設備上看起來,大小可能天差地別;
- 結合自身產品用户訪問瀏覽器分辨率;
- 鼠標、觸屏、筆、攝像頭手勢……不可預期的操控方式正在不斷出現。
因此我們需要在瞭解基本佈局方式的特徵下,選擇適合自身產品的佈局實現方式。
三、佈局方式對比靜態式、自適應、流體式、響應式佈局,A+R混合佈局的特點對比如下。
1. 靜態式佈局窗口縮小後內容被遮擋時,拖動滾動條顯示佈局。不管在哪種設備,哪種瀏覽器上瀏覽都是一個樣。移動設備上則顯示太小或不全。
2. 自適應佈局用自適應技術(Adaptive),我們可以開發和提供不同的佈局,來為類似純觸屏或者混合觸屏設備這樣的一類具體場景提供最好的體驗。
分別為不同的屏幕分辨率設備設計不同的樣式佈局,相當於多個靜態佈局組成的一個系列合集。
每個靜態佈局對應一個屏幕分辨率範圍,頁面通過百分比自動適配設備屏幕分辨率和可視窗口大小。
當可視窗口改變時,不會出現橫向滾動條,UI、圖片、文字會自動縮放,元素內容、佈局、交互方式基本不變。
3. 彈性佈局以百分比作為頁面的基本單位,可以適應一定範圍內所有尺寸的設備屏幕及瀏覽器寬度,並能完美利用有效空間展現最佳效果。
4. 流體式佈局屬於自適應的一個子集,也是通過百分比自動適配設備屏幕分辨率和可視窗口大小。不同於百分比自適應的是,隨着窗口大小的改變,頁面的佈局會發生小的變化,可以進行適配調整,這個正好與自適應相補。
5. 響應式佈局如果從廣義上講,響應式佈局實際上就是更好、更機智、更靈活地去實現自適應,他們都算是一種彈性佈局。再通俗點講響應式重在於「響應」它會隨着設備屬性(如寬高)的變化。
頁面的設計和開發應當根據用户行為以及設備環境(系統平台、屏幕尺寸、屏幕定向等)進行相應的響應和調整。具體的實踐方式由多方面組成,包括彈性網格和刪格、佈局、圖片、CSS media query的使用等。
狹義上講,響應式網頁設計指的是一個網站能夠兼容多個終端——而不是為每個終端做一個特定的版本。
6. A+R混合模型佈局1)R和A上的區別
當響應式設計在基於預定義斷點之上用CSS或者JS調整佈局和內容。調整方法提供基於用户代理和設備類型的預結構化模版。
他們之間主要的區別是DOM結構,當採用響應式思維開發時,HTML代碼在各種情況下都會一樣(除非你用JS移除某些DOM節點),而在自適應開發中我們可能會有不一樣的代碼結構和體驗。
R採用流體+斷點,在斷點之間,頁面依然會隨窗口大小自動縮放(通過fluid grid),直到遇到斷點改變界面樣式佈局甚至內容。R一般來説需要在網頁設計初期就開始(通常採用mobile first策略),所以舊的網站要做RWD很可能要完全重建。
A只在針對幾種分辨率(如320、480、760、960、1200、1600px)進行優化,在斷點之間的自動過渡比較少。而A則採用保留現有桌面網站(desktop version)而對於更小的分辨率做針對性的優化(適應),減小重構的成本。
兩種設計思維都是有效的,需衡量在項目中有多少組件、複雜性如何以及是否存在一種體驗是適合所有用户的。開發web應用時經常會用到響應式設計,例如通過自適應開發來構建定製化體驗。
兩種方法各有利弊,但是如果同時使用它們到底會得到什麼呢?A+R模型結合了基於單個主要臨界點的自適應和響應式方法。
混合式佈局就是為不同終端設備的屏幕分辨率定義佈局(適配各種尺寸的PC、手機、穿戴設備等等),在每個佈局中,頁面元素隨着窗口調整而自動適配,混合了百分比、像素為基本單位的組合方式。可以把混合式佈局看作是彈性佈局、自適應佈局的融合。
自適應佈局、彈性佈局、混合佈局都是響應式佈局方式的一種。其中自適應佈局的實現成本最低,但拓展性比較差;而彈性佈局與混合佈局效果都是比較理想的響應式佈局實現方式。
很多時候,單一方式的佈局響應無法滿足理想效果,需要結合多種組合方式,但原則上儘可能是保持簡單輕巧,而且同一斷點內(發生佈局改變的臨界點稱之為斷點,後面內容會講到)保持統一邏輯。否則頁面實現太過複雜也會影響整體體驗和頁面性能。
一般通欄、等分結構的佈局適合採用彈性佈局方式,非等分的多欄結構佈局則需要採用混合佈局的實現方式。
2)選型
如何考慮實踐過程中的判斷呢?
一是看應用場景,二是看如何設計“響應式”方案。簡單、輕量的頁面直接用media query實現響應性就很好。比如blog、小型企業站之類。現在的CSS框架基本都具備響應性。
但請注意響應式不僅僅是響應式佈局。對於大型站簡單用media query是遠遠不夠的。
於是在同一個controller層上,識別UA,渲染不同版本的模板,組合相應的靜態資源,這也算是響應式。開發及維護成本明顯提高。
當各個版本間的差異很大時,維護成本很可能會大到無法接受。即便分開做,架構上也要調整,後端服務化,應用層App化。
根據不同公司的技術特點,調整的成本也難講是否可行。對於大型站,分開做更清晰,同時用響應式組件解決複用、功能同步的問題。總之,根據場景響應式可以從各種層面、各種粒度上做。這是現代web開發的特點。
建議開發一套響應式電腦網站(過渡到平板端,不過渡到手機端)和開發一套響應式手機端網站(過渡到平板端以下的尺寸,不過渡到平板端)。
響應式佈局有可能造成冗餘的代碼較多,對研發的要求也更高,比如如何更好地讓圖片、適配、UI動畫自適應各種佈局。
大站還是要考慮數據計算和承載的問題,會對桌面和移動端輸出不同數據,減輕壓力。
四、實踐與技巧首先,我們需要了解幾種分辨率的差別。
PS:原生應用可查詢橫縱兩個方向的像素密度,通常瀏覽器可查詢1個系統像素對應多少物理像素。而設計角度通常需要參考的是所獲取的系統分辨率。
以一個SaaS類後台產品為例。
對於基本流量來自Web端網頁的產品而言,需要了解當下的瀏覽器分辨率現狀 Web端不同屏幕分辨率佔比情況,數據來源百度統計,如圖所示:
如上所述,選擇適配方式時,設計目標為:區分web與pad端可共享的設計佈局大於手機端,且產品規劃上web端為主流量來源,pad端屬於短期兼顧。考慮技術維護成本與開發成本的平衡,於是判斷需要選擇A+R模式來完成產品的跨端設計。
自適應(A)方法能讓我們在不同的設備上有不同的體驗、內容甚至是功能。如將960px作為主要的自適應臨界點,根據全局統計信息定義,我們會得到一些相似處:
- 左側的可視區代表整個屏幕小於960px時的具體佈局和內容;
- 右側的可視區代表整個屏幕大於等於960px時的另一種佈局。
在使用響應式(R)技術時,我們可以利用主要臨界點創建兩個互不相同的體驗情景。每種體驗裏,我們都可以在可用空間內定義二級臨界點去調整佈局。
通過結合自適應和響應的方法,我們得到A+R模型。利用自適應技術,我們將致力於體驗和功能,作出兩種不同的情景設計。使用響應式組件,我們可以處理上下文內的UI組件和佈局。
這種設計方法要求設計師真正瞭解他們想要提供的體驗,以便於定義要遵循的模型。此模型非常適合那些在較少功能或結構完全不同的小型移動設備上運行的大型APP。就像你看到的,你的產品將具有很強的靈活性,但同時也很複雜。
因為你要處理不同的代碼庫和環境(非強制性),Twitter、Facebook和Github將此模式應用在他們的移動網站上。如果你在移動設備上瀏覽這些網站,則可以根據移動用户的期望來檢驗它們是如何改變的用户體驗的。
五、其他輔助手段——柵格柵格系統可以幫助我們設計,但卻不能保證我們的設計。它有多種可能的用途,並且每個設計師都可以尋找適合其個人風格的解決方案。對於簡化複雜的響應式佈局規則而言,這是一項十分有效的輔助手段。
1. 列和槽(Columns and Gutters)列(Column)用於對齊內容。
其中的槽(Gutter)是指相鄰列之間的空間,把控頁面留白,有助於分隔內容。
2. 頁面邊距(Side Margins)頁邊距是指內容和屏幕邊緣之間的空間。將邊距寬度定義為固定值,這些值決定了每個屏幕尺寸的最小呼吸空間。
3. 列結構用於組成柵格的列數稱為列結構。
8、12、16和20是響應式佈局中最常見的幾種列結構。而這取決於我們對產品的設計要求。
12列結構是相對靈活的。它可以進一步細分,將內容排列在4-4-4或3-3-3-3大小的文本框中,也有部分設計系統採用來24列的形式,如Ant-D。
4. 斷點是指屏幕尺寸的特定範圍,列結構、列寬、槽寬和邊距都取決於斷點。
在這個範圍內,佈局會根據可用的屏幕尺寸重新調整,以獲得最佳的佈局視圖。
如果較小的屏幕有足夠的可用空間容納內容,則列將按比例縮小。如果一列的內容無法在較小屏幕上顯示,該列將垂直放置圖文內容。
5. 網格規則列跟槽的寬度是以網格作為基本單位來做增減,所以應該先定義好柵格的原子單位。“網紅款”8點網格指的是設計頁面時,也應該遵循8點規律。值得注意的是,列跟槽的值儘量取8的倍數,但不是非得是8的倍數。
產品中各類元素應該遵循這個倍數原則(圖標、組件大小等),不同的設計系統根據自身需求,設定這個規則。例如在Material Design中使用的是2X網格。
6. 流體柵格與混合柵格流體柵格有不同寬度的列,固定的槽和固定的邊距。流體柵格有靈活的內容寬度,根據屏幕大小變化在流體柵格中,列可以增長或收縮以適應可用空間。
混合柵格既有不同的寬度,也有固定寬度。在現代佈局中,一些元素超出了網格邊緣,與屏幕邊緣對齊。頁眉、頁腳、出血都是一些常見的例子。
如果內容寬度大於可用的屏幕尺寸,那麼一個固定柵格就會轉變成一個適應屏幕可用空間的流動柵格,以充分適應內容。
六、結語設計需在技術方案前介入,根據你的產品特點,進行設計方案評估。可藉助的手段有刪格、網格規則等。設計斷點規則時,需關注設備的常見系統分辨率。
移動和桌面設計的差別遠不止是佈局問題。只要有足夠的編程量,這些差別是可以通過響應式設計來解決的。事實上,你可以認為如果一種設計不能兼顧兩種平台的主要差別,就不能算是合格的響應式設計。
但是,如果確實想要處理好平台間的所有差異,我們就回到了原點:進行兩種不同的設計或者使用A+R的模型,在尋求合適的過程中,關注技術的革新。
A與B不是硬幣的正反面,它們為了解決同一個問題而生,是同一種思想的延伸。
作者:神樂、沙拉;公眾號:酷家樂用户體驗設計
本文由 @酷家樂用户體驗設計 原創發佈於人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基於 CC0 協議