1.安裝
Windows 安裝請(qǐng)參考
默認(rèn)安裝為c:/usr/ ??梢詧?zhí)行如下文件,以便啟動(dòng)snmp agent:
snmpd
會(huì)提示需要配置snmpd.conf。
No log handling enabled - turning on stderr logging
Warning: no access control information configured.
It's unlikely this agent can serve any useful purpose in this state.
Run "snmpconf -g basic_setup" to help you configure the snmpd.conf file for this agent.
NET-SNMP version 5.5
不必使用提示中的命令,因?yàn)榇嗣钜昧藀erl,但是perl的對(duì)應(yīng)模塊無(wú)法跑起來(lái)??磥?lái)perl要完蛋的傳說(shuō)并不是空穴來(lái)風(fēng)。
snmpd.conf可以自己創(chuàng)建到/usr/etc/snmp/snmpd.conf內(nèi)。
2.修改配置文件
配置之前的說(shuō)明:我在網(wǎng)上看到的所有配置都是com2sec,group,access這三個(gè)配置,但是從默認(rèn)的snmp.conf文件中有一段話:
沒(méi)必要使用 com2sec/group/access配置,使用ro(w)user,ro(w)community結(jié)合合適的views,就可以覆蓋大多數(shù)需求了。
2.1 配置監(jiān)聽(tīng)地址
snmpd默認(rèn)監(jiān)聽(tīng)本地IP的UDP161端口,等待snmp請(qǐng)求
agentAddress udp:161
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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ù)
2.2 配置視圖(view)
格式:view viewName type oid[mask]
參數(shù)說(shuō)明:
viewName : view名稱(chēng)
type : 有兩個(gè)值:include和exclude(包括或者排除)
oid:可以訪問(wèn)的oid(mib子樹(shù))
[mask]:對(duì)oid的掩碼 (可選參數(shù))
案例:
view systemonly included .1.3.6.1.2.1
2.3 配置共同體(community)
格式:ro(w)community communityName source
參數(shù)說(shuō)明:
rocommunity定義一個(gè)只讀權(quán)限的共同體,rwcommunity定義一個(gè)讀寫(xiě)權(quán)限的共同體
rocommunity6或 rwcommunity6表示監(jiān)聽(tīng)I(yíng)Pv6。
communityName:共同體名稱(chēng)
source:可以訪問(wèn)的IP地址范圍,默認(rèn)為”default”,即任何IP都能訪問(wèn)。
可選參數(shù):-V viewName 限制共同體只能訪問(wèn)viewName下的節(jié)點(diǎn)
實(shí)際配置文件
agentAddress udp:161
view systemonly included .1.3.6.1.2.1
rocommunity public default
3. 測(cè)試
修改完配置之后,重啟snmpd:
snmpd
連接測(cè)試:(該節(jié)點(diǎn)表示獲取主機(jī)內(nèi)存大小)
snmpwalk -v 1 -c public localhost .1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Windows DESKTOP-70OA76Q 6.2.9200 Professional
得到類(lèi)似以上的結(jié)果,就說(shuō)明snmpd配置成功。
配置MIB庫(kù)
Windows版本的snmp自帶有很多MIB,位于C:\usr\share\snmp\mibs
因此可以對(duì)OID和MIB name做互相轉(zhuǎn)換:
snmptranslate -On SNMPv2-MIB::sysDescr.0
.1.3.6.1.2.1.1.1.0
snmptranslate .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0
添加自己的mib
之前的筆記有提到自己創(chuàng)建的一個(gè)定制mib文件
https://github.com/1000copy/tbit-guard-snmp/blob/master/tbit.mib
可以把它加入到C:\usr\share\snmp\mibs目錄內(nèi),文件名無(wú)所謂。然后為snmptranslate加入選項(xiàng) -mALL ,表示加載所有在此目錄內(nèi)的mib文件:
snmptranslate -m ALL .1.3.6.1.4.1.66666
你應(yīng)該看到如下消息,表明mib加載成功:
tbitinc::tbit
詳細(xì)的說(shuō)明如下:
-m MIBLIST
指定一個(gè)用冒號(hào)分隔的MIB模塊列表(不是文件),以便為這個(gè)應(yīng)用程序加載。 這將覆蓋(或增加)環(huán)境變量MIBS、snmp.conf的內(nèi)容。指令mibs,以及硬編碼到Net-SNMP庫(kù)中的MIBs列表。如果MIBLIST有一個(gè)前導(dǎo)的'-'或'+'字符,那么所列出的MIB模塊將被加載到默認(rèn)列表之外,分別位于該列表之前或之后。
否則,將加載指定的MIB,而不是這個(gè)默認(rèn)列表。特殊關(guān)鍵字ALL用于加載MIB目錄搜索列表中的所有MIB模塊。 每一個(gè)名字不以". "開(kāi)頭的文件都會(huì)被解析為是一個(gè)
MIB文件。
-M DIRLIST
指定一個(gè)以冒號(hào)分隔的目錄列表來(lái)搜索MIB。 這將覆蓋(或增強(qiáng))環(huán)境變量MIBDIRS和snmp.conf指令mibdirs。
以及硬編碼到 Net-SNMP 庫(kù)中的默認(rèn)目錄 (/usr/share/snmp/mibs)。
如果DIRLIST有一個(gè)前導(dǎo)的'-'或'+'字符,那么給定的目錄會(huì)被添加到默認(rèn)列表中,在這個(gè)列表的目錄之前或之后進(jìn)行搜索。
分別進(jìn)行搜索。 否則,將搜索指定的目錄,而不是這個(gè)默認(rèn)列表。
請(qǐng)注意,列表中出現(xiàn)在后面的目錄要比前面的目錄優(yōu)先。 要避免搜索任何MIB目錄,請(qǐng)將MIBDIRS環(huán)境中的
變量為空字符串("")。
請(qǐng)注意,使用-m選項(xiàng)或mibs配置指令指定的MIB將從-M選項(xiàng)(或等價(jià)物)列出的目錄中加載。
mibfile指令采用的是指定MIB文件的完整路徑,所以不需要在MIB目錄搜索列表中出現(xiàn)。
今天為大家?guī)?lái)的文章是「空狀態(tài)」設(shè)計(jì),良好的空狀態(tài)設(shè)計(jì)能提升產(chǎn)品體驗(yàn),有效留存用戶(hù)。在這里把這篇文章分享給大家!
很多時(shí)候,設(shè)計(jì)師需要在公開(kāi)場(chǎng)合借用幻燈片演示設(shè)計(jì)作品,或者給客戶(hù)展示的設(shè)計(jì)方案,又或者是需要在文章當(dāng)中,展示作品,選取配圖。如果你希望你的展示和演講更加具有吸引力,那么可能需要針對(duì)這些視覺(jué)素材進(jìn)行處理,讓你的觀眾或者讀者,被內(nèi)容吸引,被信息打動(dòng),能夠 Get 到你所要表達(dá)的東西。
今天這篇文章,梳理了 20 個(gè)對(duì)關(guān)于幻燈片/演示文稿的處理技巧和經(jīng)驗(yàn)總結(jié),希望能夠幫到你。
在創(chuàng)建任何用來(lái)展示的幻燈片之時(shí), 你首先要搞清楚一個(gè)問(wèn)題——你的目標(biāo)或者目的是什么。明確了這一點(diǎn),才能做好下一步的設(shè)計(jì)。
除了了解自己的目標(biāo),你還要搞清楚你的觀眾或者你的受眾是做什么,有什么特征,對(duì)什么感興趣,會(huì)具備什么樣的動(dòng)機(jī),這樣你在設(shè)計(jì)的時(shí)候,才能夠更加具有針對(duì)性。如果是甲方,那么甲方是什么樣的人?你是否要提供一個(gè)具有代入感的故事,在最后再進(jìn)行報(bào)價(jià)是否合適?搞清楚觀眾,后面的問(wèn)題你就有答案了。
如果你的幻燈片準(zhǔn)備得過(guò)長(zhǎng),那么最好大概每20分鐘就需要中斷,適當(dāng)休息一下,或者調(diào)整演示內(nèi)容的媒體形態(tài),讓你的聽(tīng)眾可以借此修整,并重新集中注意力。
講故事能夠更好地同用戶(hù)建立聯(lián)系,保持用戶(hù)的參與感,集中注意力。如果用戶(hù)無(wú)法集中注意力,那么你的展示和設(shè)計(jì)做得再好都沒(méi)有用。你可以參考一些常見(jiàn)的、有效的敘事框架,拿捏好關(guān)鍵的因素:
關(guān)鍵角色:客戶(hù)、用戶(hù)、組織、團(tuán)隊(duì)等;
核心問(wèn)題:挑戰(zhàn)、痛點(diǎn)、風(fēng)險(xiǎn)等;
框架指南:產(chǎn)品、公司、服務(wù)等;
完整歷程:解決問(wèn)題的愿景、具體執(zhí)行計(jì)劃等;
抵達(dá)成功:光明的未來(lái)、最終的成就等;
這意味著,如果你的幻燈片當(dāng)中的內(nèi)容,下面的觀看者無(wú)法在 8 秒內(nèi)消化,那么它可能就失去效果,并且用戶(hù)會(huì)快速分心。
幻燈片要簡(jiǎn)短,不要讓它像書(shū)本一樣堆滿(mǎn)信息,你應(yīng)該提供最快速有效的簡(jiǎn)短展示,減少文字,增加輔助的視覺(jué)效果,幫助用戶(hù)集中注意力。
如果你的文本內(nèi)容無(wú)法進(jìn)一步增減,那么你需要做的就是梳理出它的層級(jí)關(guān)系,讓字體的層級(jí)來(lái)輔助觀看者更快 Get 到其中的信息。我們習(xí)慣于快速掃視,而不是逐字閱讀。
凸顯重要內(nèi)容,控制好字號(hào)大小,排版結(jié)構(gòu),讓觀看者能夠清晰閱讀內(nèi)容。過(guò)于鮮艷的色彩會(huì)產(chǎn)生視覺(jué)頻閃,對(duì)比度過(guò)低會(huì)讓可讀性極差。
在實(shí)際的展示的過(guò)程中,展示者在電腦上看到的,和最終在大屏幕上演示的內(nèi)容是不一樣。演示給下面觀眾的內(nèi)容一定要簡(jiǎn)約直觀,而更多的輔助信息只需要顯示在展示者自己的電腦上,作為提示即可。
提取最重要的信息點(diǎn),使用更大的展示性的字體來(lái)呈現(xiàn),這是有助于讓這些信息脫穎而出的,而不是簡(jiǎn)單地、沒(méi)有篩選地鋪陳出來(lái)。
信息圖和簡(jiǎn)單的數(shù)據(jù)展示有著極大的差別,信息圖所展示的信息更易于被觀看者理解和吸收,使用信息圖還能讓整個(gè)展示過(guò)程更加視覺(jué)化、富有創(chuàng)意。
我經(jīng)常會(huì)聽(tīng)到這樣的要求:「這套幻燈片只能有7個(gè)頁(yè)面,同時(shí)我們不能刪除任何內(nèi)容。」
千萬(wàn)不要將內(nèi)容塞到固定數(shù)量的幻燈片當(dāng)中,那是沒(méi)有任何意義的。一套用來(lái)演示的幻燈片的數(shù)量應(yīng)該是可以增刪的,它們的數(shù)量取決于你所要展示內(nèi)容的多少,以及呈現(xiàn)的方式。對(duì)于絕大多數(shù)的展示和演講而言,20~30 張幻燈片是一個(gè)合理的數(shù)量。
留白是制作幻燈片時(shí)最容易被忽略的元素,通常而言,我在修改幻燈片的時(shí)候,將留白的空間放大三倍,視覺(jué)上的呼吸感就正正好好。
好的圖片素材,通常會(huì)有著相對(duì)充沛的感情和自然的敘事。在你的幻燈片當(dāng)中,需要采用更加富有真實(shí)感的照片,以營(yíng)造真實(shí)的敘事感。不幸的是,這種設(shè)計(jì)知易行難,絕大多數(shù)的圖庫(kù)所提供的照片都缺乏這種應(yīng)有的真實(shí)感。當(dāng)然, Unsplash.com 所提供的照片,相對(duì)而言會(huì)好一些,而且是免費(fèi)的。
影響幻燈片視覺(jué)樣式的因素有很多,主題、受眾、品牌等等等等,都會(huì)有影響。但是不論情況如何,你都應(yīng)該讓整個(gè)幻燈片所采用的字體、圖標(biāo)、配色、插畫(huà)的樣式始終保持一致。其中,最常用的方法是定義整個(gè)幻燈片的模板,來(lái)協(xié)助你保持一致性。
不要把幻燈片用信息全部填滿(mǎn),可以在其中插入一些可以幫助觀看者「中場(chǎng)休息」的幻燈片,它可以起到過(guò)渡作用,也可以幫助觀看者不用一直緊繃著情緒。
轉(zhuǎn)場(chǎng)動(dòng)效和動(dòng)畫(huà)可能會(huì)成就你的整場(chǎng)演示,也可能讓它淪為一場(chǎng)災(zāi)難。我的建議是,盡量讓動(dòng)畫(huà)和動(dòng)效微妙一點(diǎn),讓它們緊貼內(nèi)容,對(duì)信息提供支撐,而不是喧賓奪主。
對(duì)于較長(zhǎng)且復(fù)雜的演示,讓觀眾看到進(jìn)度條,了解整個(gè)演示的進(jìn)程是非常有必要的,當(dāng)他們感受到演示的進(jìn)程,就能體會(huì)到掌控感和安全感。
做好幻燈片之后,一定要自己排練一下整個(gè)過(guò)程,走一遍之后會(huì)讓你對(duì)于整個(gè)演示過(guò)程中,哪里有問(wèn)題,哪里要改進(jìn)有更清晰的認(rèn)知。借助排練來(lái)排查問(wèn)題,迭代展示,非常有必要。
當(dāng)然,設(shè)計(jì)幻燈片和設(shè)計(jì) APP、網(wǎng)頁(yè)是截然不同的,但是設(shè)計(jì)思維層面上,這幾個(gè)領(lǐng)域確實(shí)完全相通的。你可以借用各種設(shè)計(jì)規(guī)則和方法來(lái)將幻燈片設(shè)計(jì)得更加合理優(yōu)秀。
文章來(lái)源:優(yōu)設(shè) 作者:Taras Bakusevych
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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ù)
在B端產(chǎn)品中,數(shù)據(jù)主要通過(guò)表格的形式展現(xiàn)。本文是我從實(shí)際工作出發(fā),結(jié)合項(xiàng)目和過(guò)去經(jīng)驗(yàn)對(duì)于復(fù)雜業(yè)務(wù)類(lèi)的表格設(shè)計(jì)的一次總結(jié)。
表格(Table),又稱(chēng)為表,是用來(lái)收集、整理、組織、分析數(shù)據(jù)的二維矩陣。它既是一種可視化交流模式,又是一種組織整理數(shù)據(jù)的手段。
通常表格的組成元素以及相關(guān)元素會(huì)有多個(gè)部分,筆者根據(jù)自己設(shè)計(jì)表格的工作經(jīng)驗(yàn)將表格概括為容器、篩選區(qū)、功能性按鈕、表頭、表體以及底欄等六個(gè)部分,其各個(gè)部分包含的相關(guān)元素如圖所示。
容器:包含表格的所有內(nèi)容。
篩選區(qū):包括搜索和條件篩選。方便用戶(hù)快速查詢(xún)定位數(shù)據(jù),一般位于表格上方。
功能性按鈕:比如常見(jiàn)的[新增]按鈕和各種批量操作按鈕。
表頭:說(shuō)明數(shù)據(jù)的內(nèi)容,可以包含篩選、排序等功能。
表體:包含行和列數(shù)據(jù),按列可以分為多選列、數(shù)據(jù)列、操作列。(多選列=多選框;數(shù)據(jù)列=呈現(xiàn)業(yè)務(wù)展現(xiàn)需要的信息;操作列=針對(duì)單行數(shù)據(jù)的操作按鈕,比如管理、編輯信息等。)
底欄:包含數(shù)據(jù)量、單頁(yè)條目、總條目、分頁(yè)等,底欄數(shù)據(jù)也可以放置在表格頂部。
1)幾種常見(jiàn)的風(fēng)格樣式
a.網(wǎng)格型:表格有均勻而明顯的分割線,邊框單元格比較明顯。
b.水平線型:僅顯示水平線可減少整個(gè)網(wǎng)格的視覺(jué)噪聲。
c.斑馬條紋型:隔行交替使用不同底色來(lái)區(qū)分?jǐn)?shù)據(jù)。
d.自由形式:移除所有分割線,通過(guò)盡可能減少視覺(jué)噪聲來(lái)創(chuàng)建極簡(jiǎn)外觀。
2)關(guān)于樣式的選取技巧
網(wǎng)格型:對(duì)于數(shù)據(jù)之間的關(guān)系緊密(列信息較多而沒(méi)有足夠空間用留白來(lái)分割信息)且有對(duì)比關(guān)系的。
水平線型:它能顯著減輕表格在垂直方向的視覺(jué)重量,提升用戶(hù)進(jìn)行大量數(shù)據(jù)對(duì)比時(shí)的速度。因此對(duì)于所有數(shù)據(jù)集大小,此樣式都是最常見(jiàn)的。
斑馬條紋型:每行交替使用不同的顏色背景是幫助用戶(hù)在閱讀時(shí)保持其位置的另一種好方法。對(duì)于較大的數(shù)據(jù)集,建議使用此樣式,在較大的數(shù)據(jù)集中,交替模式將很清晰,并且不會(huì)引起特定行突出顯示的混亂。
自由形式:對(duì)于小型數(shù)據(jù)集,如果用戶(hù)在閱讀時(shí)不需要幫助就可以保持位置,則建議使用此樣式。
信息內(nèi)容的有效傳達(dá)是表格設(shè)計(jì)的本質(zhì),就表格本身而言應(yīng)該是隱型的,應(yīng)該讓用戶(hù)注意力聚焦在核心內(nèi)容上。所以,邊框的顏色應(yīng)非常淡,不能妨礙快速瀏覽。
表格是為可讀性而生的,一個(gè)結(jié)構(gòu)清晰的布局能大大提升用戶(hù)對(duì)信息的接收速度和理解程度。因此,設(shè)計(jì)易讀,易掃視,易比較,易操作的表格結(jié)構(gòu)是表格設(shè)計(jì)的首要目標(biāo)。
下面我將以公司財(cái)務(wù)中臺(tái)的表格改版為例,逐步說(shuō)明表格中每個(gè)結(jié)構(gòu)的設(shè)計(jì)。
這是改版前后樣式對(duì)比圖:
篩選區(qū)可以看作表格的導(dǎo)航,由搜索和篩選這兩部分組成。一般搜索和篩選會(huì)同時(shí)出現(xiàn),但是兩者一般很少同時(shí)使用來(lái)對(duì)數(shù)據(jù)進(jìn)行定位。搜索更多的是對(duì)單一或者包含某個(gè)字段的的數(shù)據(jù)來(lái)進(jìn)行定位;篩選則是用來(lái)查詢(xún)一類(lèi)數(shù)據(jù)。
根據(jù)MECE分析法,篩選區(qū)可以有以下的表現(xiàn)形式:
常用搜索少用篩選,若篩選項(xiàng)多,可以選擇隱藏篩選項(xiàng),篩選少可以展示出來(lái);
搜索和篩選都常用,可以將搜索和篩選都展示出來(lái);
常用篩選少用搜索,篩選和搜索同時(shí)展示;
篩選和搜索都不常用,展示搜索隱藏篩選。
1)搜索
在樣式上,搜索可以分為簡(jiǎn)單搜索、標(biāo)簽搜索、高級(jí)搜索等三類(lèi)。
簡(jiǎn)單搜索:由一個(gè)搜索框和一個(gè)按鈕組成??梢暂斎胍粋€(gè)或多個(gè)條件進(jìn)行搜索。
標(biāo)簽搜索:在簡(jiǎn)單搜索的基礎(chǔ)上加上標(biāo)簽,即先選標(biāo)簽,在輸入搜索內(nèi)容。
高級(jí)搜索:即點(diǎn)擊更多展開(kāi)其他搜索條件,減少了更多條件對(duì)用戶(hù)的干擾,但降低了易發(fā)現(xiàn)性。
2)篩選
根據(jù)篩選的位置,可以分為標(biāo)簽篩選、表頭篩選兩類(lèi)。
3)案例小講堂
對(duì)于數(shù)據(jù)集較大的B端系統(tǒng)來(lái)說(shuō),往往篩選條件比較多,都將其展示出來(lái)會(huì)導(dǎo)致空間占比過(guò)大,影響了用戶(hù)對(duì)表格信息的獲取。下面以我公司的財(cái)務(wù)中臺(tái)為例,講講如何優(yōu)化篩選區(qū),希望對(duì)大家有所啟示。
3.2.3 版本中篩選區(qū)樣式
篩選條件全部展開(kāi),目的是讓用戶(hù)對(duì)信息進(jìn)行快速的查詢(xún)、過(guò)濾,以快速準(zhǔn)確完成目標(biāo)任務(wù)。但業(yè)務(wù)復(fù)雜,數(shù)據(jù)集過(guò)多少,篩選條件也相應(yīng)增加(空間占比大),看起來(lái)非常冗余,不利于快速定位目標(biāo)。為了平衡掃描、查詢(xún)、過(guò)濾、分析等這些操作,復(fù)雜業(yè)務(wù)的表格區(qū)篩選需要進(jìn)行一定的優(yōu)化處理,這樣才能滿(mǎn)足滿(mǎn)足業(yè)務(wù)需求同時(shí),又符合用戶(hù)心智模型。
方案A 整齊劃一
整合篩選項(xiàng),采用表頭篩選+標(biāo)簽篩選的樣式,縮減篩選區(qū)的頁(yè)面空間占比。
討論結(jié)果:雖然這個(gè)方案使篩選區(qū)的空間占比縮小,整體頁(yè)面也看似整潔不少。但表頭篩選在復(fù)雜的業(yè)務(wù)系統(tǒng)中存在幾個(gè)弊端:
a.數(shù)據(jù)集往往很龐大,表格不能展示所有字段,往往采用列固定的形式來(lái)呈現(xiàn)數(shù)據(jù)的完整性。以財(cái)務(wù)中臺(tái)為例,高頻篩選功能已被遮擋(如上圖),篩選前需先對(duì)表格進(jìn)行橫向滾動(dòng),無(wú)端增加操作;
b.應(yīng)無(wú)法展示全部字段,用戶(hù)無(wú)法清晰的感知到篩選了哪些內(nèi)容,增加認(rèn)知學(xué)習(xí)成本;
c.表頭中的屬性并不是都可以進(jìn)行篩選,用戶(hù)不可感知哪些可以篩選,需要滑動(dòng)表格檢索。
方案B 強(qiáng)調(diào)主次關(guān)系
采用展開(kāi)式的標(biāo)簽篩選樣式,對(duì)不常用的篩選項(xiàng)做隱藏處理。但因業(yè)務(wù)場(chǎng)景的復(fù)雜度,高頻篩選功能還是很多,沒(méi)有解決本質(zhì)的問(wèn)題,如下圖:
方案C 分狀態(tài)展示(逐漸呈現(xiàn))
在方案B的基礎(chǔ)上進(jìn)行了優(yōu)化。提煉與流程相關(guān)的狀態(tài),按步驟顯示,每一步只顯示當(dāng)前需要關(guān)注的內(nèi)容,如圖:
狀態(tài)的提煉過(guò)程
1)整理每個(gè)單據(jù)的狀態(tài),理清關(guān)系
結(jié)合業(yè)務(wù)流程可以很明顯的注意到,單據(jù)只有通過(guò)了審核才能收款,只有收款才能進(jìn)行核銷(xiāo)。狀態(tài)是一種遞進(jìn)關(guān)系(審核 ?? 收款 ?? 核銷(xiāo))。
2)結(jié)合財(cái)務(wù)人員的工作流,提煉出單據(jù)的以下幾種狀態(tài),之前存在到問(wèn)題(表格中單行數(shù)據(jù)的操作不一致),也得到了完美的解決。如圖:
1)按鈕的表現(xiàn)形式
建議在復(fù)雜系統(tǒng)設(shè)計(jì)中使用圓角矩形的按鈕樣式。
理由如下:
a.人眼處理圓角更容易(認(rèn)知負(fù)荷說(shuō))
Jürg N?nni(Visual Perception的作者)表示,視網(wǎng)膜中區(qū)處理正圓形的時(shí)候是最快速的,而處理邊邊角角的時(shí)候則比較費(fèi)力,大腦處理的速度也較慢。于是,長(zhǎng)得圓潤(rùn)的圓角矩形相較于一般矩形,對(duì)于使用者來(lái)說(shuō)就容易接納許多。
Barrow Neurological Institute (巴羅神經(jīng)病學(xué)研究)的研究也顯示,一個(gè)物體的顯著度與邊角的角度呈線性變化,銳角相較于鈍角要顯得更明顯突出。換句話說(shuō),角度越尖銳,物體就看起來(lái)越明亮;而越明亮的物體就越難以直視。
如上圖所示角度越尖銳,看起來(lái)越顯眼,在視覺(jué)上也比較令人感到明亮,不適,大腦的認(rèn)知符合也越高。
b.使相似的內(nèi)容更容易被區(qū)別
舉個(gè)例子,如下圖所示,即便間距相同,B 排的圓角矩形辨識(shí)度還是明顯比A 排的矩形高。
這是為什么呢?
首先,第一眼看過(guò)去的時(shí)候,A 排的矩形整體是連在一起的,中間找不到斷點(diǎn)。而B(niǎo) 排矩形,因?yàn)橛袌A角的關(guān)系,所以斷點(diǎn)很明顯。
其次,兩種矩形的視覺(jué)聚焦:A 排由于直角的關(guān)系,視覺(jué)聚焦向外推,整體的效果比較發(fā)散。這會(huì)使得第一眼看過(guò)去的時(shí)候,容易分不清楚哪一條邊框?qū)儆谀囊粔K矩形。反之B 排因?yàn)閳A角收攏的關(guān)系,視覺(jué)聚焦向中心推,區(qū)塊就比較容易區(qū)別開(kāi)來(lái)。
綜上所示,圓角矩形是非常有效率的容器,在復(fù)雜場(chǎng)景業(yè)務(wù)中(存在很多種功能型按鈕),按鈕采用圓角矩形樣式最提效。
這里要注意,圓角不是越大越好
在相同面積中,按鈕的可操作區(qū)域隨著圓角的增大而遞減,因此在同等尺寸下的按鈕中,小圓角的按鈕明顯比大圓角的按鈕更容易操作。
同時(shí)在實(shí)際業(yè)務(wù)中,按鈕常常被當(dāng)作原子與下拉框聯(lián)動(dòng)組成下拉菜單控件。如若使用半圓按鈕則無(wú)疑增加了下拉框的設(shè)計(jì)難度并且匹配起來(lái)也會(huì)略顯突兀。
2)批量操作按鈕的位置思考
來(lái)看個(gè)舉個(gè)例子(針對(duì)財(cái)務(wù)中臺(tái)批量操作的優(yōu)化方案)
現(xiàn)存問(wèn)題
方案A 信息前置
批量操作按鈕全部展開(kāi)不做折疊處理,信息前置來(lái)降低認(rèn)知成本,方便用戶(hù)記憶。
討論結(jié)果:對(duì)于復(fù)雜業(yè)務(wù)來(lái)說(shuō),會(huì)有很多批量操作功能,按鈕很多,造成頁(yè)面擁擠,進(jìn)而影響用戶(hù)操作體驗(yàn);一個(gè)位置出現(xiàn)2個(gè)主按鈕樣式,不推薦。
方案B 沉浸式操作體驗(yàn)
對(duì)于一開(kāi)始不可用的批量操作按鈕進(jìn)行隱藏,勾選激活狀態(tài),顯示在篩選區(qū)。
討論結(jié)果:方案B的阻斷性強(qiáng) — 無(wú)法兼顧批量操作和數(shù)據(jù)篩選功能,無(wú)法滿(mǎn)足復(fù)雜系統(tǒng)的場(chǎng)景操作。
方案C 上內(nèi)容下操作,前2個(gè)方案的優(yōu)化
不做隱藏,類(lèi)灰布置于底部。勾選觸發(fā)操作條件,未做勾選時(shí),用戶(hù)點(diǎn)擊時(shí)給出引導(dǎo)操作提示
為什么選擇方案C?理由如下:
首先,根據(jù)古騰堡原則,用戶(hù)的在做表格操作的時(shí)候,視覺(jué)流是左做到右,從上到下,方案A和方案B的視覺(jué)落腳點(diǎn)在表格的上方,顯然是不符合眼動(dòng)規(guī)律的。
其次,批量操作的功能屬于財(cái)務(wù)中臺(tái)的核心功能點(diǎn),隱藏不是第一選擇,而是類(lèi)置灰的特除處理(在按鈕旁給提示信息)
2.3表頭設(shè)計(jì)
表頭在能夠概括的情況下,盡量簡(jiǎn)練、準(zhǔn)確,一般可根據(jù)上下文關(guān)系來(lái)進(jìn)行減短簡(jiǎn)化,以達(dá)到節(jié)省表格頭部空間和減輕視覺(jué)壓力的作用,讓用戶(hù)注意力聚焦在數(shù)據(jù)本身。如果精簡(jiǎn)后的生僻字段難以自我解釋?zhuān)梢愿粋€(gè)釋義標(biāo)識(shí),鼠標(biāo)懸停時(shí)出現(xiàn)該字段的詳細(xì)解釋?zhuān)瑫r(shí)滿(mǎn)足新手用戶(hù)、普通用戶(hù)以及專(zhuān)家用戶(hù)的需求。
在數(shù)據(jù)的對(duì)齊方式上,有以下3個(gè)建議:
a.文本左對(duì)齊
b.數(shù)字右對(duì)齊
c.表頭與信息內(nèi)容對(duì)齊方式一致
文本左對(duì)齊,符合正常的心智模型(閱讀習(xí)慣從左到右);表頭與內(nèi)容對(duì)齊一致,則是為了簡(jiǎn)化和降低視覺(jué)噪音,以便更好的獲取數(shù)據(jù)信息。數(shù)字右對(duì)齊,有利于數(shù)據(jù)間的對(duì)比。
要注意的一個(gè)細(xì)節(jié),例如,當(dāng)列數(shù)=2的時(shí)候,由于列與列直接的間距過(guò)大,導(dǎo)致兩者的關(guān)聯(lián)性較弱,如圖:
這時(shí)又該如何處理?
為了增強(qiáng)列與列之間的相關(guān)性,當(dāng)鼠標(biāo)hover在行的時(shí)候,產(chǎn)生高亮。這種方式可能不是最優(yōu)的,但目前只能想到這種方法,如果讀者有更好的想法歡迎留言。
2)數(shù)字的字體選擇
建議選用:Helvetica Neue、Helvetica、Arial、sans-serif.
蘋(píng)方在數(shù)字字符上,不同數(shù)字寬度不一致,導(dǎo)致千位分隔符不在一條線上。而Helvetica Neue數(shù)字等寬,千位分隔符有序的排列在一條線上。所以,選擇Helvetica Neue作為數(shù)字字體的首選字體。數(shù)值上下對(duì)比的時(shí)候,相同位置的數(shù)字在同一條豎線上,更加容易對(duì)比。
3)對(duì)操作項(xiàng)進(jìn)行“解耦”處理
在財(cái)務(wù)中臺(tái)系統(tǒng)中,常常由于權(quán)限的不同或者單據(jù)狀態(tài)不同這兩種原因,使得每行的數(shù)據(jù)擁有不同的操作項(xiàng),如下圖所示:
存在的問(wèn)題:
當(dāng)信息過(guò)載,操作項(xiàng)這個(gè)list非常長(zhǎng)的話,頁(yè)面將會(huì)非常擁擠;
文字按鈕因?yàn)橐曈X(jué)特征比較明顯,造成了不必要的分散注意力;
誤操作率相對(duì)較高,同樣因?yàn)楸砀窨臻g有限,當(dāng)操作區(qū)非??拷?,很容易一不小心就點(diǎn)錯(cuò)了。
針對(duì)這個(gè)問(wèn)題所出的解決方案,如下:
方案A 下拉框樣式
討論結(jié)果:下拉框中可能存在不同操作,同樣避免不了誤操作這個(gè)問(wèn)題。
方案B 錯(cuò)位顯示
討論結(jié)果:首先,這樣的設(shè)計(jì)浪費(fèi)大量的屏幕空間;其次,浪費(fèi)開(kāi)發(fā)工作量!因?yàn)樵诹斜碇袑?shí)現(xiàn)一系列權(quán)限判斷和操作,在詳情界面中往往還需要再開(kāi)發(fā)一次相同的權(quán)限判斷和操作;再次,不同單據(jù)可能存在操作順序不一樣,上下移動(dòng)鼠標(biāo)會(huì)存在不同操作,用戶(hù)代價(jià)非常高。
方案C 以不變應(yīng)萬(wàn)變
回歸『一個(gè)界面一個(gè)用戶(hù)任務(wù)』的原則,列表中的單行數(shù)據(jù)只保留[查看]或[管理]操作,所有其它的單獨(dú)操作都去往該單據(jù)的詳情界面完成。
討論結(jié)果:從開(kāi)發(fā)的角度上看,此方案界面高度解耦,功能迭代方便,節(jié)約開(kāi)發(fā)工作量;從認(rèn)知成本上看,列表界面操作高度一致性,利于養(yǎng)成用戶(hù)習(xí)慣;從操作效率上看,在詳情頁(yè)用戶(hù)會(huì)明顯確認(rèn)目標(biāo)單據(jù),幾乎不會(huì)誤操作; 同時(shí)此方案節(jié)約了大量屏幕空間,更有利于用戶(hù)對(duì)信息的獲??;
4)關(guān)于表格中套表格的解決方案
場(chǎng)景:在財(cái)務(wù)中臺(tái)中,有這樣一種用戶(hù),需要對(duì)表格內(nèi)的數(shù)據(jù)進(jìn)行對(duì)比并編輯。
來(lái)看看之前的頁(yè)面:
這樣處理的不足點(diǎn):
1.在查看和編輯信息時(shí),無(wú)效的信息太多。降低了獲取信息的效率;
2.切換單條數(shù)據(jù)時(shí),頁(yè)面出現(xiàn)跳動(dòng),無(wú)法快速檢索到相對(duì)應(yīng)的信息;
對(duì)此,在3.3.2版本中,我們對(duì)其做了相應(yīng)的優(yōu)化。運(yùn)用側(cè)視圖(快速視圖)的方式來(lái)呈現(xiàn)信息。一旦選擇一個(gè)單據(jù),它就會(huì)從側(cè)面彈出的。
這個(gè)方案,它可以保持上下文,易于使用,即使是在垂直滾動(dòng)視圖中顯示大量字段的情況下也效果良好。同時(shí)信息呈現(xiàn)的地方是固定的,利于檢索,查找。
5)行高的制定方法
開(kāi)始之前首先明確一下開(kāi)發(fā)是怎么實(shí)現(xiàn)行高的。
從上圖可以看出,開(kāi)發(fā)在實(shí)現(xiàn)設(shè)計(jì)稿時(shí),通常是按照行高來(lái)寫(xiě)的。
因此,表格行高=文字行高+上下間距。其中,文字行高可以設(shè)定為字號(hào)的1.2~1.8倍,上下間距可以設(shè)定為字號(hào)的1~1.5倍。
行高影響每行信息的易讀性。除了上述的做法外,還有以下2種做法,來(lái)保證各場(chǎng)景下獲取信息的效率與易讀性。
做法1:不同分辨率使用不同行高
設(shè)計(jì)兩套不同的行高,在大分辨率下顯示較高的行高,給數(shù)據(jù)間提供更多呼吸的空間;在小分辨率下顯示較小的行高,使一屏內(nèi)可以看到更多的行高。Gmail就是這樣設(shè)計(jì)的,如下圖所示:
做法2:自定義行高
自定義行高為興奮需求,可以提高用戶(hù)的用戶(hù)體驗(yàn)。所以我們可以視表格的具體情況來(lái)設(shè)計(jì)設(shè)置行高的形式,可以放置在設(shè)置按鈕里,也可以在外部按鈕較少的情況下展示出來(lái)。
2.5底欄設(shè)計(jì)
最后是表格的底欄,底欄也是不可缺少的一部分,承載的作用主要是告訴用戶(hù)數(shù)據(jù)條數(shù)以及當(dāng)前位置。分頁(yè)的設(shè)計(jì)是根據(jù)不同的場(chǎng)景進(jìn)行選擇最優(yōu)的設(shè)計(jì)方案。在不需要定點(diǎn)跳轉(zhuǎn)的場(chǎng)景,建議建議刪除跳頁(yè),刪除多于的功能,使頁(yè)面簡(jiǎn)潔、清爽。
表格中經(jīng)常會(huì)出現(xiàn)空數(shù)據(jù)或無(wú)數(shù)據(jù)的情況,留白處理會(huì)給用戶(hù)造成一定的困惑和誤解,是系統(tǒng)沒(méi)有加載出來(lái)嗎?明智的做法,是無(wú)數(shù)據(jù)時(shí)用「-」來(lái)填充顯示,數(shù)據(jù)為零時(shí)與上下數(shù)據(jù)單位、小數(shù)點(diǎn)相同的0來(lái)顯示。
盡量減少視覺(jué)符號(hào)的使用,因?yàn)橐曈X(jué)符號(hào)可能會(huì)使你的用戶(hù)界面復(fù)雜,產(chǎn)生難以理解的內(nèi)容。去除不必要的視覺(jué)干擾,例如不必要的圖標(biāo)、無(wú)規(guī)律的色彩等。
當(dāng)列表中數(shù)據(jù)過(guò)長(zhǎng)時(shí),我們需要根據(jù)屏幕寬度調(diào)整列表展示方式,超過(guò)列表默認(rèn)寬度的內(nèi)容可以省略,通常用...表示,鼠標(biāo)移入后出現(xiàn)氣泡展示全部?jī)?nèi)容。
位置:建議展示在上方,因?yàn)槲覀兊拈喿x順序是從上到下,鼠標(biāo)向下移動(dòng)時(shí)不會(huì)被上面的氣泡遮擋住。氣泡面積不宜過(guò)大,根據(jù)屏幕尺寸控制在一定比例,一版不超過(guò)內(nèi)容區(qū)的四分之一,展示不下的內(nèi)容可以在氣泡中增加滾動(dòng)條。
感謝閱讀!本文結(jié)合了實(shí)際項(xiàng)目經(jīng)驗(yàn)對(duì)表格設(shè)計(jì)做了一次總結(jié),在具體項(xiàng)目中,你可能需要根據(jù)產(chǎn)品特性和用戶(hù)需求進(jìn)行調(diào)整。如果你還有什么好的想法和建議,可以在評(píng)論里留言討論。
文章來(lái)源:站酷 作者:Hi_Nick
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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ù)
單頁(yè)面應(yīng)用特征
假設(shè): 在一個(gè) web 頁(yè)面中,有1個(gè)按鈕,點(diǎn)擊可跳轉(zhuǎn)到站內(nèi)其他頁(yè)面。
多頁(yè)面應(yīng)用: 點(diǎn)擊按鈕,會(huì)從新加載一個(gè)html資源,刷新整個(gè)頁(yè)面;
單頁(yè)面應(yīng)用: 點(diǎn)擊按鈕,沒(méi)有新的html請(qǐng)求,只發(fā)生局部刷新,能營(yíng)造出一種接近原生的體驗(yàn),如絲般順滑。
SPA 單頁(yè)面應(yīng)用為什么可以幾乎無(wú)刷新呢?因?yàn)樗腟P——single-page。在第一次進(jìn)入應(yīng)用時(shí),即返回了唯一的html頁(yè)面和它的公共靜態(tài)資源,后續(xù)的所謂“跳轉(zhuǎn)”,都不再?gòu)姆?wù)端拿html文件,只是DOM的替換操作,是模(jia)擬(zhuang)的。
那么js又是怎么捕捉到組件切換的時(shí)機(jī),并且無(wú)刷新變更瀏覽器url呢?靠hash和HTML5History。
hash 路由
特征
類(lèi)似www.xiaoming.html#bar 就是哈希路由,當(dāng) # 后面的哈希值發(fā)生變化時(shí),不會(huì)向服務(wù)器請(qǐng)求數(shù)據(jù),可以通過(guò) hashchange 事件來(lái)監(jiān)聽(tīng)到 URL 的變化,從而進(jìn)行DOM操作來(lái)模擬頁(yè)面跳轉(zhuǎn)
不需要服務(wù)端配合
對(duì) SEO 不友好
原理
hash
HTML5History 路由
特征
History 模式是 HTML5 新推出的功能,比之 hash 路由的方式直觀,長(zhǎng)成類(lèi)似這個(gè)樣子www.xiaoming.html/bar ,模擬頁(yè)面跳轉(zhuǎn)是通過(guò) history.pushState(state, title, url) 來(lái)更新瀏覽器路由,路由變化時(shí)監(jiān)聽(tīng) popstate 事件來(lái)操作DOM
需要后端配合,進(jìn)行重定向
對(duì) SEO 相對(duì)友好
原理
Html5 History
vue-router 源碼解讀
以 Vue 的路由vue-router為例,我們一起來(lái)擼一把它的源碼。
Tips:因?yàn)椋酒闹攸c(diǎn)在于講解單頁(yè)面路由的兩種模式,所以,下面只列舉了一些關(guān)鍵代碼,主要講解:
注冊(cè)插件
VueRouter的構(gòu)造函數(shù),區(qū)分路由模式
全局注冊(cè)組件
hash / HTML5History模式的 push 和監(jiān)聽(tīng)方法
transitionTo 方法
注冊(cè)插件
首先,作為一個(gè)插件,要有暴露一個(gè)install方法的自覺(jué),給Vue爸爸去 use。
源碼的install.js文件中,定義了注冊(cè)安裝插件的方法install,給每個(gè)組件的鉤子函數(shù)混入方法,并在beforeCreate鉤子執(zhí)行時(shí)初始化路由:
Vue.mixin({
beforeCreate () {
if (isDef(this.$options.router)) {
this._routerRoot = this
this._router = this.$options.router
this._router.init(this)
Vue.util.defineReactive(this, '_route', this._router.history.current)
} else {
this._routerRoot = (this.$parent && this.$parent._routerRoot) || this
}
registerInstance(this, this)
},
// 全文中以...來(lái)表示省略的方法
...
});
區(qū)分mode
然后,我們從index.js找到整個(gè)插件的基類(lèi) VueRouter,不難看出,它是在constructor中,根據(jù)不同mode 采用不同路由實(shí)例的。
...
import {install} from './install';
import {HashHistory} from './history/hash';
import {HTML5History} from './history/html5';
...
export default class VueRouter {
static install: () => void;
constructor (options: RouterOptions = {}) {
if (this.fallback) {
mode = 'hash'
}
if (!inBrowser) {
mode = 'abstract'
}
this.mode = mode
switch (mode) {
case 'history':
this.history = new HTML5History(this, options.base)
break
case 'hash':
this.history = new HashHistory(this, options.base, this.fallback)
break
case 'abstract':
this.history = new AbstractHistory(this, options.base)
break
default:
if (process.env.NODE_ENV !== 'production') {
assert(false, `invalid mode: ${mode}`)
}
}
}
}
全局注冊(cè)router-link組件
這個(gè)時(shí)候,我們也許會(huì)問(wèn):使用 vue-router 時(shí), 常見(jiàn)的<router-link/>、 <router-view/>又是在哪里引入的呢?
回到install.js文件,它引入并全局注冊(cè)了 router-view、router-link組件:
import View from './components/view';
import Link from './components/link';
...
Vue.component('RouterView', View);
Vue.component('RouterLink', Link);
在 ./components/link.js 中,<router-link/>組件上默認(rèn)綁定了click事件,點(diǎn)擊觸發(fā)handler方法進(jìn)行相應(yīng)的路由操作。
const handler = e => {
if (guardEvent(e)) {
if (this.replace) {
router.replace(location, noop)
} else {
router.push(location, noop)
}
}
};
就像最開(kāi)始提到的,VueRouter構(gòu)造函數(shù)中對(duì)不同mode初始化了不同模式的 History 實(shí)例,因而router.replace、router.push的方式也不盡相同。接下來(lái),我們分別扒拉下這兩個(gè)模式的源碼。
hash模式
history/hash.js 文件中,定義了HashHistory 類(lèi),這貨繼承自 history/base.js 的 History 基類(lèi)。
它的prototype上定義了push方法:在支持 HTML5History 模式的瀏覽器環(huán)境中(supportsPushState為 true),調(diào)用history.pushState來(lái)改變?yōu)g覽器地址;其他瀏覽器環(huán)境中,則會(huì)直接用location.hash = path 來(lái)替換成新的 hash 地址。
其實(shí)最開(kāi)始讀到這里是有些疑問(wèn)的,既然已經(jīng)是 hash 模式為何還要判斷supportsPushState?是為了支持scrollBehavior,history.pushState可以傳參key過(guò)去,這樣每個(gè)url歷史都有一個(gè)key,用 key 保存了每個(gè)路由的位置信息。
同時(shí),原型上綁定的setupListeners 方法,負(fù)責(zé)監(jiān)聽(tīng) hash 變更的時(shí)機(jī):在支持 HTML5History 模式的瀏覽器環(huán)境中,監(jiān)聽(tīng)popstate事件;而其他瀏覽器中,則監(jiān)聽(tīng)hashchange。監(jiān)聽(tīng)到變化后,觸發(fā)handleRoutingEvent 方法,調(diào)用父類(lèi)的transitionTo跳轉(zhuǎn)邏輯,進(jìn)行 DOM 的替換操作。
import { pushState, replaceState, supportsPushState } from '../util/push-state'
...
export class HashHistory extends History {
setupListeners () {
...
const handleRoutingEvent = () => {
const current = this.current
if (!ensureSlash()) {
return
}
// transitionTo調(diào)用的父類(lèi)History下的跳轉(zhuǎn)方法,跳轉(zhuǎn)后路徑會(huì)進(jìn)行hash化
this.transitionTo(getHash(), route => {
if (supportsScroll) {
handleScroll(this.router, route, current, true)
}
if (!supportsPushState) {
replaceHash(route.fullPath)
}
})
}
const eventType = supportsPushState ? 'popstate' : 'hashchange'
window.addEventListener(
eventType,
handleRoutingEvent
)
this.listeners.push(() => {
window.removeEventListener(eventType, handleRoutingEvent)
})
}
push (location: RawLocation, onComplete?: Function, onAbort?: Function) {
const { current: fromRoute } = this
this.transitionTo(
location,
route => {
pushHash(route.fullPath)
handleScroll(this.router, route, fromRoute, false)
onComplete && onComplete(route)
},
onAbort
)
}
}
...
// 處理傳入path成hash形式的URL
function getUrl (path) {
const href = window.location.href
const i = href.indexOf('#')
const base = i >= 0 ? href.slice(0, i) : href
return `${base}#${path}`
}
...
// 替換hash
function pushHash (path) {
if (supportsPushState) {
pushState(getUrl(path))
} else {
window.location.hash = path
}
}
// util/push-state.js文件中的方法
export const supportsPushState =
inBrowser &&
(function () {
const ua = window.navigator.userAgent
if (
(ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&
ua.indexOf('Mobile Safari') !== -1 &&
ua.indexOf('Chrome') === -1 &&
ua.indexOf('Windows Phone') === -1
) {
return false
}
return window.history && typeof window.history.pushState === 'function'
})()
HTML5History模式
類(lèi)似的,HTML5History 類(lèi)定義在 history/html5.js 中。
定義push原型方法,調(diào)用history.pusheState修改瀏覽器的路徑。
與此同時(shí),原型setupListeners 方法對(duì)popstate進(jìn)行了事件監(jiān)聽(tīng),適時(shí)做 DOM 替換。
import {pushState, replaceState, supportsPushState} from '../util/push-state';
...
export class HTML5History extends History {
setupListeners () {
const handleRoutingEvent = () => {
const current = this.current;
const location = getLocation(this.base);
if (this.current === START && location === this._startLocation) {
return
}
this.transitionTo(location, route => {
if (supportsScroll) {
handleScroll(router, route, current, true)
}
})
}
window.addEventListener('popstate', handleRoutingEvent)
this.listeners.push(() => {
window.removeEventListener('popstate', handleRoutingEvent)
})
}
push (location: RawLocation, onComplete?: Function, onAbort?: Function) {
const { current: fromRoute } = this
this.transitionTo(location, route => {
pushState(cleanPath(this.base + route.fullPath))
handleScroll(this.router, route, fromRoute, false)
onComplete && onComplete(route)
}, onAbort)
}
}
...
// util/push-state.js文件中的方法
export function pushState (url?: string, replace?: boolean) {
saveScrollPosition()
const history = window.history
try {
if (replace) {
const stateCopy = extend({}, history.state)
stateCopy.key = getStateKey()
history.replaceState(stateCopy, '', url)
} else {
history.pushState({ key: setStateKey(genStateKey()) }, '', url)
}
} catch (e) {
window.location[replace ? 'replace' : 'assign'](url)
}
}
transitionTo 處理路由變更邏輯
上面提到的兩種路由模式,都在監(jiān)聽(tīng)時(shí)觸發(fā)了this.transitionTo,這到底是個(gè)啥呢?它其實(shí)是定義在 history/base.js 基類(lèi)上的原型方法,用來(lái)處理路由的變更邏輯。
先通過(guò)const route = this.router.match(location, this.current)對(duì)傳入的值與當(dāng)前值進(jìn)行對(duì)比,返回相應(yīng)的路由對(duì)象;接著判斷新路由是否與當(dāng)前路由相同,相同的話直接返回;不相同,則在this.confirmTransition中執(zhí)行回調(diào)更新路由對(duì)象,并對(duì)視圖相關(guān)DOM進(jìn)行替換操作。
export class History {
...
transitionTo (
location: RawLocation,
onComplete?: Function,
onAbort?: Function
) {
const route = this.router.match(location, this.current)
this.confirmTransition(
route,
() => {
const prev = this.current
this.updateRoute(route)
onComplete && onComplete(route)
this.ensureURL()
this.router.afterHooks.forEach(hook => {
hook && hook(route, prev)
})
if (!this.ready) {
this.ready = true
this.readyCbs.forEach(cb => {
cb(route)
})
}
},
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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ù)
你平時(shí)填寫(xiě)過(guò)的最復(fù)雜的表單是什么?調(diào)查問(wèn)卷還是文檔信息錄入?如果一個(gè)表單字段內(nèi)容巨多,結(jié)構(gòu)多變,填寫(xiě)耗時(shí)耗力,那你將如何設(shè)計(jì)你的表單,使之體驗(yàn)更佳?
1. 業(yè)務(wù)復(fù)雜,功能較多;
不知道大家是否看過(guò)法律合同之類(lèi)的文件,多則好幾籮筐,少也有厚厚一疊,類(lèi)似的文檔如果進(jìn)行線上結(jié)構(gòu)化,勢(shì)必要同樣要花費(fèi)巨大的人力去填寫(xiě)表單,完成基礎(chǔ)信息的錄入工作,同時(shí),由于錄入的時(shí)間不確定,流程不明確等問(wèn)題,也制約著表單的填寫(xiě)。
2. 流程較長(zhǎng),操作繁瑣;
多個(gè)不同表單之間的互有關(guān)聯(lián)又相互區(qū)別,填寫(xiě)的時(shí)候需要來(lái)回查看以確認(rèn)信息,查閱和填寫(xiě)相互并行,操作繁瑣。
3. 字段較多,關(guān)聯(lián)項(xiàng)較多;
幾乎每一個(gè)字段都有對(duì)應(yīng)的關(guān)聯(lián)項(xiàng),每個(gè)單選字段的不同項(xiàng)決定不同的內(nèi)容,同時(shí),由于字段數(shù)量,層級(jí)劃分不明確,會(huì)使填寫(xiě)的人失去定位,產(chǎn)生迷惑。
1. 內(nèi)容分組,分步填寫(xiě);
根據(jù)業(yè)務(wù)內(nèi)容分級(jí),合理運(yùn)用顏色、間距、字體大小、卡片層級(jí)等進(jìn)行信息分級(jí)
2. 實(shí)時(shí)保存,避免數(shù)據(jù)丟失,提供草稿功能,避免任務(wù)中斷;
3. 字段分組,示意結(jié)構(gòu),聯(lián)動(dòng)項(xiàng)隱喻;
4. 信息自動(dòng)帶入,節(jié)省時(shí)間;
一般表單是與某項(xiàng)功能掛鉤的,信息會(huì)在多個(gè)入口錄入,因此在填寫(xiě)長(zhǎng)表單的時(shí)候,如果能從系統(tǒng)中自動(dòng)獲取到數(shù)據(jù),就可以自動(dòng)為其填充,可根據(jù)業(yè)務(wù)場(chǎng)景,判斷是否讓其修改和更新。
5. 提供二次編輯功能,防止信息輸入有誤;
一般的長(zhǎng)表單在涉及非審批流的時(shí)候,可以讓其無(wú)限二次編輯,如果是處于審批流,則需要根據(jù)業(yè)務(wù)場(chǎng)景限制其編輯次數(shù)或者限定其編輯規(guī)則(草稿可編輯,一旦提交則不可編輯)。
6. 提供多人協(xié)作編輯功能;
如果一個(gè)長(zhǎng)表單,需要多個(gè)不同的業(yè)務(wù)域的人來(lái)填寫(xiě),那么需要協(xié)同編輯,并實(shí)時(shí)顯示編輯的人員信息,同時(shí),為了避免信息丟失和編輯錯(cuò)亂,在同一個(gè)表單下,同一時(shí)間應(yīng)該限制只允許一個(gè)人進(jìn)行編輯,等其提交完后,可允許其他人進(jìn)行編輯。
7. 實(shí)時(shí)檢驗(yàn);
前端實(shí)時(shí)校驗(yàn)字段輸入規(guī)則,后端統(tǒng)一校驗(yàn)信息交換規(guī)則。
比如對(duì)于數(shù)字輸入框的校驗(yàn)、電話號(hào)碼的校驗(yàn)、身份證號(hào)的校驗(yàn),應(yīng)該在前端實(shí)時(shí)完成,在鼠標(biāo)離開(kāi)焦點(diǎn)區(qū)域或定位到下一個(gè)字段的時(shí)候,提示其填寫(xiě)有誤,這樣做的目的是減少后續(xù)修改的次數(shù),在長(zhǎng)表單下,統(tǒng)一提示其填寫(xiě)錯(cuò)誤會(huì)是一場(chǎng)災(zāi)難。
在點(diǎn)擊保存并填寫(xiě)下一步或點(diǎn)擊提交信息的時(shí)候,就需要跟后端交換數(shù)據(jù),驗(yàn)證錄入的信息,如果不匹配,則提示錯(cuò)誤,并從上至下定位至相應(yīng)的錯(cuò)誤字段。
8. 做好填寫(xiě)引導(dǎo)功能;
要通過(guò)多種方式,引導(dǎo)表單的填寫(xiě),
在開(kāi)始填寫(xiě)之前,簡(jiǎn)要說(shuō)明該表單的業(yè)務(wù)目標(biāo),大概需要花費(fèi)的時(shí)間等;
開(kāi)始填寫(xiě)后,關(guān)于每個(gè)字段的特殊說(shuō)明,都需要標(biāo)注出來(lái),重要的要顯示在頁(yè)面上,不重要的就收起在注釋符號(hào)中;
填寫(xiě)的過(guò)程中,切記不要到最后才告訴用戶(hù)哪里出錯(cuò)了,重要的信息一定要提示到位,否則一旦出錯(cuò),前功盡棄;
填寫(xiě)完成后,引導(dǎo)其下一步的操作,或者返回至列表。
9. 詳情頁(yè)也需要注意信息分級(jí)
表單填寫(xiě)完畢后的產(chǎn)出物就是詳情頁(yè),詳情頁(yè)是需要瀏覽的,因此在設(shè)計(jì)詳情頁(yè)的時(shí)候,應(yīng)該本著讓用戶(hù)瀏覽方便的原則去設(shè)計(jì),需要注意以下幾個(gè)點(diǎn):
結(jié)構(gòu)清晰。是指不要將內(nèi)容一股腦的全堆在頁(yè)面上,要做好信息的分類(lèi),同時(shí),注意規(guī)劃頁(yè)面的層級(jí)。
設(shè)置快捷導(dǎo)航。如果一個(gè)表單是長(zhǎng)且復(fù)雜的,那么其對(duì)應(yīng)的詳情頁(yè)也會(huì)變得復(fù)雜和冗長(zhǎng),因此在頁(yè)面的右側(cè)或者頂部設(shè)置合理的快捷導(dǎo)航是很有必要的。
1. 提供快速返回頂部的按鈕;
快速返回頂部按鈕的使用要注意場(chǎng)景,如果你的頁(yè)面比較長(zhǎng),且沒(méi)有分組瀏覽的導(dǎo)航,那就需要設(shè)置快速返回頂部的按鈕,但是在存在分組瀏覽導(dǎo)航和頂部懸浮標(biāo)簽的情況下,不建議使用快速返回頂部的按鈕,因?yàn)樵谔顚?xiě)表單的時(shí)候,使用快速置頂?shù)膱?chǎng)景比較少。
2. 提供分組模塊收起展開(kāi)功能;
當(dāng)一個(gè)模塊混雜著各種信息的時(shí)候,單純的模塊分組已經(jīng)無(wú)法處理它的復(fù)雜度了,因此需要收起高頻且信息量大的模塊,可以合理的減少頁(yè)面的復(fù)雜度。
3. 步驟提供信息填寫(xiě)完成度提示;
步驟條可以單純的作為步驟指示器使用,也可以作為一個(gè)表單完成度的提示區(qū)域。
4. 重要說(shuō)明性文字盡量顯示而非收起;
在填寫(xiě)大量字段的表單時(shí),閱讀表單內(nèi)容和填寫(xiě)表單同樣耗時(shí)耗力,如果我們將所有的提示信息隱藏在提示符中,一般情況下,用戶(hù)不會(huì)去查看,但是如果去挨個(gè)查看提示信息,則會(huì)多花費(fèi)一個(gè)步驟去點(diǎn)擊或者懸停來(lái)查看提示信息,浪費(fèi)了大量的時(shí)間,因此如果涉及到重要的提示信息,請(qǐng)直接展示在字段的后面,不要隱藏起來(lái)。
5. 產(chǎn)品內(nèi)組件應(yīng)該規(guī)范統(tǒng)一;
在后臺(tái)產(chǎn)品上,關(guān)于組件的規(guī)范統(tǒng)一,想必是人盡皆知的設(shè)計(jì)原則,無(wú)論是各類(lèi)平臺(tái)型設(shè)計(jì)組件,還是各個(gè)公司自造的設(shè)計(jì)組件,保持統(tǒng)一和規(guī)范對(duì)產(chǎn)品設(shè)計(jì)有著重要的作用,在這里不贅述組件應(yīng)該怎樣規(guī)范統(tǒng)一,因?yàn)闊o(wú)論是Ant Design還是其他設(shè)計(jì)語(yǔ)言,都有詳盡的關(guān)于組件的定義方法,我在這里講述一個(gè)產(chǎn)品設(shè)計(jì)更高層面或者更深層面的原因:
組件的規(guī)范統(tǒng)一并不僅僅是為了省時(shí)省力,而是為了使用戶(hù)在使用的過(guò)程中達(dá)到認(rèn)知上的統(tǒng)一和行為上的統(tǒng)一,在進(jìn)行高頻次的操作后,界面的流程或者組件樣式已大致在用戶(hù)腦海中形成固定印象,因此在操作相同類(lèi)的流程時(shí),用戶(hù)會(huì)有更多的掌控感,試想一下,如果你在操作人事相關(guān)的流程后,去填寫(xiě)績(jī)效部分的內(nèi)容時(shí),發(fā)現(xiàn)一個(gè)迥異的界面或者彈窗,你肯定覺(jué)得這是不是哪里出錯(cuò)了,甚至?xí)岩蛇@是否是同一個(gè)系統(tǒng),目前大多數(shù)公司的管理系統(tǒng)經(jīng)過(guò)多次縫縫補(bǔ)補(bǔ),內(nèi)部的跳轉(zhuǎn)邏輯已經(jīng)異常感人,界面風(fēng)格也大放異彩,但是使用起來(lái)卻無(wú)從下手,深感迷茫。
因此大到界面樣式,小到間距大小,產(chǎn)品設(shè)計(jì)的規(guī)范和統(tǒng)一應(yīng)該是最基礎(chǔ)又不可缺少的原則。
6. 龐大的信息錄入,表單內(nèi)部要分步填寫(xiě),外部可拆分成不同的表單分別填寫(xiě);
對(duì)付復(fù)雜的表單,你需要解決的主要問(wèn)題并不是填寫(xiě)方式或者頁(yè)面設(shè)計(jì),而是信息分級(jí)和結(jié)構(gòu)拆分,解決了這個(gè)問(wèn)題,基本上就解決了業(yè)務(wù)問(wèn)題,其余部分就跟我們常用的表單一致。
將復(fù)雜度降低并不意味著減少頁(yè)面的信息,而是通過(guò)設(shè)計(jì)師合理的信息劃分,降低視覺(jué)上的復(fù)雜度和流程上的復(fù)雜度,這樣才會(huì)達(dá)到當(dāng)前場(chǎng)景下的「最佳解決方案」。
隨著互聯(lián)網(wǎng)信息化的深入發(fā)展,復(fù)雜是避免不了的,我知道大家都推崇簡(jiǎn)潔的設(shè)計(jì),但那只是對(duì)視覺(jué)和樣式的定義,而非對(duì)信息的定義,我們所處的世界是復(fù)雜的,行業(yè)更是復(fù)雜的,信息的復(fù)雜度與日俱增,想要處理復(fù)雜的信息,就需要從復(fù)雜中尋求規(guī)律,這規(guī)律與業(yè)務(wù)息息相關(guān),
文章來(lái)源:優(yōu)設(shè) 作者:
星野隨記
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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ù)
按鈕在界面設(shè)計(jì)中,屬于最基礎(chǔ)的元素部分組成,按鈕設(shè)計(jì)的精致,整個(gè)頁(yè)面的品質(zhì)也會(huì)上升不少的檔次。今天給大家分享這篇文章,主要講解在設(shè)計(jì)按鈕時(shí)我們應(yīng)該考慮哪些因素,包括視覺(jué)上,有哪些萬(wàn)能的方法及公式,能夠正確的制定按鈕的設(shè)計(jì)標(biāo)準(zhǔn),來(lái)提升整個(gè)設(shè)計(jì)的系統(tǒng)性。
在設(shè)計(jì)按鈕之前,需要先理解按鈕起到的代表含義。什么地方該加按鈕,什么地方不加按鈕,在系統(tǒng)化設(shè)計(jì)思路中需要非常有講究。通常按鈕在頁(yè)面,主要起到以下三點(diǎn)作用:
1. 某一類(lèi)型的功能操作
這種比較常見(jiàn),如一些控件形態(tài)的按鈕,比如加減、折疊、展開(kāi),下拉等。這類(lèi)按鈕會(huì)起到一些功能形態(tài)的作用,常用于交互場(chǎng)景。所以在這類(lèi)按鈕設(shè)計(jì)中,應(yīng)當(dāng)弱化按鈕形式,重點(diǎn)強(qiáng)調(diào)功能,突出主體信息。
2. 下一步的明確指引
當(dāng)頁(yè)面內(nèi)容信息過(guò)多后,用戶(hù)容易失去信息焦點(diǎn),從而忘記下一步操作。信息種類(lèi)越多,用戶(hù)權(quán)衡的時(shí)間就會(huì)越久,用戶(hù)選擇罷手及跳出的幾率也會(huì)越大。所以這個(gè)時(shí)候,在合適的地方增添按鈕,能夠很好的引導(dǎo)用戶(hù)進(jìn)行下一步操作,提升整體操作的成功率。其次從體驗(yàn)層面,也一定程度能起到頁(yè)面動(dòng)線的引導(dǎo)作用,比如下方的一組卡片,在增添了按鈕后行動(dòng)點(diǎn)很明確,非常有點(diǎn)擊欲望~
3. 固定習(xí)慣,明確心理預(yù)期
當(dāng)用戶(hù)知悉某個(gè)按鈕能指向某個(gè)操作,或者獲取某類(lèi)信息后,長(zhǎng)期以往用戶(hù)就會(huì)形成使用這個(gè)按鈕的習(xí)慣,這樣對(duì)提升復(fù)訪及固定心智是非常有效果。
所以如果你認(rèn)為你負(fù)責(zé)的產(chǎn)品或者是內(nèi)容,能持續(xù)為用戶(hù)帶來(lái)價(jià)值,那么在頁(yè)面的關(guān)鍵節(jié)點(diǎn),不如將按鈕設(shè)計(jì)的更醒目。這樣用戶(hù)下次再看到這個(gè)按鈕時(shí),固定習(xí)慣會(huì)引導(dǎo)他持續(xù)的點(diǎn)擊。
這里我不以按鈕的長(zhǎng)相來(lái)區(qū)分按鈕的類(lèi)型,如漢堡按鈕或者別的什么的,意義不大。我主要還是想通過(guò)以按鈕的功能區(qū)分,來(lái)劃分類(lèi)型,這樣大家理解起來(lái)更為清晰。
1. 功能性質(zhì)按鈕
這類(lèi)按鈕見(jiàn)到的最多,我們常用的APP里,大量都充斥了這類(lèi)按鈕,這類(lèi)按鈕會(huì)起到重點(diǎn)的功能交互,幫助用戶(hù)得到TA想要的信息。其次樣式上面,其實(shí)圓形的點(diǎn)擊欲,會(huì)更強(qiáng)一些,看起來(lái)也更利于點(diǎn)擊。而方型的按鈕,則顯得更為正式、嚴(yán)謹(jǐn)。
公式:如果是圓形按鈕,圓角的半徑=高度的50%比較合適,而如果是方按鈕,邊角的小圓角半徑控制在15%以下比較合適,我個(gè)人喜好用10%。
2. 聚焦大按鈕
這類(lèi)按鈕通常見(jiàn)于一些核心頁(yè)面的強(qiáng)指引,比如登錄、注冊(cè)、提交表單、或者是保存,等對(duì)頁(yè)面全局進(jìn)行操作的一些按鈕。需要注意的是,這類(lèi)按鈕只適合對(duì)頁(yè)面全局進(jìn)行操作,而且頁(yè)面中大按鈕的數(shù)量不宜超過(guò)2個(gè),信息盡量需要保持聚焦。
公式:基于@2x,這類(lèi)大按鈕的高度≥72px是比較合適的,通常的尺寸有 80px、88px、96px,大家可以根據(jù)產(chǎn)品面向的人群來(lái)定高度,如果頁(yè)面面向的人群較為廣泛,我建議采用 88px 或者是 96px 的這種大號(hào)版本,畢竟操作起來(lái)更為方便。
3. 吸底按鈕
這類(lèi)按鈕的優(yōu)先級(jí),在整個(gè)頁(yè)面屬于最高,頁(yè)面的所有信息,都將聚焦在這個(gè)按鈕中。由于按鈕是吸底的,所以會(huì)一直浮在頁(yè)面上,不受頁(yè)面篇幅影響控制。
需要注意的是,吸底按鈕一定是頁(yè)面最重要的功能,或者是整個(gè)頁(yè)面的下一步指引,比如淘寶的立即購(gòu)買(mǎi),或者是餓了么、美團(tuán)的立即下單,又或者是常見(jiàn)的充值界面。
公式:基于@2x,吸底的高度≥80px是比較合適,常見(jiàn)的尺寸有88px、100px、112px ,按鈕的大小可以根據(jù)內(nèi)容來(lái)定,建議高度保持在72px以上比較合適。這里需要注意的是,吸底的按鈕,需要產(chǎn)出兩套設(shè)計(jì)稿,一套為常規(guī)稿,一套為iPhoneX的適配稿。iPhoneX底部控件的區(qū)域高度為68px,所以iPhoneX設(shè)計(jì)稿的吸底高度=常規(guī)設(shè)計(jì)稿吸底高度+68px
另外在設(shè)計(jì)按鈕的時(shí)候,也別忘了補(bǔ)充按鈕的多個(gè)狀態(tài)的設(shè)計(jì)稿。常見(jiàn)的狀態(tài),有以下四種:
1. Normal-正常態(tài)
這個(gè)為按鈕的正常顯示態(tài),就是正常頁(yè)面中的顯示效果。
2. Hover-懸浮態(tài)
這個(gè)為按鈕的懸浮態(tài),一般只會(huì)出現(xiàn)在使用鼠標(biāo)的時(shí)候。當(dāng)鼠標(biāo)指針停留在按鈕時(shí),按鈕發(fā)出的特殊反饋,則為懸浮態(tài)。這類(lèi)形式在移動(dòng)端交互中無(wú)作用,所以移動(dòng)界面設(shè)計(jì)中不需要考慮這個(gè)狀態(tài)。
公式:正常情況 Hover 態(tài)增加 10% 黑色就可以,原理如下
3. Pressed-點(diǎn)擊態(tài)
這個(gè)為按鈕的按壓態(tài),就是按鈕在被點(diǎn)擊或者是按壓后的效果。
公式:在APP設(shè)計(jì)中,點(diǎn)擊后的效果我們?cè)O(shè)一個(gè)標(biāo)準(zhǔn)值讓開(kāi)發(fā)實(shí)現(xiàn)就好了。常用的值有按鈕減少20%的透明度,或者增添20%的暗度,這兩個(gè)都可以。通常我建議在亮色上的按鈕,使用暗度疊加(增添20%的黑色),在暗色上的按鈕,則使用透明度減少(透明度改為80%),實(shí)現(xiàn)效果原理參考 Hover 態(tài)那張配圖
4. Disable-禁用態(tài)
當(dāng)信息未填充完整,或者是某類(lèi)條件未到,按鈕會(huì)出現(xiàn)不可點(diǎn)擊的狀態(tài),處于禁用形式,這個(gè)時(shí)候,按鈕就會(huì)呈現(xiàn)禁用態(tài)。這個(gè)禁用態(tài)無(wú)論是web還是app,很多場(chǎng)景都會(huì)用到,所以建議設(shè)定一套標(biāo)準(zhǔn)的設(shè)計(jì)規(guī)范,避免重復(fù)定義這個(gè)效果。
公式:禁用態(tài)尺寸及大小不變,僅使用色值做區(qū)分。建議使用灰色或者是不透明色,常用的禁用色有#CCC或者#999,需要盡可能把樣式做弱,避免用戶(hù)做無(wú)效的點(diǎn)擊。
在目前移動(dòng)互聯(lián)網(wǎng)設(shè)計(jì)中,雖然按鈕的種類(lèi)很多,但風(fēng)格變的逐漸統(tǒng)一,更多都是色值及細(xì)節(jié)上的差異。從大的風(fēng)格來(lái)看,按鈕還是分為這這幾種類(lèi)型:扁平化、輕擬物、重?cái)M物及游戲按鈕。
1. 扁平化按鈕
這類(lèi)按鈕我們?cè)O(shè)計(jì)用的最多,信息簡(jiǎn)潔,操作方便,形式追隨功能。這里也給大家分享一下我在設(shè)計(jì)扁平化按鈕的一些經(jīng)驗(yàn),比如高度寬度,以及陰影的色值。
公式:按鈕高度,這個(gè)通常是文字字號(hào)的2.4倍然后取4的倍數(shù)整數(shù),比如字號(hào)是24,那么按鈕的高度=57.6,離4倍數(shù)最近的是56,所以高度=56,圓角=10%的高度,取整后是6px。
另外如果覺(jué)得不合適,也可以單位往8遞增或者是遞減即可,例如 56、64、72、80、88 px
按鈕寬度:如果不是那種全局按鈕,通常按鈕的寬度=最多容納字?jǐn)?shù)的寬度+按鈕高度,就好啦。還是以上面那個(gè)例子為例,按鈕高度=56,文字寬度=96,那么按鈕的寬度=56+96=152
2. 輕擬物按鈕
這類(lèi)按鈕近幾年變的非常流行,甚至QQ、淘寶,都開(kāi)始大面積使用,因?yàn)檫@類(lèi)按鈕在保持信息簡(jiǎn)潔的同時(shí),仍然有較強(qiáng)的點(diǎn)擊欲,視覺(jué)上面也能夠增添頁(yè)面的品質(zhì)感。
公式:漸變方向,建議采用水平漸變,重色在右側(cè),輕色在左側(cè)更為合適。陰影色值我之前就寫(xiě)過(guò),不知道大家還記得么,陰影顏色=按鈕顏色的 Alpha50%,x=0,y=按鈕高度的20%,模糊值=按鈕高度的50%,擴(kuò)展=按鈕高度的 -15%,高級(jí)又簡(jiǎn)單,完美!
如果覺(jué)得這個(gè)彌散陰影太大的同學(xué),也可以自己手動(dòng)簡(jiǎn)單調(diào)整下,不礙事。(這個(gè)公式僅適用于Sketch,用PS的同學(xué),也可以按照這個(gè)邏輯自行研究一下)
另外說(shuō)一句,實(shí)際上這個(gè)陰影公式并沒(méi)有什么很多的依據(jù),大多數(shù)都是我個(gè)人原創(chuàng)總結(jié)出來(lái)的,簡(jiǎn)單好用。比如下面的這些按鈕的樣式,用了公式后的效果大家可以自行感受~
3. 重?cái)M物及游戲按鈕
在一些營(yíng)銷(xiāo)頁(yè)面中,按鈕的樣式通常需要做的比較游戲化。游戲化的按鈕,大部分會(huì)采取游戲場(chǎng)景中的元素,再采用擬物的手法,來(lái)進(jìn)行打造。
通常游戲化的按鈕,需要重點(diǎn)幾個(gè)部分組成,學(xué)過(guò)素描的同學(xué)應(yīng)該會(huì)知道,立體的物體,通常會(huì)有幾大特征,分別為高光,亮部,暗部,投影及反光。那么如果我們需要繪制一個(gè)在營(yíng)銷(xiāo)或者游戲場(chǎng)景中使用的按鈕,只需要保證這個(gè)按鈕有高光,亮部,暗部,投影及反光的這些特征,然后飽滿(mǎn)一點(diǎn)就,立馬就可以出效果啦。
當(dāng)然,我舉的這幾個(gè)例子都是最基礎(chǔ)版本,如果你想做的更豐富一些,那也是沒(méi)問(wèn)題的,這個(gè)可以case by case 來(lái)定。
這個(gè)沒(méi)有太多的公式可以總結(jié),更多的是看設(shè)計(jì)師的基礎(chǔ)美術(shù)水平啦~~
在寫(xiě)這篇文章的時(shí)候,突然刷到了一套新擬態(tài)的控件設(shè)計(jì)風(fēng)格,有種眼前一亮的感覺(jué)。雖然這套設(shè)計(jì)視覺(jué)上很有層次很好看,不過(guò)感覺(jué)短時(shí)間之內(nèi),比較難大面積推廣,因?yàn)殚_(kāi)發(fā)實(shí)現(xiàn)起來(lái)還是會(huì)比較耗費(fèi)成本。
我把源文件保存下來(lái)了,對(duì)這個(gè)感興趣或者好奇這種效果如何實(shí)現(xiàn)的同學(xué),可以下載源文件研究~~ sketch、psd、Figma 格式都有。
文章來(lái)源:優(yōu)設(shè) 作者:UX小學(xué)
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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ù)
章節(jié)名稱(chēng) | 地址 |
---|---|
Vue.js教程-安裝和HelloWorld | https://coderhqf.blog.csdn.net/article/details/107574556 |
Vue.js教程-Vue項(xiàng)目的目錄結(jié)構(gòu)和.vue文件的構(gòu)成 | https://coderhqf.blog.csdn.net/article/details/107621070 |
Vue.js教程-Vue基本指令 | https://coderhqf.blog.csdn.net/article/details/107677588 |
Vue.js教程-組件化開(kāi)發(fā) | https://coderhqf.blog.csdn.net/article/details/107783664 |
與傳統(tǒng)PC桌面不同,手機(jī)屏幕的尺寸更加小巧操作,方式也已觸控為主,APP界面設(shè)計(jì)不但要保證APP功能的完整性和合理性,又要保證APP的功能性和實(shí)用性,在保證其擁有流暢的操作感受的同時(shí),滿(mǎn)足人們的審美需求。
接下來(lái)為大家介紹幾款手機(jī)appui界面設(shè)計(jì)
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
--手機(jī)appUI設(shè)計(jì)--
(以上圖片均來(lái)源于網(wǎng)絡(luò))
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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ù)
更多精彩文章:
還記得2019年4月上映的復(fù)仇者聯(lián)盟4么,漫威電影宇宙的第三階段結(jié)束了,電影很精彩,但最令人震撼的是先導(dǎo)版的電影海報(bào)!就是那個(gè)「五彩斑斕」的黑~
從設(shè)計(jì)上看,海報(bào)的設(shè)計(jì)師是把光運(yùn)用到極限了,通過(guò)逆光和環(huán)境塑造出了酷+神秘的視覺(jué)感受。光是一切視覺(jué)表現(xiàn)的基礎(chǔ),是構(gòu)圖和傳遞調(diào)性的關(guān)鍵,也是視覺(jué)表現(xiàn)重要的組成部分。所以今天就和大家聊聊啥樣的光是一個(gè)牛X的光以及如何塑造一個(gè)合格的光影?
常見(jiàn)形式1-聚光
△ 圖片來(lái)源:小米米家臺(tái)燈1S
聚光是最常見(jiàn)光,也是在設(shè)計(jì)中用到最多的光,通常在塑造一個(gè)物體的時(shí)候就會(huì)用的到。
因?yàn)榫酃獾脑?,?chǎng)景更像個(gè)舞臺(tái),凸顯「主角」的存在。具體的原理可以根據(jù)下圖去理解。
常見(jiàn)形式2-自然光
自然光其實(shí)就是陽(yáng)光,理論上講其實(shí)光源是太陽(yáng)也是聚光,但由于光源太過(guò)于龐大,無(wú)法真正的聚焦,所以就把這種光當(dāng)成一種泛光源就好。在產(chǎn)品設(shè)計(jì)中也會(huì)經(jīng)??吹筋?lèi)似的光源出現(xiàn),比如行為召喚按鈕:
因?yàn)椴恍枰獜?qiáng)有力的表現(xiàn)和氛圍的營(yíng)造,所以通常產(chǎn)品設(shè)計(jì)中更需要自然光來(lái)作為核心光源,通過(guò)泛光源去統(tǒng)一控制產(chǎn)品的光影體系就好(發(fā)布的 Mac OS – big Sur 的整體光源同樣是自然光,下文會(huì)講到)。
常見(jiàn)形式3-逆光
坦誠(chéng)的講逆光也是聚光的一種,只不過(guò)由于角度特殊,呈現(xiàn)的視覺(jué)效果也非常不一樣,所以就單獨(dú)把逆光拿出來(lái)說(shuō)一說(shuō)。當(dāng)畫(huà)面需要逆光來(lái)營(yíng)造氛圍的時(shí)候,只需要在固有色上加上黑色蒙板和邊緣的高光就可以大概塑造出一個(gè)處于逆光的物體了。
小米是典型的逆光氛圍營(yíng)造高手,但萬(wàn)變不離其宗,依舊可以從海報(bào)里看到相同的方法。
△ 圖片來(lái)源:小米傳播物料
通常現(xiàn)實(shí)中的光源并非那么理想,光線的復(fù)雜超出肉眼所見(jiàn)。所以我們?cè)诶L制的過(guò)程需要注意到,可以適當(dāng)?shù)某橄?。舉個(gè)例子,自然光是普照的,所以我們抽象為四個(gè)小光源平均分布,依次打到物體上:
在他們疊加的部分可以清晰的看到,1是最重的,2其次,3再次。按照這個(gè)辦法就可以獲得光影的層級(jí)關(guān)系,在繪制輕擬態(tài)的圖標(biāo)或者運(yùn)營(yíng)活動(dòng)中更加細(xì)膩。
△ 圖片來(lái)源:09UI設(shè)計(jì)工作室-陌陌直播禮物設(shè)計(jì)
所有的光影其實(shí)都是幫助主體塑造體積感,一個(gè)合格的立體圖形必須具備:高光/過(guò)度色/明暗交界線和反光這四個(gè)基本屬性。
然后需要一點(diǎn)超現(xiàn)實(shí)主義的手法,把太陽(yáng)光過(guò)濾下,從「赤橙黃綠青藍(lán)紫」的色調(diào)里提取跟主體和諧的顏色(通常是補(bǔ)色),營(yíng)造出介于真實(shí)與玄幻之間的美妙效果hiahia~
然后再在投影上加一點(diǎn)點(diǎn)色彩傾向,一個(gè)完美的黑八就出現(xiàn)啦~按照這種方法,你可以試著去嘗試更多的物體/場(chǎng)景。(下圖是筆者作品「插著紅旗的地球」hiahia)
影響主體的除了光影之外就是材質(zhì)了,近年來(lái)的三大巨頭apple/Microsoft/Google的設(shè)計(jì)都在材質(zhì)上下足了功夫,蘋(píng)果的毛玻璃,微軟的亞克力和谷歌的「紙」。
從趨勢(shì)上看,材質(zhì)的引入對(duì)產(chǎn)品中拉開(kāi)層級(jí)關(guān)系上有巨大意義,以往的設(shè)計(jì)僅僅是通過(guò)光影和焦距來(lái)拉開(kāi)關(guān)系,這兩個(gè)維度在少量的疊加界面中還能有效果,但到了復(fù)雜的多窗口互壓互疊里就不是那么奏效了,所以鐵子們要善于運(yùn)用材質(zhì)區(qū)分產(chǎn)品顯示的優(yōu)先級(jí)。
△ 圖片來(lái)源:Eric Hoffman – Big Sur Mac Icons
△ 圖片來(lái)源:JIAJIE – WeSing Live gift
圖標(biāo)好壞除了造型之外最重要的就是質(zhì)感了,通常圖標(biāo)也就是4種形式(如下圖),類(lèi)似蘋(píng)果的系統(tǒng)圖標(biāo)和抖音直播間禮物的圖標(biāo)都是最后一種形式。
但如果僅僅是這樣就太水了,既然都說(shuō)了是干貨預(yù)警,那就要拿出哥們看家的本領(lǐng)~此圖是大家關(guān)注公號(hào)后就會(huì)收到的推圖,主體就是一個(gè)POI的圖標(biāo)加上微信的對(duì)話框和代表干貨的小星星營(yíng)造出的氛圍。
刨析下這個(gè)圖,三個(gè)發(fā)光體和底下的投影,通過(guò)上文的講解依次繪制完成~
之后就到了amazing的時(shí)刻了,打開(kāi)photoshop找到「濾鏡-模糊畫(huà)廊-場(chǎng)景模糊」設(shè)置幾個(gè)key-point,調(diào)試模糊值和透明度/亮度,最終完成對(duì)光影的塑造。
空氣中的灰塵相信大家都不陌生,這種情況多數(shù)是一束光影從窗戶(hù)里射入后,在光的折射下把平時(shí)看不到的灰塵統(tǒng)統(tǒng)照了個(gè)遍。
如果你是mac用戶(hù)一定熟知keynote里的動(dòng)畫(huà)效果「轟然墜落」,這個(gè)效果是在模擬物體振動(dòng)后彈開(kāi)周?chē)覊m,非常震撼。在PPT的設(shè)計(jì)中你也可以同樣借助光和霧來(lái)營(yíng)造你想要的效果,下圖是我在做工作總結(jié)的時(shí)候?yàn)榱送癸@Q4工作采用的辦法。
光影輕擬物在產(chǎn)品設(shè)計(jì)中的應(yīng)用面還是很廣的,比如:圖標(biāo)、數(shù)據(jù)可視化、插圖等等。而在大量扁平設(shè)計(jì)時(shí)代適量使用會(huì)顯得很出彩,當(dāng)然再好的教程也比不上大家多動(dòng)手試試練練,所以鐵汁們行動(dòng)起來(lái)咯~
文章來(lái)源:優(yōu)設(shè) 作者:Nana的設(shè)計(jì)錦囊
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專(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://www.yvirxh.cn