組件是設(shè)計(jì)師常用且基礎(chǔ)的知識(shí)點(diǎn),隨著軟件設(shè)計(jì)和開(kāi)發(fā)越來(lái)越成熟,已經(jīng)延伸出很多的類(lèi)型,能否正確合理的使用也是衡量交互設(shè)計(jì)水平的一個(gè)標(biāo)準(zhǔn)。文章里理論知識(shí)比較少,我想說(shuō)點(diǎn)比較實(shí)用的東西,給大家解惑。所以關(guān)于基本的控件/組件類(lèi)型的基礎(chǔ)知識(shí)不做過(guò)多說(shuō)明,理論和實(shí)踐相輔相成,理論知識(shí)大家可以去優(yōu)秀平臺(tái)學(xué)習(xí)并吸收,但實(shí)踐需要帶入更多的思考。
分清控件和組件
控件可以理解為平臺(tái)系統(tǒng)定義的某種形式,嚴(yán)格意義上來(lái)說(shuō),控件的專(zhuān)業(yè)叫法為“原生控件”,不過(guò)大家都習(xí)慣性的順口說(shuō)“控件”,這樣會(huì)更簡(jiǎn)單點(diǎn)。
組件從字面理解就是組裝而成,在技術(shù)層面,代碼是需要封裝的,那被封裝在一起,就可以形成組件,能自定義內(nèi)容,名稱(chēng)等。
原生控件相比較組件,顆粒感更細(xì),一個(gè)組件可以包含多個(gè)控件,單個(gè)控件也可以作為組件??梢允褂靡粋€(gè)簡(jiǎn)單的例子來(lái)闡述他們的關(guān)系,控件就好比是藥材,那么藥方就可以理解成是一個(gè)組件。如果還不能理解,那可以用更具體的案例來(lái)說(shuō)明下;
如下圖是用戶(hù)登陸流程中的一個(gè)交互組件,該組件由兩種原生控件來(lái)組成,輸入框和按鈕,這樣結(jié)合就構(gòu)成“賬號(hào)輸入”的組件;
再如下圖,單獨(dú)的輸入框控件也可以成為一個(gè)獨(dú)立的“賬號(hào)輸入”組件;
以上兩個(gè)例子,說(shuō)明了組件可以由單一或多個(gè)的控件類(lèi)型進(jìn)行組成,如何去定義組件的構(gòu)成,其實(shí)還需要結(jié)合具體的設(shè)計(jì)需求,上面第一個(gè)組件給賬號(hào)修改增加一個(gè)按鈕的控件,讓用戶(hù)可以通過(guò)按鈕清除所有的字段,讓用戶(hù)直接重新輸入,通過(guò)手動(dòng)和按鈕操作的兩種方式去進(jìn)行賬號(hào)修改,第二個(gè)組件僅支持手動(dòng)鍵入進(jìn)行修改。通過(guò)增加了清除的交互方式,組件的構(gòu)成就會(huì)有不一樣的設(shè)計(jì)方式。
再深入聊下組件
各平臺(tái)基本都有自己獨(dú)立的設(shè)計(jì)體系,有自己定義的組件和組件庫(kù),學(xué)習(xí)組件要了解它分為基礎(chǔ)組件和業(yè)務(wù)/高級(jí)組件兩種類(lèi)型。基礎(chǔ)組件是一種底層組件,例如輸入框、按鈕、單選框;其特點(diǎn)是比較獨(dú)立單一,通用性很強(qiáng),適應(yīng)各種業(yè)務(wù)場(chǎng)景;業(yè)務(wù)組件是一個(gè)基礎(chǔ)組件集合而成的大組件,也可以叫高級(jí)組件,是復(fù)合型的區(qū)塊組件,主要是針對(duì)解決業(yè)務(wù)問(wèn)題;如下截圖是flomo筆記用用的網(wǎng)頁(yè)版本,以它的首頁(yè)為例;頁(yè)面按照左右結(jié)構(gòu)類(lèi)型區(qū)分,可以定義為兩個(gè)大的業(yè)務(wù)組件,由淺入深,可以再細(xì)分,得到再定義更多的業(yè)務(wù)組件,這里,我以“發(fā)布筆記”的組件具體說(shuō)明下,它是怎么組成來(lái)解決業(yè)務(wù)問(wèn)題的;首先我們拆解下組成部分:文本內(nèi)容,工具按鈕(添加標(biāo)簽和圖片、文本編輯、快速引用等三種類(lèi)型),發(fā)布按鈕。用戶(hù)發(fā)布筆記的行為主要為文字輸入-內(nèi)容編輯-發(fā)布完成;結(jié)合用戶(hù)行為和組件設(shè)計(jì),解決了用戶(hù)輸入文本內(nèi)容,給筆記歸納,增加圖片,修改文本樣式,快速引用,最終進(jìn)行發(fā)布的問(wèn)題。產(chǎn)品在迭代過(guò)程中,我們會(huì)發(fā)現(xiàn)更多的需求,業(yè)務(wù)組件就要通過(guò)再優(yōu)化幫用戶(hù)解決實(shí)際問(wèn)題。
學(xué)做組件管理
結(jié)合自己的學(xué)習(xí)和設(shè)計(jì)經(jīng)驗(yàn),我把組件相關(guān)的內(nèi)容和知識(shí)整理定義為組件管理,包括組件的樣式定義,組件和組件庫(kù)設(shè)計(jì),搭建,沉淀優(yōu)化應(yīng)該都算是它的組成部分。組件和組件庫(kù)作用,和基本概念我就不做過(guò)多描述了,畢竟市面上關(guān)于這些內(nèi)容已經(jīng)有很多了,我想從小的點(diǎn)去做深度思考,講點(diǎn)有用的東西,呈現(xiàn)給大家;組件和組件庫(kù)首先一定是遵循和圍繞著設(shè)計(jì)的原則、理念、目標(biāo)去構(gòu)思,如蘋(píng)果的《人機(jī)交互指南》里面提到的系統(tǒng)設(shè)計(jì)三大主旨(清晰、遵從、層次)和六大原則(完整性、一致性、直接性,反饋感、隱喻性、控制感),安卓系統(tǒng)《材料設(shè)計(jì)1,2》中提到的三大原則(材料就是隱喻、大膽,生動(dòng),有意、運(yùn)動(dòng)提供意義)。還有國(guó)內(nèi)b端最權(quán)威的螞蟻設(shè)計(jì)體系A(chǔ)nt design,從設(shè)計(jì)價(jià)值觀延伸設(shè)計(jì)原則,從而思考設(shè)計(jì)模式。
這里可以總結(jié),平臺(tái)在創(chuàng)造設(shè)計(jì)標(biāo)準(zhǔn)時(shí),思考的方向都會(huì)不一樣,所以系統(tǒng)遵循什么,沒(méi)有統(tǒng)一的模式,況且這些名詞本身就很抽象,這需要設(shè)計(jì)師們?nèi)ニ伎紤?yīng)該把平臺(tái)系統(tǒng)設(shè)計(jì)成什么樣。這確實(shí)很依賴(lài)和考驗(yàn)設(shè)計(jì)師各方面的綜合能力。所以組件設(shè)計(jì)和搭建,它并不是某一個(gè)人的事,而是整個(gè)團(tuán)隊(duì)的任務(wù)。
組件和組件庫(kù)的設(shè)計(jì)和搭建過(guò)程中,需要了解系統(tǒng)平臺(tái),是蘋(píng)果端還是安卓,web端,不同的系統(tǒng)設(shè)計(jì)的差異性很大,對(duì)應(yīng)系統(tǒng)的控件類(lèi)型我們也要很熟練的掌握。例如安卓一直保留的原生的底部導(dǎo)航欄的操作控件(返回、主頁(yè)、菜單),反觀蘋(píng)果最早出現(xiàn)在底部的HOME鍵,隨著硬件設(shè)計(jì)的升級(jí),物理按鈕的作用已經(jīng)完全被交互手勢(shì)操作替代,根據(jù)設(shè)計(jì)準(zhǔn)則,可以先設(shè)計(jì)出確定的初版組件樣式,然后設(shè)計(jì)師們要熟悉項(xiàng)目業(yè)務(wù),深挖每個(gè)功能中的不同業(yè)務(wù)場(chǎng)景,并設(shè)計(jì)出對(duì)應(yīng)的業(yè)務(wù)組件;這樣設(shè)計(jì)師最終對(duì)于當(dāng)前組件進(jìn)行整合分類(lèi),做出版本的組件庫(kù);組件和組件庫(kù)是設(shè)計(jì)和開(kāi)發(fā)相結(jié)合的,設(shè)計(jì)師呈現(xiàn)頁(yè)面上的模塊是直觀的,但都是技術(shù)人員進(jìn)行底層代碼拼接的再封裝而成的,有規(guī)模的公司一般都會(huì)做成開(kāi)源的組件庫(kù)。去提升項(xiàng)目人員之間的協(xié)作效率,復(fù)用率高,節(jié)省成本。如下圖是Ant design里面的部分按鈕組件的樣式和代碼演示,作為國(guó)內(nèi)獨(dú)一檔的免費(fèi)學(xué)習(xí)的設(shè)計(jì)體系網(wǎng)站。如果大家能夠從頭到尾研究一遍,相信對(duì)你構(gòu)建組件和組件庫(kù)有十分大的幫助。
最后組件和組件庫(kù)的優(yōu)化迭代是貫穿整個(gè)產(chǎn)品設(shè)計(jì)的生命周期的,從搜集組件需求、思考組件優(yōu)化、設(shè)計(jì)組件優(yōu)化方案、驗(yàn)收更新組件和組件庫(kù);
搜集組件需求
項(xiàng)目角度:設(shè)計(jì)師開(kāi)發(fā)過(guò)程中遺漏的、新的業(yè)務(wù)場(chǎng)景中發(fā)現(xiàn)的組件問(wèn)題,設(shè)計(jì)和開(kāi)發(fā)者評(píng)審討論出來(lái)的包括影響協(xié)作效率的,不合理的問(wèn)題;用戶(hù)體驗(yàn):產(chǎn)品中的用戶(hù)反饋的功能體驗(yàn)不好,使用時(shí)體驗(yàn)差的模塊;外部借鑒:團(tuán)隊(duì)人員從優(yōu)秀的組建案例中發(fā)現(xiàn)的可借鑒的需求;
思考組件優(yōu)化
思考方向1:設(shè)計(jì)師可以查閱資料,研究?jī)?yōu)秀的組件平臺(tái),從成熟的產(chǎn)品中查看同類(lèi)的組件設(shè)計(jì)案例;或者和開(kāi)發(fā)者、設(shè)計(jì)師進(jìn)行深度交流,得到有用的建議;
思考方向2:結(jié)合業(yè)務(wù)場(chǎng)景,最好能夠?qū)?yīng)用場(chǎng)景窮舉梳理出來(lái),具體到某個(gè)的功能,考慮該功能里存在的每一個(gè)場(chǎng)景中,組件需要有什么樣的狀態(tài)和變化;
設(shè)計(jì)組件優(yōu)化方案
設(shè)計(jì)師根據(jù)以上步驟完成組件優(yōu)化的分析之后,可以相對(duì)應(yīng)的設(shè)計(jì)組件優(yōu)化方案,組織開(kāi)發(fā)人員一起多次的評(píng)審,大家一起去討論完善,最終技術(shù)人員再進(jìn)行組件代碼的開(kāi)發(fā)和封裝;組件設(shè)計(jì)優(yōu)化,設(shè)計(jì)師要注意在既定的設(shè)計(jì)原則下合理優(yōu)化,要保留分析材料和思考過(guò)程,進(jìn)行有理有據(jù)的評(píng)審論證;
驗(yàn)收更新組件和組件庫(kù)
當(dāng)開(kāi)發(fā)人員將組件樣式通過(guò)代碼落地之后,優(yōu)化中的組件方案需要帶入到實(shí)際功能場(chǎng)景中進(jìn)行測(cè)試檢查,驗(yàn)證組建優(yōu)化的是否符合預(yù)期,在優(yōu)化過(guò)程中,可以用一張《組建優(yōu)化表》進(jìn)行記錄,可以方便項(xiàng)目人員追蹤和查看。
組件設(shè)計(jì)的應(yīng)用和思考
組件的設(shè)計(jì)本質(zhì)上也是為了解決某種特定場(chǎng)景的問(wèn)題。例如提示彈窗,為了讓用戶(hù)在操作過(guò)程中有反饋提示,提示中又可以通過(guò)解決某種場(chǎng)景問(wèn)題,選擇讓用戶(hù)進(jìn)行操作或者不操作,所以平臺(tái)設(shè)計(jì)出這種彈窗組件,即模態(tài)和非模態(tài)彈窗類(lèi)型。下面通過(guò)兩個(gè)例子,結(jié)合功能和場(chǎng)景具體分析產(chǎn)品應(yīng)該如何做組件設(shè)計(jì);
案例1:支付寶“商家轉(zhuǎn)賬功能”組件設(shè)計(jì)
我們?nèi)ド痰曩?gòu)買(mǎi)東西使用支付寶支付的過(guò)程中,可以通過(guò)掃描商家二維碼,進(jìn)行轉(zhuǎn)賬交易,轉(zhuǎn)賬支付的流程主要包括輸入數(shù)額,選擇支付方式,確認(rèn)支付;因?yàn)槊總€(gè)流程中的組件都十分復(fù)雜,我們僅拿其中一個(gè)流程,對(duì)用戶(hù)操作過(guò)程中涉及的組件進(jìn)行拆解說(shuō)明;輸入金額和添加備注流程:頁(yè)面的組件主要是用戶(hù)信息文本,輸入框、備注組件、鍵盤(pán)控件,彈框組件;這個(gè)流程包括2個(gè)行為事件,4個(gè)大的業(yè)務(wù)場(chǎng)景;
行為事件一:用戶(hù)在商店通過(guò)掃碼商家二維碼,分別兩次給商家轉(zhuǎn)賬20000和100000元的金額,
業(yè)務(wù)場(chǎng)景1:用戶(hù)沒(méi)有輸入任何金額
業(yè)務(wù)場(chǎng)景2:用戶(hù)轉(zhuǎn)賬輸入的金額沒(méi)有超過(guò)限制
業(yè)務(wù)場(chǎng)景3:用戶(hù)轉(zhuǎn)賬輸入的金額超過(guò)最大限制
業(yè)務(wù)場(chǎng)景123主要應(yīng)用金額輸入框組件,輸入框組件根據(jù)用戶(hù)操作行為,會(huì)有不一樣的設(shè)計(jì),用戶(hù)沒(méi)有任何操作,輸入框內(nèi)有默認(rèn)文案提示“輸入付款金額”,用戶(hù)輸入金額后,計(jì)算單位超過(guò)‘百’,數(shù)字金額上方會(huì)有單位提示,同時(shí)顯示刪除按鈕,支持刪除,重新輸入,業(yè)務(wù)場(chǎng)景2中根據(jù)金額輸入范圍定義了產(chǎn)品業(yè)務(wù)規(guī)則,再細(xì)分出三種場(chǎng)景,不同范圍內(nèi)的金額,可以對(duì)應(yīng)的組件設(shè)計(jì)方案解決確認(rèn)轉(zhuǎn)賬確認(rèn)問(wèn)題;
(1)當(dāng)輸入金額范圍在1-50000,進(jìn)入新頁(yè)面,通過(guò)點(diǎn)擊按鈕組件,進(jìn)行轉(zhuǎn)賬確認(rèn)
(2)當(dāng)輸入金額范圍在50000-99999,在當(dāng)前頁(yè)面使用模態(tài)彈框組件,進(jìn)行轉(zhuǎn)賬確認(rèn)
(3)當(dāng)輸入金額范圍在100000-999999,進(jìn)入新頁(yè)面,重新輸入框內(nèi)輸入轉(zhuǎn)賬金額,進(jìn)行確認(rèn),若兩次金額不一致,出現(xiàn)彈窗提示用戶(hù)操作。
當(dāng)輸入的金額超過(guò)限制后,彈框組件配合進(jìn)行超限的toast提示。
通過(guò)拆解行為事件1,我們細(xì)分出了3個(gè)業(yè)務(wù)場(chǎng)景,通過(guò)運(yùn)用輸入框、鍵盤(pán)、和toast彈窗,它們相互關(guān)聯(lián)解決了輸入金額產(chǎn)生的各種問(wèn)題;
無(wú)金額輸入時(shí),輸入框能給予用戶(hù)提示,這是比較常見(jiàn)的輸入框組件設(shè)計(jì),預(yù)置提示文本;
輸入金額未超出限制,輸入框中會(huì)帶入計(jì)量單位,這就是組件設(shè)計(jì)的細(xì)微之處,轉(zhuǎn)賬金額是一個(gè)關(guān)聯(lián)自己財(cái)產(chǎn)的行為操作,應(yīng)當(dāng)是需要謹(jǐn)慎的,所以計(jì)量單位也是在用戶(hù)輸入過(guò)程中出現(xiàn),給用戶(hù)一個(gè)提示,沒(méi)有任何打斷操作的意思,出現(xiàn)的時(shí)機(jī)很適合,再加上輸入的文本數(shù)字已經(jīng)足夠醒目,能夠提示用戶(hù)輸入有足夠的準(zhǔn)確度,如果沒(méi)有加入這個(gè)字段,確實(shí)也不影響用戶(hù)操作,但這種雙重衡量的方式,潛意識(shí)里會(huì)讓自己輸入的更放心,不怕自己有誤差;這就是組件設(shè)計(jì)給用戶(hù)帶來(lái)的驚喜感。
金額超出限制后,通過(guò)組件toast提示“付款金額超限”,第一提示框組件很好的限制鍵盤(pán)的數(shù)字輸入,避免用戶(hù)無(wú)效輸入,第二toast提示框的觸發(fā)時(shí)機(jī)設(shè)計(jì),這里的方案是當(dāng)輸入金額超百萬(wàn),按數(shù)字鍵盤(pán)的時(shí)候就會(huì)給予提示,而不是等用戶(hù)輸入完之后,再去按確認(rèn)鍵的時(shí)候,彈出來(lái)提示金額超限。
行為事件二:用戶(hù)點(diǎn)擊備注按鈕,添加轉(zhuǎn)賬信息。
業(yè)務(wù)場(chǎng)景4:確認(rèn)完成輸入金額后,給商戶(hù)添加備注信息,20個(gè)字以?xún)?nèi);
輸入轉(zhuǎn)賬金額后,文字鍵盤(pán)上方出現(xiàn)備注按鈕,點(diǎn)擊彈出備注信息彈窗,在彈窗的輸入框中寫(xiě)備注信息,其實(shí)添加備注,可以在頁(yè)面中使用文本框,可為何去使用彈窗中增加輸入框,確認(rèn)之后再展示到頁(yè)面中呢?輸入金額和添加備注的行為的優(yōu)先級(jí)來(lái)看,備注信息應(yīng)該是比較低的,信息的展示的重要性也比較低。首先如果使用文本框,和輸入框的組件層級(jí)在同一級(jí),用戶(hù)的關(guān)注點(diǎn)會(huì)被干擾,所以使用不突出的文字按鈕組件進(jìn)行區(qū)別,另外備注文字按鈕出現(xiàn)的觸發(fā)條件也是因?yàn)橛休斎虢痤~這個(gè)動(dòng)作,所以備注的信息展示在產(chǎn)品設(shè)計(jì)中就是很弱。另外在彈窗輸入框中也提示了備注信息20個(gè)字以?xún)?nèi),有這樣的信息規(guī)則,彈窗組件比文本框更適合短文本的信息錄入,這樣和金額輸入框組件能夠被區(qū)分。
轉(zhuǎn)賬是涉及財(cái)產(chǎn)安全的業(yè)務(wù),所以組件的設(shè)計(jì)除了解決不同場(chǎng)景下用戶(hù)體驗(yàn)問(wèn)題(及時(shí)反饋、合理提示、增加驚喜、操作方便),還要處理核心的業(yè)務(wù)問(wèn)題(保證用戶(hù)的財(cái)產(chǎn)問(wèn)題)
案例2:“高清晰度體驗(yàn)引導(dǎo)用戶(hù)付費(fèi)功能”的組件設(shè)計(jì)
最近在做智慧電視項(xiàng)目時(shí),產(chǎn)品經(jīng)理提出在播放器頁(yè)面,做一個(gè)“非會(huì)員用戶(hù)可以體驗(yàn)視頻高清晰度“的需求,主要目的是為了引導(dǎo)用戶(hù)體驗(yàn)高清晰,提升用戶(hù)的會(huì)員充值率。這里就通過(guò)解析如何通過(guò)組件設(shè)計(jì)解決這個(gè)問(wèn)題;
首先我們結(jié)合業(yè)務(wù)規(guī)則有以下兩點(diǎn)
(1):該視頻內(nèi)容資源是付費(fèi)試看還是免費(fèi)
(2):高清晰度體驗(yàn)時(shí)間,單次內(nèi)容高清晰度體驗(yàn)時(shí)間,累計(jì)高清晰度體驗(yàn)總時(shí)間
考慮到用戶(hù)在全屏播放器,需要盡量少的對(duì)用戶(hù)觀影降低干擾,所以在設(shè)計(jì)時(shí),利用提示框的組件,針對(duì)不同場(chǎng)景狀態(tài),對(duì)組件進(jìn)行設(shè)計(jì)優(yōu)化。
用戶(hù)觀看付費(fèi)影片,因?yàn)樵嚳刺崾荆ㄟ^(guò)操作按鈕鍵,所以高清晰度體驗(yàn)的提示,通過(guò)提示文案來(lái)引導(dǎo),避免按鍵操作沖突,組件設(shè)計(jì)如下圖;
在體驗(yàn)過(guò)程中,播放器單次高清晰度體驗(yàn)時(shí)間會(huì)有狀態(tài)變化,即正在體驗(yàn)-將要結(jié)束-已結(jié)束,組件設(shè)計(jì)如下圖:
累計(jì)體驗(yàn)總時(shí)間結(jié)束后,再次進(jìn)入到播放器,組件設(shè)計(jì)變?yōu)樘崾居脩?hù)該片有高清晰度,組件設(shè)計(jì)如下圖:
用戶(hù)觀看免費(fèi)影片,因?yàn)槠疵赓M(fèi),沒(méi)有其他場(chǎng)景下的按鍵沖突,所以高清晰度體驗(yàn)的提示,通過(guò)提示“文案+按鈕”來(lái)引導(dǎo),組件設(shè)計(jì)如下圖;
體驗(yàn)過(guò)程中,播放器單次高清晰度體驗(yàn)時(shí)間也有狀態(tài)變化,即正在體驗(yàn)-已結(jié)束,組件設(shè)計(jì)如下圖:
累計(jì)體驗(yàn)總時(shí)間結(jié)束后,再次進(jìn)入到播放器,組件設(shè)計(jì)變?yōu)樘崾居脩?hù)該片有高清晰度,并可以點(diǎn)擊操作,組件設(shè)計(jì)如下圖:
在提示組件設(shè)計(jì)整個(gè)過(guò)程中,考慮了用戶(hù)會(huì)員身份、視頻資源付費(fèi)類(lèi)型、高清晰度體驗(yàn)時(shí)間等等因素,要持續(xù)保持用戶(hù)能夠觸達(dá)會(huì)員充值的頁(yè)面,所以在不同的情況下,始終保留遙控器按鍵可以操作,引導(dǎo)他們付費(fèi),雖然頻繁的提示可能讓用戶(hù)反感,但最終功能上線(xiàn)后,也確實(shí)拿到了一定的成果,提示組件設(shè)計(jì)讓用戶(hù)付費(fèi)充值率有很大的提升。
總結(jié)
組件設(shè)計(jì)的解析到這里就告一段落了。帶大家回顧下文章的內(nèi)容,主要有四點(diǎn),第一點(diǎn)通過(guò)例子解釋了控件和組件的區(qū)別,第二點(diǎn)介紹了基礎(chǔ)和業(yè)務(wù)組件,第三點(diǎn)講解了如何進(jìn)行組件管理的內(nèi)容,第四點(diǎn)通過(guò)兩個(gè)具體的案例講解了組件設(shè)計(jì)在實(shí)際產(chǎn)品中的應(yīng)用和我的一些思考;總結(jié)以上幾點(diǎn),組件設(shè)計(jì)一定不能脫離用戶(hù)場(chǎng)景和產(chǎn)品業(yè)務(wù)。在這個(gè)基準(zhǔn)下思考組件設(shè)計(jì)才會(huì)有最優(yōu)解。
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。