首頁

配置snmpd for windows

seo達(dá)人

1.安裝


Windows 安裝請參考


默認(rèn)安裝為c:/usr/ ??梢詧?zhí)行如下文件,以便啟動snmp agent:


snmpd

會提示需要配置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的對應(yīng)模塊無法跑起來??磥韕erl要完蛋的傳說并不是空穴來風(fēng)。


snmpd.conf可以自己創(chuàng)建到/usr/etc/snmp/snmpd.conf內(nèi)。


2.修改配置文件


配置之前的說明:我在網(wǎng)上看到的所有配置都是com2sec,group,access這三個配置,但是從默認(rèn)的snmp.conf文件中有一段話:




沒必要使用 com2sec/group/access配置,使用ro(w)user,ro(w)community結(jié)合合適的views,就可以覆蓋大多數(shù)需求了。


2.1  配置監(jiān)聽地址

snmpd默認(rèn)監(jiān)聽本地IP的UDP161端口,等待snmp請求


agentAddress udp:161

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

2.2  配置視圖(view)

格式:view viewName type oid[mask]


參數(shù)說明:  


   

   viewName : view名稱

   type : 有兩個值:include和exclude(包括或者排除)

   oid:可以訪問的oid(mib子樹)

   [mask]:對oid的掩碼 (可選參數(shù))

案例:


view systemonly included .1.3.6.1.2.1

2.3  配置共同體(community)

格式:ro(w)community communityName source


參數(shù)說明:


rocommunity定義一個只讀權(quán)限的共同體,rwcommunity定義一個讀寫權(quán)限的共同體

rocommunity6或   rwcommunity6表示監(jiān)聽IPv6。

communityName:共同體名稱

source:可以訪問的IP地址范圍,默認(rèn)為”default”,即任何IP都能訪問。


               可選參數(shù):-V viewName  限制共同體只能訪問viewName下的節(jié)點(diǎn)


實(shí)際配置文件

agentAddress udp:161

view systemonly included .1.3.6.1.2.1

rocommunity public default

3. 測試

修改完配置之后,重啟snmpd:


snmpd

連接測試:(該節(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

得到類似以上的結(jié)果,就說明snmpd配置成功。


配置MIB庫

Windows版本的snmp自帶有很多MIB,位于C:\usr\share\snmp\mibs


因此可以對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)建的一個定制mib文件


https://github.com/1000copy/tbit-guard-snmp/blob/master/tbit.mib

可以把它加入到C:\usr\share\snmp\mibs目錄內(nèi),文件名無所謂。然后為snmptranslate加入選項(xiàng) -mALL ,表示加載所有在此目錄內(nèi)的mib文件:


snmptranslate -m ALL .1.3.6.1.4.1.66666

你應(yīng)該看到如下消息,表明mib加載成功:


tbitinc::tbit

詳細(xì)的說明如下:


-m MIBLIST

     指定一個用冒號分隔的MIB模塊列表(不是文件),以便為這個應(yīng)用程序加載。 這將覆蓋(或增加)環(huán)境變量MIBS、snmp.conf的內(nèi)容。指令mibs,以及硬編碼到Net-SNMP庫中的MIBs列表。如果MIBLIST有一個前導(dǎo)的'-'或'+'字符,那么所列出的MIB模塊將被加載到默認(rèn)列表之外,分別位于該列表之前或之后。

     否則,將加載指定的MIB,而不是這個默認(rèn)列表。特殊關(guān)鍵字ALL用于加載MIB目錄搜索列表中的所有MIB模塊。 每一個名字不以". "開頭的文件都會被解析為是一個

     MIB文件。

-M DIRLIST

     指定一個以冒號分隔的目錄列表來搜索MIB。 這將覆蓋(或增強(qiáng))環(huán)境變量MIBDIRS和snmp.conf指令mibdirs。

     以及硬編碼到 Net-SNMP 庫中的默認(rèn)目錄 (/usr/share/snmp/mibs)。


     如果DIRLIST有一個前導(dǎo)的'-'或'+'字符,那么給定的目錄會被添加到默認(rèn)列表中,在這個列表的目錄之前或之后進(jìn)行搜索。

     分別進(jìn)行搜索。 否則,將搜索指定的目錄,而不是這個默認(rèn)列表。


     請注意,列表中出現(xiàn)在后面的目錄要比前面的目錄優(yōu)先。 要避免搜索任何MIB目錄,請將MIBDIRS環(huán)境中的

     變量為空字符串("")。


     請注意,使用-m選項(xiàng)或mibs配置指令指定的MIB將從-M選項(xiàng)(或等價(jià)物)列出的目錄中加載。

     mibfile指令采用的是指定MIB文件的完整路徑,所以不需要在MIB目錄搜索列表中出現(xiàn)。

如何做好空狀態(tài)設(shè)計(jì)?來看資深設(shè)計(jì)師的總結(jié)!

周周

今天為大家?guī)淼奈恼率?/span>「空狀態(tài)」設(shè)計(jì),良好的空狀態(tài)設(shè)計(jì)能提升產(chǎn)品體驗(yàn),有效留存用戶。在這里把這篇文章分享給大家!

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

資深UI設(shè)計(jì)者

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

很多時候,設(shè)計(jì)師需要在公開場合借用幻燈片演示設(shè)計(jì)作品,或者給客戶展示的設(shè)計(jì)方案,又或者是需要在文章當(dāng)中,展示作品,選取配圖。如果你希望你的展示和演講更加具有吸引力,那么可能需要針對這些視覺素材進(jìn)行處理,讓你的觀眾或者讀者,被內(nèi)容吸引,被信息打動,能夠 Get 到你所要表達(dá)的東西。

今天這篇文章,梳理了 20 個對關(guān)于幻燈片/演示文稿的處理技巧和經(jīng)驗(yàn)總結(jié),希望能夠幫到你。

1、厘清演示的目標(biāo)是什么

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

在創(chuàng)建任何用來展示的幻燈片之時, 你首先要搞清楚一個問題——你的目標(biāo)或者目的是什么。明確了這一點(diǎn),才能做好下一步的設(shè)計(jì)。

2、對你的觀眾有所了解

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

除了了解自己的目標(biāo),你還要搞清楚你的觀眾或者你的受眾是做什么,有什么特征,對什么感興趣,會具備什么樣的動機(jī),這樣你在設(shè)計(jì)的時候,才能夠更加具有針對性。如果是甲方,那么甲方是什么樣的人?你是否要提供一個具有代入感的故事,在最后再進(jìn)行報(bào)價(jià)是否合適?搞清楚觀眾,后面的問題你就有答案了。

3、演示越短小精悍越好

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

如果你的幻燈片準(zhǔn)備得過長,那么最好大概每20分鐘就需要中斷,適當(dāng)休息一下,或者調(diào)整演示內(nèi)容的媒體形態(tài),讓你的聽眾可以借此修整,并重新集中注意力。

4、講故事有助于保持觀眾注意力

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

講故事能夠更好地同用戶建立聯(lián)系,保持用戶的參與感,集中注意力。如果用戶無法集中注意力,那么你的展示和設(shè)計(jì)做得再好都沒有用。你可以參考一些常見的、有效的敘事框架,拿捏好關(guān)鍵的因素:

關(guān)鍵角色:客戶、用戶、組織、團(tuán)隊(duì)等;
核心問題:挑戰(zhàn)、痛點(diǎn)、風(fēng)險(xiǎn)等;
框架指南:產(chǎn)品、公司、服務(wù)等;
完整歷程:解決問題的愿景、具體執(zhí)行計(jì)劃等;
抵達(dá)成功:光明的未來、最終的成就等;

5、目前人類注意力時長為8秒

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

這意味著,如果你的幻燈片當(dāng)中的內(nèi)容,下面的觀看者無法在 8 秒內(nèi)消化,那么它可能就失去效果,并且用戶會快速分心。

6、減少文本,增加視覺效果

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

幻燈片要簡短,不要讓它像書本一樣堆滿信息,你應(yīng)該提供最快速有效的簡短展示,減少文字,增加輔助的視覺效果,幫助用戶集中注意力。

7、構(gòu)建文本層級

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

如果你的文本內(nèi)容無法進(jìn)一步增減,那么你需要做的就是梳理出它的層級關(guān)系,讓字體的層級來輔助觀看者更快 Get 到其中的信息。我們習(xí)慣于快速掃視,而不是逐字閱讀。

8、確保文本的可讀性

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

凸顯重要內(nèi)容,控制好字號大小,排版結(jié)構(gòu),讓觀看者能夠清晰閱讀內(nèi)容。過于鮮艷的色彩會產(chǎn)生視覺頻閃,對比度過低會讓可讀性極差。

9、始終記住哪些信息是要分享出來

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

在實(shí)際的展示的過程中,展示者在電腦上看到的,和最終在大屏幕上演示的內(nèi)容是不一樣。演示給下面觀眾的內(nèi)容一定要簡約直觀,而更多的輔助信息只需要顯示在展示者自己的電腦上,作為提示即可。

10、突出重點(diǎn)

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

提取最重要的信息點(diǎn),使用更大的展示性的字體來呈現(xiàn),這是有助于讓這些信息脫穎而出的,而不是簡單地、沒有篩選地鋪陳出來。

11、善用信息圖

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

信息圖和簡單的數(shù)據(jù)展示有著極大的差別,信息圖所展示的信息更易于被觀看者理解和吸收,使用信息圖還能讓整個展示過程更加視覺化、富有創(chuàng)意。

12、不要糾結(jié)于幻燈片的數(shù)量

我經(jīng)常會聽到這樣的要求:「這套幻燈片只能有7個頁面,同時我們不能刪除任何內(nèi)容?!?

千萬不要將內(nèi)容塞到固定數(shù)量的幻燈片當(dāng)中,那是沒有任何意義的。一套用來演示的幻燈片的數(shù)量應(yīng)該是可以增刪的,它們的數(shù)量取決于你所要展示內(nèi)容的多少,以及呈現(xiàn)的方式。對于絕大多數(shù)的展示和演講而言,20~30 張幻燈片是一個合理的數(shù)量。

13、將留白空間翻三倍

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

留白是制作幻燈片時最容易被忽略的元素,通常而言,我在修改幻燈片的時候,將留白的空間放大三倍,視覺上的呼吸感就正正好好。

14、避免使用不自然的照片

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

好的圖片素材,通常會有著相對充沛的感情和自然的敘事。在你的幻燈片當(dāng)中,需要采用更加富有真實(shí)感的照片,以營造真實(shí)的敘事感。不幸的是,這種設(shè)計(jì)知易行難,絕大多數(shù)的圖庫所提供的照片都缺乏這種應(yīng)有的真實(shí)感。當(dāng)然, Unsplash.com 所提供的照片,相對而言會好一些,而且是免費(fèi)的。

15、使用一致且妥帖的樣式

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

影響幻燈片視覺樣式的因素有很多,主題、受眾、品牌等等等等,都會有影響。但是不論情況如何,你都應(yīng)該讓整個幻燈片所采用的字體、圖標(biāo)、配色、插畫的樣式始終保持一致。其中,最常用的方法是定義整個幻燈片的模板,來協(xié)助你保持一致性。

16、控制節(jié)奏感

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

不要把幻燈片用信息全部填滿,可以在其中插入一些可以幫助觀看者「中場休息」的幻燈片,它可以起到過渡作用,也可以幫助觀看者不用一直緊繃著情緒。

17、使用轉(zhuǎn)場動效和動畫

轉(zhuǎn)場動效和動畫可能會成就你的整場演示,也可能讓它淪為一場災(zāi)難。我的建議是,盡量讓動畫和動效微妙一點(diǎn),讓它們緊貼內(nèi)容,對信息提供支撐,而不是喧賓奪主。

18、幫助用了解整個演示的進(jìn)度

設(shè)計(jì)師必知的20個幻燈片實(shí)用設(shè)計(jì)技巧

對于較長且復(fù)雜的演示,讓觀眾看到進(jìn)度條,了解整個演示的進(jìn)程是非常有必要的,當(dāng)他們感受到演示的進(jìn)程,就能體會到掌控感和安全感。

19、排練和記錄同樣重要

做好幻燈片之后,一定要自己排練一下整個過程,走一遍之后會讓你對于整個演示過程中,哪里有問題,哪里要改進(jìn)有更清晰的認(rèn)知。借助排練來排查問題,迭代展示,非常有必要。

20、將設(shè)計(jì)思維貫徹到演示文稿中

當(dāng)然,設(shè)計(jì)幻燈片和設(shè)計(jì) APP、網(wǎng)頁是截然不同的,但是設(shè)計(jì)思維層面上,這幾個領(lǐng)域確實(shí)完全相通的。你可以借用各種設(shè)計(jì)規(guī)則和方法來將幻燈片設(shè)計(jì)得更加合理優(yōu)秀。

文章來源:優(yōu)設(shè)    作者:Taras Bakusevych

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

B端-表格設(shè)計(jì)

ui設(shè)計(jì)分享達(dá)人

在B端產(chǎn)品中,數(shù)據(jù)主要通過表格的形式展現(xiàn)。本文是我從實(shí)際工作出發(fā),結(jié)合項(xiàng)目和過去經(jīng)驗(yàn)對于復(fù)雜業(yè)務(wù)類的表格設(shè)計(jì)的一次總結(jié)。



1、表格的介紹


1.1表格的定義


表格(Table),又稱為表,是用來收集、整理、組織、分析數(shù)據(jù)的二維矩陣。它既是一種可視化交流模式,又是一種組織整理數(shù)據(jù)的手段。


1.2表格的構(gòu)成元素


通常表格的組成元素以及相關(guān)元素會有多個部分,筆者根據(jù)自己設(shè)計(jì)表格的工作經(jīng)驗(yàn)將表格概括為容器、篩選區(qū)、功能性按鈕、表頭、表體以及底欄等六個部分,其各個部分包含的相關(guān)元素如圖所示。



容器:包含表格的所有內(nèi)容。

篩選區(qū):包括搜索和條件篩選。方便用戶快速查詢定位數(shù)據(jù),一般位于表格上方。

功能性按鈕:比如常見的[新增]按鈕和各種批量操作按鈕。

表頭:說明數(shù)據(jù)的內(nèi)容,可以包含篩選、排序等功能。

表體:包含行和列數(shù)據(jù),按列可以分為多選列、數(shù)據(jù)列、操作列。(多選列=多選框;數(shù)據(jù)列=呈現(xiàn)業(yè)務(wù)展現(xiàn)需要的信息;操作列=針對單行數(shù)據(jù)的操作按鈕,比如管理、編輯信息等。)

底欄:包含數(shù)據(jù)量、單頁條目、總條目、分頁等,底欄數(shù)據(jù)也可以放置在表格頂部。


1.3表格的樣式


1)幾種常見的風(fēng)格樣式


a.網(wǎng)格型:表格有均勻而明顯的分割線,邊框單元格比較明顯。

b.水平線型:僅顯示水平線可減少整個網(wǎng)格的視覺噪聲。

c.斑馬條紋型:隔行交替使用不同底色來區(qū)分?jǐn)?shù)據(jù)。

d.自由形式:移除所有分割線,通過盡可能減少視覺噪聲來創(chuàng)建極簡外觀。



2)關(guān)于樣式的選取技巧


網(wǎng)格型:對于數(shù)據(jù)之間的關(guān)系緊密(列信息較多而沒有足夠空間用留白來分割信息)且有對比關(guān)系的。


水平線型:它能顯著減輕表格在垂直方向的視覺重量,提升用戶進(jìn)行大量數(shù)據(jù)對比時的速度。因此對于所有數(shù)據(jù)集大小,此樣式都是最常見的。


斑馬條紋型:每行交替使用不同的顏色背景是幫助用戶在閱讀時保持其位置的另一種好方法。對于較大的數(shù)據(jù)集,建議使用此樣式,在較大的數(shù)據(jù)集中,交替模式將很清晰,并且不會引起特定行突出顯示的混亂。


自由形式:對于小型數(shù)據(jù)集,如果用戶在閱讀時不需要幫助就可以保持位置,則建議使用此樣式。


信息內(nèi)容的有效傳達(dá)是表格設(shè)計(jì)的本質(zhì),就表格本身而言應(yīng)該是隱型的,應(yīng)該讓用戶注意力聚焦在核心內(nèi)容上。所以,邊框的顏色應(yīng)非常淡,不能妨礙快速瀏覽。


2、表格的設(shè)計(jì)技巧


表格是為可讀性而生的,一個結(jié)構(gòu)清晰的布局能大大提升用戶對信息的接收速度和理解程度。因此,設(shè)計(jì)易讀,易掃視,易比較,易操作的表格結(jié)構(gòu)是表格設(shè)計(jì)的首要目標(biāo)。


下面我將以公司財(cái)務(wù)中臺的表格改版為例,逐步說明表格中每個結(jié)構(gòu)的設(shè)計(jì)。


這是改版前后樣式對比圖:



2.1篩選區(qū)設(shè)計(jì)


篩選區(qū)可以看作表格的導(dǎo)航,由搜索和篩選這兩部分組成。一般搜索和篩選會同時出現(xiàn),但是兩者一般很少同時使用來對數(shù)據(jù)進(jìn)行定位。搜索更多的是對單一或者包含某個字段的的數(shù)據(jù)來進(jìn)行定位;篩選則是用來查詢一類數(shù)據(jù)

根據(jù)MECE分析法,篩選區(qū)可以有以下的表現(xiàn)形式:


  • 常用搜索少用篩選,若篩選項(xiàng)多,可以選擇隱藏篩選項(xiàng),篩選少可以展示出來;

  • 搜索和篩選都常用,可以將搜索和篩選都展示出來;

  • 常用篩選少用搜索,篩選和搜索同時展示;

  • 篩選和搜索都不常用,展示搜索隱藏篩選。


1)搜索


在樣式上,搜索可以分為簡單搜索、標(biāo)簽搜索、高級搜索等三類。


  • 簡單搜索:由一個搜索框和一個按鈕組成??梢暂斎胍粋€或多個條件進(jìn)行搜索。

  • 標(biāo)簽搜索:在簡單搜索的基礎(chǔ)上加上標(biāo)簽,即先選標(biāo)簽,在輸入搜索內(nèi)容。

  • 高級搜索:即點(diǎn)擊更多展開其他搜索條件,減少了更多條件對用戶的干擾,但降低了易發(fā)現(xiàn)性。



2)篩選


根據(jù)篩選的位置,可以分為標(biāo)簽篩選、表頭篩選兩類。



3)案例小講堂


對于數(shù)據(jù)集較大的B端系統(tǒng)來說,往往篩選條件比較多,都將其展示出來會導(dǎo)致空間占比過大,影響了用戶對表格信息的獲取。下面以我公司的財(cái)務(wù)中臺為例,講講如何優(yōu)化篩選區(qū),希望對大家有所啟示。


3.2.3 版本中篩選區(qū)樣式



篩選條件全部展開,目的是讓用戶對信息進(jìn)行快速的查詢、過濾,以快速準(zhǔn)確完成目標(biāo)任務(wù)。但業(yè)務(wù)復(fù)雜,數(shù)據(jù)集過多少,篩選條件也相應(yīng)增加(空間占比大),看起來非常冗余,不利于快速定位目標(biāo)。為了平衡掃描、查詢、過濾、分析等這些操作,復(fù)雜業(yè)務(wù)的表格區(qū)篩選需要進(jìn)行一定的優(yōu)化處理,這樣才能滿足滿足業(yè)務(wù)需求同時,又符合用戶心智模型。


方案A  整齊劃一


整合篩選項(xiàng),采用表頭篩選+標(biāo)簽篩選的樣式,縮減篩選區(qū)的頁面空間占比。



討論結(jié)果:雖然這個方案使篩選區(qū)的空間占比縮小,整體頁面也看似整潔不少。但表頭篩選在復(fù)雜的業(yè)務(wù)系統(tǒng)中存在幾個弊端:


a.數(shù)據(jù)集往往很龐大,表格不能展示所有字段,往往采用列固定的形式來呈現(xiàn)數(shù)據(jù)的完整性。以財(cái)務(wù)中臺為例,高頻篩選功能已被遮擋(如上圖),篩選前需先對表格進(jìn)行橫向滾動,無端增加操作;


b.應(yīng)無法展示全部字段,用戶無法清晰的感知到篩選了哪些內(nèi)容,增加認(rèn)知學(xué)習(xí)成本;


c.表頭中的屬性并不是都可以進(jìn)行篩選,用戶不可感知哪些可以篩選,需要滑動表格檢索。


方案B 強(qiáng)調(diào)主次關(guān)系


采用展開式的標(biāo)簽篩選樣式,對不常用的篩選項(xiàng)做隱藏處理。但因業(yè)務(wù)場景的復(fù)雜度,高頻篩選功能還是很多,沒有解決本質(zhì)的問題,如下圖:



方案C 分狀態(tài)展示(逐漸呈現(xiàn))


在方案B的基礎(chǔ)上進(jìn)行了優(yōu)化。提煉與流程相關(guān)的狀態(tài),按步驟顯示,每一步只顯示當(dāng)前需要關(guān)注的內(nèi)容,如圖:



狀態(tài)的提煉過程


1)整理每個單據(jù)的狀態(tài),理清關(guān)系



結(jié)合業(yè)務(wù)流程可以很明顯的注意到,單據(jù)只有通過了審核才能收款,只有收款才能進(jìn)行核銷。狀態(tài)是一種遞進(jìn)關(guān)系(審核 ?? 收款 ?? 核銷)。


2)結(jié)合財(cái)務(wù)人員的工作流,提煉出單據(jù)的以下幾種狀態(tài),之前存在到問題(表格中單行數(shù)據(jù)的操作不一致),也得到了完美的解決。如圖:



2.2功能區(qū)按鈕設(shè)計(jì)


1)按鈕的表現(xiàn)形式


建議在復(fù)雜系統(tǒng)設(shè)計(jì)中使用圓角矩形的按鈕樣式。


理由如下:

a.人眼處理圓角更容易(認(rèn)知負(fù)荷說)


Jürg N?nni(Visual Perception的作者)表示,視網(wǎng)膜中區(qū)處理正圓形的時候是最快速的,而處理邊邊角角的時候則比較費(fèi)力,大腦處理的速度也較慢。于是,長得圓潤的圓角矩形相較于一般矩形,對于使用者來說就容易接納許多。


Barrow Neurological Institute (巴羅神經(jīng)病學(xué)研究)的研究也顯示,一個物體的顯著度與邊角的角度呈線性變化,銳角相較于鈍角要顯得更明顯突出。換句話說,角度越尖銳,物體就看起來越明亮;而越明亮的物體就越難以直視。



如上圖所示角度越尖銳,看起來越顯眼,在視覺上也比較令人感到明亮,不適,大腦的認(rèn)知符合也越高。


b.使相似的內(nèi)容更容易被區(qū)別


舉個例子,如下圖所示,即便間距相同,B 排的圓角矩形辨識度還是明顯比A 排的矩形高。



這是為什么呢?

首先,第一眼看過去的時候,A 排的矩形整體是連在一起的,中間找不到斷點(diǎn)。而B 排矩形,因?yàn)橛袌A角的關(guān)系,所以斷點(diǎn)很明顯。



其次,兩種矩形的視覺聚焦:A 排由于直角的關(guān)系,視覺聚焦向外推,整體的效果比較發(fā)散。這會使得第一眼看過去的時候,容易分不清楚哪一條邊框?qū)儆谀囊粔K矩形。反之B 排因?yàn)閳A角收攏的關(guān)系,視覺聚焦向中心推,區(qū)塊就比較容易區(qū)別開來。



綜上所示,圓角矩形是非常有效率的容器,在復(fù)雜場景業(yè)務(wù)中(存在很多種功能型按鈕),按鈕采用圓角矩形樣式最提效。


這里要注意,圓角不是越大越好


在相同面積中,按鈕的可操作區(qū)域隨著圓角的增大而遞減,因此在同等尺寸下的按鈕中,小圓角的按鈕明顯比大圓角的按鈕更容易操作。


同時在實(shí)際業(yè)務(wù)中,按鈕常常被當(dāng)作原子與下拉框聯(lián)動組成下拉菜單控件。如若使用半圓按鈕則無疑增加了下拉框的設(shè)計(jì)難度并且匹配起來也會略顯突兀。



2)批量操作按鈕的位置思考


來看個舉個例子(針對財(cái)務(wù)中臺批量操作的優(yōu)化方案)


現(xiàn)存問題




方案A  信息前置


批量操作按鈕全部展開不做折疊處理,信息前置來降低認(rèn)知成本,方便用戶記憶。



討論結(jié)果:對于復(fù)雜業(yè)務(wù)來說,會有很多批量操作功能,按鈕很多,造成頁面擁擠,進(jìn)而影響用戶操作體驗(yàn);一個位置出現(xiàn)2個主按鈕樣式,不推薦。


方案B 沉浸式操作體驗(yàn)


對于一開始不可用的批量操作按鈕進(jìn)行隱藏,勾選激活狀態(tài),顯示在篩選區(qū)。



討論結(jié)果:方案B的阻斷性強(qiáng) — 無法兼顧批量操作和數(shù)據(jù)篩選功能,無法滿足復(fù)雜系統(tǒng)的場景操作。


方案C 上內(nèi)容下操作,前2個方案的優(yōu)化 


不做隱藏,類灰布置于底部。勾選觸發(fā)操作條件,未做勾選時,用戶點(diǎn)擊時給出引導(dǎo)操作提示



為什么選擇方案C?理由如下:


首先,根據(jù)古騰堡原則,用戶的在做表格操作的時候,視覺流是左做到右,從上到下,方案A和方案B的視覺落腳點(diǎn)在表格的上方,顯然是不符合眼動規(guī)律的。



其次,批量操作的功能屬于財(cái)務(wù)中臺的核心功能點(diǎn),隱藏不是第一選擇,而是類置灰的特除處理(在按鈕旁給提示信息)


2.3表頭設(shè)計(jì)


表頭在能夠概括的情況下,盡量簡練、準(zhǔn)確,一般可根據(jù)上下文關(guān)系來進(jìn)行減短簡化,以達(dá)到節(jié)省表格頭部空間和減輕視覺壓力的作用,讓用戶注意力聚焦在數(shù)據(jù)本身。如果精簡后的生僻字段難以自我解釋,可以跟一個釋義標(biāo)識,鼠標(biāo)懸停時出現(xiàn)該字段的詳細(xì)解釋,同時滿足新手用戶、普通用戶以及專家用戶的需求。



2.4表體設(shè)計(jì)


1)數(shù)據(jù)對齊方式


在數(shù)據(jù)的對齊方式上,有以下3個建議:

a.文本左對齊

b.數(shù)字右對齊

c.表頭與信息內(nèi)容對齊方式一致


文本左對齊,符合正常的心智模型(閱讀習(xí)慣從左到右);表頭與內(nèi)容對齊一致,則是為了簡化和降低視覺噪音,以便更好的獲取數(shù)據(jù)信息。數(shù)字右對齊,有利于數(shù)據(jù)間的對比。


要注意的一個細(xì)節(jié),例如,當(dāng)列數(shù)=2的時候,由于列與列直接的間距過大,導(dǎo)致兩者的關(guān)聯(lián)性較弱,如圖:



這時又該如何處理?

為了增強(qiáng)列與列之間的相關(guān)性,當(dāng)鼠標(biāo)hover在行的時候,產(chǎn)生高亮。這種方式可能不是最優(yōu)的,但目前只能想到這種方法,如果讀者有更好的想法歡迎留言。



2)數(shù)字的字體選擇


建議選用:Helvetica Neue、Helvetica、Arial、sans-serif.


蘋方在數(shù)字字符上,不同數(shù)字寬度不一致,導(dǎo)致千位分隔符不在一條線上。而Helvetica Neue數(shù)字等寬,千位分隔符有序的排列在一條線上。所以,選擇Helvetica Neue作為數(shù)字字體的首選字體。數(shù)值上下對比的時候,相同位置的數(shù)字在同一條豎線上,更加容易對比。



3)對操作項(xiàng)進(jìn)行“解耦”處理


在財(cái)務(wù)中臺系統(tǒng)中,常常由于權(quán)限的不同或者單據(jù)狀態(tài)不同這兩種原因,使得每行的數(shù)據(jù)擁有不同的操作項(xiàng),如下圖所示:



存在的問題:


  • 當(dāng)信息過載,操作項(xiàng)這個list非常長的話,頁面將會非常擁擠;

  • 文字按鈕因?yàn)橐曈X特征比較明顯,造成了不必要的分散注意力;

  • 誤操作率相對較高,同樣因?yàn)楸砀窨臻g有限,當(dāng)操作區(qū)非??拷苋菀滓徊恍⌒木忘c(diǎn)錯了。


針對這個問題所出的解決方案,如下:


方案A 下拉框樣式



討論結(jié)果:下拉框中可能存在不同操作,同樣避免不了誤操作這個問題


方案B 錯位顯示




討論結(jié)果:首先,這樣的設(shè)計(jì)浪費(fèi)大量的屏幕空間;其次,浪費(fèi)開發(fā)工作量!因?yàn)樵诹斜碇袑?shí)現(xiàn)一系列權(quán)限判斷和操作,在詳情界面中往往還需要再開發(fā)一次相同的權(quán)限判斷和操作;再次,不同單據(jù)可能存在操作順序不一樣,上下移動鼠標(biāo)會存在不同操作,用戶代價(jià)非常高。


方案C  以不變應(yīng)萬變


回歸『一個界面一個用戶任務(wù)』的原則,列表中的單行數(shù)據(jù)只保留[查看]或[管理]操作,所有其它的單獨(dú)操作都去往該單據(jù)的詳情界面完成。





討論結(jié)果:從開發(fā)的角度上看,此方案界面高度解耦,功能迭代方便,節(jié)約開發(fā)工作量;從認(rèn)知成本上看,列表界面操作高度一致性,利于養(yǎng)成用戶習(xí)慣;從操作效率上看,在詳情頁用戶會明顯確認(rèn)目標(biāo)單據(jù),幾乎不會誤操作; 同時此方案節(jié)約了大量屏幕空間,更有利于用戶對信息的獲??;


4)關(guān)于表格中套表格的解決方案


場景:在財(cái)務(wù)中臺中,有這樣一種用戶,需要對表格內(nèi)的數(shù)據(jù)進(jìn)行對比并編輯。

來看看之前的頁面:



這樣處理的不足點(diǎn):


  • 1.在查看和編輯信息時,無效的信息太多。降低了獲取信息的效率;

  • 2.切換單條數(shù)據(jù)時,頁面出現(xiàn)跳動,無法快速檢索到相對應(yīng)的信息;


對此,在3.3.2版本中,我們對其做了相應(yīng)的優(yōu)化。運(yùn)用側(cè)視圖(快速視圖)的方式來呈現(xiàn)信息。一旦選擇一個單據(jù),它就會從側(cè)面彈出的。



這個方案,它可以保持上下文,易于使用,即使是在垂直滾動視圖中顯示大量字段的情況下也效果良好。同時信息呈現(xiàn)的地方是固定的,利于檢索,查找。


5)行高的制定方法


開始之前首先明確一下開發(fā)是怎么實(shí)現(xiàn)行高的。



從上圖可以看出,開發(fā)在實(shí)現(xiàn)設(shè)計(jì)稿時,通常是按照行高來寫的。


因此,表格行高=文字行高+上下間距。其中,文字行高可以設(shè)定為字號的1.2~1.8倍,上下間距可以設(shè)定為字號的1~1.5倍。


行高影響每行信息的易讀性。除了上述的做法外,還有以下2種做法,來保證各場景下獲取信息的效率與易讀性。


做法1:不同分辨率使用不同行高


設(shè)計(jì)兩套不同的行高,在大分辨率下顯示較高的行高,給數(shù)據(jù)間提供更多呼吸的空間;在小分辨率下顯示較小的行高,使一屏內(nèi)可以看到更多的行高。Gmail就是這樣設(shè)計(jì)的,如下圖所示:



做法2:自定義行高


自定義行高為興奮需求,可以提高用戶的用戶體驗(yàn)。所以我們可以視表格的具體情況來設(shè)計(jì)設(shè)置行高的形式,可以放置在設(shè)置按鈕里,也可以在外部按鈕較少的情況下展示出來。



2.5底欄設(shè)計(jì)


最后是表格的底欄,底欄也是不可缺少的一部分,承載的作用主要是告訴用戶數(shù)據(jù)條數(shù)以及當(dāng)前位置。分頁的設(shè)計(jì)是根據(jù)不同的場景進(jìn)行選擇最優(yōu)的設(shè)計(jì)方案。在不需要定點(diǎn)跳轉(zhuǎn)的場景,建議建議刪除跳頁,刪除多于的功能,使頁面簡潔、清爽。

                          

3、其他設(shè)計(jì)細(xì)節(jié)


3.1 空白單元格的處理


表格中經(jīng)常會出現(xiàn)空數(shù)據(jù)或無數(shù)據(jù)的情況,留白處理會給用戶造成一定的困惑和誤解,是系統(tǒng)沒有加載出來嗎?明智的做法,是無數(shù)據(jù)時用「-」來填充顯示,數(shù)據(jù)為零時與上下數(shù)據(jù)單位、小數(shù)點(diǎn)相同的0來顯示。

 

3.2減少圖形元素的使用


盡量減少視覺符號的使用,因?yàn)橐曈X符號可能會使你的用戶界面復(fù)雜,產(chǎn)生難以理解的內(nèi)容。去除不必要的視覺干擾,例如不必要的圖標(biāo)、無規(guī)律的色彩等。



3.3省略 (氣泡展示位置)


當(dāng)列表中數(shù)據(jù)過長時,我們需要根據(jù)屏幕寬度調(diào)整列表展示方式,超過列表默認(rèn)寬度的內(nèi)容可以省略,通常用...表示,鼠標(biāo)移入后出現(xiàn)氣泡展示全部內(nèi)容。


位置:建議展示在上方,因?yàn)槲覀兊拈喿x順序是從上到下,鼠標(biāo)向下移動時不會被上面的氣泡遮擋住。氣泡面積不宜過大,根據(jù)屏幕尺寸控制在一定比例,一版不超過內(nèi)容區(qū)的四分之一,展示不下的內(nèi)容可以在氣泡中增加滾動條。




4、后記


感謝閱讀!本文結(jié)合了實(shí)際項(xiàng)目經(jīng)驗(yàn)對表格設(shè)計(jì)做了一次總結(jié),在具體項(xiàng)目中,你可能需要根據(jù)產(chǎn)品特性和用戶需求進(jìn)行調(diào)整。如果你還有什么好的想法和建議,可以在評論里留言討論。

文章來源:站酷     作者:Hi_Nick 

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

10分鐘徹底搞懂單頁面應(yīng)用路由

seo達(dá)人

單頁面應(yīng)用特征

假設(shè): 在一個 web 頁面中,有1個按鈕,點(diǎn)擊可跳轉(zhuǎn)到站內(nèi)其他頁面。


多頁面應(yīng)用: 點(diǎn)擊按鈕,會從新加載一個html資源,刷新整個頁面;


單頁面應(yīng)用: 點(diǎn)擊按鈕,沒有新的html請求,只發(fā)生局部刷新,能營造出一種接近原生的體驗(yàn),如絲般順滑。


SPA 單頁面應(yīng)用為什么可以幾乎無刷新呢?因?yàn)樗腟P——single-page。在第一次進(jìn)入應(yīng)用時,即返回了唯一的html頁面和它的公共靜態(tài)資源,后續(xù)的所謂“跳轉(zhuǎn)”,都不再從服務(wù)端拿html文件,只是DOM的替換操作,是模(jia)擬(zhuang)的。


那么js又是怎么捕捉到組件切換的時機(jī),并且無刷新變更瀏覽器url呢?靠hash和HTML5History。


hash 路由

特征

類似www.xiaoming.html#bar 就是哈希路由,當(dāng) # 后面的哈希值發(fā)生變化時,不會向服務(wù)器請求數(shù)據(jù),可以通過 hashchange 事件來監(jiān)聽到 URL 的變化,從而進(jìn)行DOM操作來模擬頁面跳轉(zhuǎn)

不需要服務(wù)端配合

對 SEO 不友好

原理

hash


HTML5History 路由

特征

History 模式是 HTML5 新推出的功能,比之 hash 路由的方式直觀,長成類似這個樣子www.xiaoming.html/bar ,模擬頁面跳轉(zhuǎn)是通過 history.pushState(state, title, url) 來更新瀏覽器路由,路由變化時監(jiān)聽 popstate 事件來操作DOM

需要后端配合,進(jìn)行重定向

對 SEO 相對友好

原理

Html5 History


vue-router 源碼解讀

以 Vue 的路由vue-router為例,我們一起來擼一把它的源碼。


Tips:因?yàn)?,本篇的重點(diǎn)在于講解單頁面路由的兩種模式,所以,下面只列舉了一些關(guān)鍵代碼,主要講解:


注冊插件

VueRouter的構(gòu)造函數(shù),區(qū)分路由模式

全局注冊組件

hash / HTML5History模式的 push 和監(jiān)聽方法

transitionTo 方法

注冊插件

首先,作為一個插件,要有暴露一個install方法的自覺,給Vue爸爸去 use。


源碼的install.js文件中,定義了注冊安裝插件的方法install,給每個組件的鉤子函數(shù)混入方法,并在beforeCreate鉤子執(zhí)行時初始化路由:


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)

 },

 // 全文中以...來表示省略的方法

 ...

});

區(qū)分mode

然后,我們從index.js找到整個插件的基類 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}`)

     }

   }

 }

}

全局注冊router-link組件

這個時候,我們也許會問:使用 vue-router 時, 常見的<router-link/>、 <router-view/>又是在哪里引入的呢?


回到install.js文件,它引入并全局注冊了 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)

   }

}

};

就像最開始提到的,VueRouter構(gòu)造函數(shù)中對不同mode初始化了不同模式的 History 實(shí)例,因而router.replace、router.push的方式也不盡相同。接下來,我們分別扒拉下這兩個模式的源碼。


hash模式

history/hash.js 文件中,定義了HashHistory 類,這貨繼承自 history/base.js 的 History 基類。


它的prototype上定義了push方法:在支持 HTML5History 模式的瀏覽器環(huán)境中(supportsPushState為 true),調(diào)用history.pushState來改變?yōu)g覽器地址;其他瀏覽器環(huán)境中,則會直接用location.hash = path 來替換成新的 hash 地址。


其實(shí)最開始讀到這里是有些疑問的,既然已經(jīng)是 hash 模式為何還要判斷supportsPushState?是為了支持scrollBehavior,history.pushState可以傳參key過去,這樣每個url歷史都有一個key,用 key 保存了每個路由的位置信息。


同時,原型上綁定的setupListeners 方法,負(fù)責(zé)監(jiān)聽 hash 變更的時機(jī):在支持 HTML5History 模式的瀏覽器環(huán)境中,監(jiān)聽popstate事件;而其他瀏覽器中,則監(jiān)聽hashchange。監(jiān)聽到變化后,觸發(fā)handleRoutingEvent 方法,調(diào)用父類的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)用的父類History下的跳轉(zhuǎn)方法,跳轉(zhuǎn)后路徑會進(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模式

類似的,HTML5History 類定義在 history/html5.js 中。


定義push原型方法,調(diào)用history.pusheState修改瀏覽器的路徑。


與此同時,原型setupListeners 方法對popstate進(jìn)行了事件監(jiān)聽,適時做 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)聽時觸發(fā)了this.transitionTo,這到底是個啥呢?它其實(shí)是定義在 history/base.js 基類上的原型方法,用來處理路由的變更邏輯。

先通過const route = this.router.match(location, this.current)對傳入的值與當(dāng)前值進(jìn)行對比,返回相應(yīng)的路由對象;接著判斷新路由是否與當(dāng)前路由相同,相同的話直接返回;不相同,則在this.confirmTransition中執(zhí)行回調(diào)更新路由對象,并對視圖相關(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ì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

資深UI設(shè)計(jì)者

導(dǎo)語

你平時填寫過的最復(fù)雜的表單是什么?調(diào)查問卷還是文檔信息錄入?如果一個表單字段內(nèi)容巨多,結(jié)構(gòu)多變,填寫耗時耗力,那你將如何設(shè)計(jì)你的表單,使之體驗(yàn)更佳?

面臨的問題

1. 業(yè)務(wù)復(fù)雜,功能較多;

不知道大家是否看過法律合同之類的文件,多則好幾籮筐,少也有厚厚一疊,類似的文檔如果進(jìn)行線上結(jié)構(gòu)化,勢必要同樣要花費(fèi)巨大的人力去填寫表單,完成基礎(chǔ)信息的錄入工作,同時,由于錄入的時間不確定,流程不明確等問題,也制約著表單的填寫。

2. 流程較長,操作繁瑣;

多個不同表單之間的互有關(guān)聯(lián)又相互區(qū)別,填寫的時候需要來回查看以確認(rèn)信息,查閱和填寫相互并行,操作繁瑣。

3. 字段較多,關(guān)聯(lián)項(xiàng)較多;

幾乎每一個字段都有對應(yīng)的關(guān)聯(lián)項(xiàng),每個單選字段的不同項(xiàng)決定不同的內(nèi)容,同時,由于字段數(shù)量,層級劃分不明確,會使填寫的人失去定位,產(chǎn)生迷惑。

解決的方案

1. 內(nèi)容分組,分步填寫;

根據(jù)業(yè)務(wù)內(nèi)容分級,合理運(yùn)用顏色、間距、字體大小、卡片層級等進(jìn)行信息分級

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

2. 實(shí)時保存,避免數(shù)據(jù)丟失,提供草稿功能,避免任務(wù)中斷;

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

3. 字段分組,示意結(jié)構(gòu),聯(lián)動項(xiàng)隱喻;

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

4. 信息自動帶入,節(jié)省時間;

一般表單是與某項(xiàng)功能掛鉤的,信息會在多個入口錄入,因此在填寫長表單的時候,如果能從系統(tǒng)中自動獲取到數(shù)據(jù),就可以自動為其填充,可根據(jù)業(yè)務(wù)場景,判斷是否讓其修改和更新。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

5. 提供二次編輯功能,防止信息輸入有誤;

一般的長表單在涉及非審批流的時候,可以讓其無限二次編輯,如果是處于審批流,則需要根據(jù)業(yè)務(wù)場景限制其編輯次數(shù)或者限定其編輯規(guī)則(草稿可編輯,一旦提交則不可編輯)。

6. 提供多人協(xié)作編輯功能;

如果一個長表單,需要多個不同的業(yè)務(wù)域的人來填寫,那么需要協(xié)同編輯,并實(shí)時顯示編輯的人員信息,同時,為了避免信息丟失和編輯錯亂,在同一個表單下,同一時間應(yīng)該限制只允許一個人進(jìn)行編輯,等其提交完后,可允許其他人進(jìn)行編輯。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

7. 實(shí)時檢驗(yàn);

前端實(shí)時校驗(yàn)字段輸入規(guī)則,后端統(tǒng)一校驗(yàn)信息交換規(guī)則。

比如對于數(shù)字輸入框的校驗(yàn)、電話號碼的校驗(yàn)、身份證號的校驗(yàn),應(yīng)該在前端實(shí)時完成,在鼠標(biāo)離開焦點(diǎn)區(qū)域或定位到下一個字段的時候,提示其填寫有誤,這樣做的目的是減少后續(xù)修改的次數(shù),在長表單下,統(tǒng)一提示其填寫錯誤會是一場災(zāi)難。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

在點(diǎn)擊保存并填寫下一步或點(diǎn)擊提交信息的時候,就需要跟后端交換數(shù)據(jù),驗(yàn)證錄入的信息,如果不匹配,則提示錯誤,并從上至下定位至相應(yīng)的錯誤字段。

8. 做好填寫引導(dǎo)功能;

要通過多種方式,引導(dǎo)表單的填寫,

在開始填寫之前,簡要說明該表單的業(yè)務(wù)目標(biāo),大概需要花費(fèi)的時間等;

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

開始填寫后,關(guān)于每個字段的特殊說明,都需要標(biāo)注出來,重要的要顯示在頁面上,不重要的就收起在注釋符號中;

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

填寫的過程中,切記不要到最后才告訴用戶哪里出錯了,重要的信息一定要提示到位,否則一旦出錯,前功盡棄;

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

填寫完成后,引導(dǎo)其下一步的操作,或者返回至列表。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

9. 詳情頁也需要注意信息分級

表單填寫完畢后的產(chǎn)出物就是詳情頁,詳情頁是需要瀏覽的,因此在設(shè)計(jì)詳情頁的時候,應(yīng)該本著讓用戶瀏覽方便的原則去設(shè)計(jì),需要注意以下幾個點(diǎn):

結(jié)構(gòu)清晰。是指不要將內(nèi)容一股腦的全堆在頁面上,要做好信息的分類,同時,注意規(guī)劃頁面的層級。

設(shè)置快捷導(dǎo)航。如果一個表單是長且復(fù)雜的,那么其對應(yīng)的詳情頁也會變得復(fù)雜和冗長,因此在頁面的右側(cè)或者頂部設(shè)置合理的快捷導(dǎo)航是很有必要的。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

最后:小細(xì)節(jié),大體驗(yàn)

1. 提供快速返回頂部的按鈕;

快速返回頂部按鈕的使用要注意場景,如果你的頁面比較長,且沒有分組瀏覽的導(dǎo)航,那就需要設(shè)置快速返回頂部的按鈕,但是在存在分組瀏覽導(dǎo)航和頂部懸浮標(biāo)簽的情況下,不建議使用快速返回頂部的按鈕,因?yàn)樵谔顚懕韱蔚臅r候,使用快速置頂?shù)膱鼍氨容^少。

2. 提供分組模塊收起展開功能;

當(dāng)一個模塊混雜著各種信息的時候,單純的模塊分組已經(jīng)無法處理它的復(fù)雜度了,因此需要收起高頻且信息量大的模塊,可以合理的減少頁面的復(fù)雜度。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

3. 步驟提供信息填寫完成度提示;

步驟條可以單純的作為步驟指示器使用,也可以作為一個表單完成度的提示區(qū)域。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

4. 重要說明性文字盡量顯示而非收起;

在填寫大量字段的表單時,閱讀表單內(nèi)容和填寫表單同樣耗時耗力,如果我們將所有的提示信息隱藏在提示符中,一般情況下,用戶不會去查看,但是如果去挨個查看提示信息,則會多花費(fèi)一個步驟去點(diǎn)擊或者懸停來查看提示信息,浪費(fèi)了大量的時間,因此如果涉及到重要的提示信息,請直接展示在字段的后面,不要隱藏起來。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

5. 產(chǎn)品內(nèi)組件應(yīng)該規(guī)范統(tǒng)一;

在后臺產(chǎn)品上,關(guān)于組件的規(guī)范統(tǒng)一,想必是人盡皆知的設(shè)計(jì)原則,無論是各類平臺型設(shè)計(jì)組件,還是各個公司自造的設(shè)計(jì)組件,保持統(tǒng)一和規(guī)范對產(chǎn)品設(shè)計(jì)有著重要的作用,在這里不贅述組件應(yīng)該怎樣規(guī)范統(tǒng)一,因?yàn)闊o論是Ant Design還是其他設(shè)計(jì)語言,都有詳盡的關(guān)于組件的定義方法,我在這里講述一個產(chǎn)品設(shè)計(jì)更高層面或者更深層面的原因:

組件的規(guī)范統(tǒng)一并不僅僅是為了省時省力,而是為了使用戶在使用的過程中達(dá)到認(rèn)知上的統(tǒng)一和行為上的統(tǒng)一,在進(jìn)行高頻次的操作后,界面的流程或者組件樣式已大致在用戶腦海中形成固定印象,因此在操作相同類的流程時,用戶會有更多的掌控感,試想一下,如果你在操作人事相關(guān)的流程后,去填寫績效部分的內(nèi)容時,發(fā)現(xiàn)一個迥異的界面或者彈窗,你肯定覺得這是不是哪里出錯了,甚至?xí)岩蛇@是否是同一個系統(tǒng),目前大多數(shù)公司的管理系統(tǒng)經(jīng)過多次縫縫補(bǔ)補(bǔ),內(nèi)部的跳轉(zhuǎn)邏輯已經(jīng)異常感人,界面風(fēng)格也大放異彩,但是使用起來卻無從下手,深感迷茫。

因此大到界面樣式,小到間距大小,產(chǎn)品設(shè)計(jì)的規(guī)范和統(tǒng)一應(yīng)該是最基礎(chǔ)又不可缺少的原則。

6. 龐大的信息錄入,表單內(nèi)部要分步填寫,外部可拆分成不同的表單分別填寫;

對付復(fù)雜的表單,你需要解決的主要問題并不是填寫方式或者頁面設(shè)計(jì),而是信息分級和結(jié)構(gòu)拆分,解決了這個問題,基本上就解決了業(yè)務(wù)問題,其余部分就跟我們常用的表單一致。

將復(fù)雜度降低并不意味著減少頁面的信息,而是通過設(shè)計(jì)師合理的信息劃分,降低視覺上的復(fù)雜度和流程上的復(fù)雜度,這樣才會達(dá)到當(dāng)前場景下的「最佳解決方案」。

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

如何設(shè)計(jì)一個超長長長長長的復(fù)雜表單?

結(jié)語

隨著互聯(lián)網(wǎng)信息化的深入發(fā)展,復(fù)雜是避免不了的,我知道大家都推崇簡潔的設(shè)計(jì),但那只是對視覺和樣式的定義,而非對信息的定義,我們所處的世界是復(fù)雜的,行業(yè)更是復(fù)雜的,信息的復(fù)雜度與日俱增,想要處理復(fù)雜的信息,就需要從復(fù)雜中尋求規(guī)律,這規(guī)律與業(yè)務(wù)息息相關(guān),


文章來源:優(yōu)設(shè)    作者:

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

如何讓你的「按鈕設(shè)計(jì)」上檔次?

資深UI設(shè)計(jì)者

按鈕在界面設(shè)計(jì)中,屬于最基礎(chǔ)的元素部分組成,按鈕設(shè)計(jì)的精致,整個頁面的品質(zhì)也會上升不少的檔次。今天給大家分享這篇文章,主要講解在設(shè)計(jì)按鈕時我們應(yīng)該考慮哪些因素,包括視覺上,有哪些萬能的方法及公式,能夠正確的制定按鈕的設(shè)計(jì)標(biāo)準(zhǔn),來提升整個設(shè)計(jì)的系統(tǒng)性。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

按鈕有哪些作用?

在設(shè)計(jì)按鈕之前,需要先理解按鈕起到的代表含義。什么地方該加按鈕,什么地方不加按鈕,在系統(tǒng)化設(shè)計(jì)思路中需要非常有講究。通常按鈕在頁面,主要起到以下三點(diǎn)作用:

1. 某一類型的功能操作

這種比較常見,如一些控件形態(tài)的按鈕,比如加減、折疊、展開,下拉等。這類按鈕會起到一些功能形態(tài)的作用,常用于交互場景。所以在這類按鈕設(shè)計(jì)中,應(yīng)當(dāng)弱化按鈕形式,重點(diǎn)強(qiáng)調(diào)功能,突出主體信息。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

2. 下一步的明確指引

當(dāng)頁面內(nèi)容信息過多后,用戶容易失去信息焦點(diǎn),從而忘記下一步操作。信息種類越多,用戶權(quán)衡的時間就會越久,用戶選擇罷手及跳出的幾率也會越大。所以這個時候,在合適的地方增添按鈕,能夠很好的引導(dǎo)用戶進(jìn)行下一步操作,提升整體操作的成功率。其次從體驗(yàn)層面,也一定程度能起到頁面動線的引導(dǎo)作用,比如下方的一組卡片,在增添了按鈕后行動點(diǎn)很明確,非常有點(diǎn)擊欲望~

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

3. 固定習(xí)慣,明確心理預(yù)期

當(dāng)用戶知悉某個按鈕能指向某個操作,或者獲取某類信息后,長期以往用戶就會形成使用這個按鈕的習(xí)慣,這樣對提升復(fù)訪及固定心智是非常有效果。

所以如果你認(rèn)為你負(fù)責(zé)的產(chǎn)品或者是內(nèi)容,能持續(xù)為用戶帶來價(jià)值,那么在頁面的關(guān)鍵節(jié)點(diǎn),不如將按鈕設(shè)計(jì)的更醒目。這樣用戶下次再看到這個按鈕時,固定習(xí)慣會引導(dǎo)他持續(xù)的點(diǎn)擊。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

按鈕有哪些類型?

這里我不以按鈕的長相來區(qū)分按鈕的類型,如漢堡按鈕或者別的什么的,意義不大。我主要還是想通過以按鈕的功能區(qū)分,來劃分類型,這樣大家理解起來更為清晰。

1. 功能性質(zhì)按鈕

這類按鈕見到的最多,我們常用的APP里,大量都充斥了這類按鈕,這類按鈕會起到重點(diǎn)的功能交互,幫助用戶得到TA想要的信息。其次樣式上面,其實(shí)圓形的點(diǎn)擊欲,會更強(qiáng)一些,看起來也更利于點(diǎn)擊。而方型的按鈕,則顯得更為正式、嚴(yán)謹(jǐn)。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

公式:如果是圓形按鈕,圓角的半徑=高度的50%比較合適,而如果是方按鈕,邊角的小圓角半徑控制在15%以下比較合適,我個人喜好用10%。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

2. 聚焦大按鈕

這類按鈕通常見于一些核心頁面的強(qiáng)指引,比如登錄、注冊、提交表單、或者是保存,等對頁面全局進(jìn)行操作的一些按鈕。需要注意的是,這類按鈕只適合對頁面全局進(jìn)行操作,而且頁面中大按鈕的數(shù)量不宜超過2個,信息盡量需要保持聚焦。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

公式:基于@2x,這類大按鈕的高度≥72px是比較合適的,通常的尺寸有 80px、88px、96px,大家可以根據(jù)產(chǎn)品面向的人群來定高度,如果頁面面向的人群較為廣泛,我建議采用 88px 或者是 96px 的這種大號版本,畢竟操作起來更為方便。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

3. 吸底按鈕

這類按鈕的優(yōu)先級,在整個頁面屬于最高,頁面的所有信息,都將聚焦在這個按鈕中。由于按鈕是吸底的,所以會一直浮在頁面上,不受頁面篇幅影響控制。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

需要注意的是,吸底按鈕一定是頁面最重要的功能,或者是整個頁面的下一步指引,比如淘寶的立即購買,或者是餓了么、美團(tuán)的立即下單,又或者是常見的充值界面。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

公式:基于@2x,吸底的高度≥80px是比較合適,常見的尺寸有88px、100px、112px ,按鈕的大小可以根據(jù)內(nèi)容來定,建議高度保持在72px以上比較合適。這里需要注意的是,吸底的按鈕,需要產(chǎn)出兩套設(shè)計(jì)稿,一套為常規(guī)稿,一套為iPhoneX的適配稿。iPhoneX底部控件的區(qū)域高度為68px,所以iPhoneX設(shè)計(jì)稿的吸底高度=常規(guī)設(shè)計(jì)稿吸底高度+68px

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

按鈕有哪些狀態(tài)?

另外在設(shè)計(jì)按鈕的時候,也別忘了補(bǔ)充按鈕的多個狀態(tài)的設(shè)計(jì)稿。常見的狀態(tài),有以下四種:

1. Normal-正常態(tài)

這個為按鈕的正常顯示態(tài),就是正常頁面中的顯示效果。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

2. Hover-懸浮態(tài)

這個為按鈕的懸浮態(tài),一般只會出現(xiàn)在使用鼠標(biāo)的時候。當(dāng)鼠標(biāo)指針停留在按鈕時,按鈕發(fā)出的特殊反饋,則為懸浮態(tài)。這類形式在移動端交互中無作用,所以移動界面設(shè)計(jì)中不需要考慮這個狀態(tài)。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

公式:正常情況 Hover 態(tài)增加 10% 黑色就可以,原理如下

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

3. Pressed-點(diǎn)擊態(tài)

這個為按鈕的按壓態(tài),就是按鈕在被點(diǎn)擊或者是按壓后的效果。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

公式:在APP設(shè)計(jì)中,點(diǎn)擊后的效果我們設(shè)一個標(biāo)準(zhǔn)值讓開發(fā)實(shí)現(xiàn)就好了。常用的值有按鈕減少20%的透明度,或者增添20%的暗度,這兩個都可以。通常我建議在亮色上的按鈕,使用暗度疊加(增添20%的黑色),在暗色上的按鈕,則使用透明度減少(透明度改為80%),實(shí)現(xiàn)效果原理參考 Hover 態(tài)那張配圖

4. Disable-禁用態(tài)

當(dāng)信息未填充完整,或者是某類條件未到,按鈕會出現(xiàn)不可點(diǎn)擊的狀態(tài),處于禁用形式,這個時候,按鈕就會呈現(xiàn)禁用態(tài)。這個禁用態(tài)無論是web還是app,很多場景都會用到,所以建議設(shè)定一套標(biāo)準(zhǔn)的設(shè)計(jì)規(guī)范,避免重復(fù)定義這個效果。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

公式:禁用態(tài)尺寸及大小不變,僅使用色值做區(qū)分。建議使用灰色或者是不透明色,常用的禁用色有#CCC或者#999,需要盡可能把樣式做弱,避免用戶做無效的點(diǎn)擊。

按鈕的風(fēng)格及尺寸

在目前移動互聯(lián)網(wǎng)設(shè)計(jì)中,雖然按鈕的種類很多,但風(fēng)格變的逐漸統(tǒng)一,更多都是色值及細(xì)節(jié)上的差異。從大的風(fēng)格來看,按鈕還是分為這這幾種類型:扁平化、輕擬物、重?cái)M物及游戲按鈕。

1. 扁平化按鈕

這類按鈕我們設(shè)計(jì)用的最多,信息簡潔,操作方便,形式追隨功能。這里也給大家分享一下我在設(shè)計(jì)扁平化按鈕的一些經(jīng)驗(yàn),比如高度寬度,以及陰影的色值。

公式:按鈕高度,這個通常是文字字號的2.4倍然后取4的倍數(shù)整數(shù),比如字號是24,那么按鈕的高度=57.6,離4倍數(shù)最近的是56,所以高度=56,圓角=10%的高度,取整后是6px。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

另外如果覺得不合適,也可以單位往8遞增或者是遞減即可,例如 56、64、72、80、88 px

按鈕寬度:如果不是那種全局按鈕,通常按鈕的寬度=最多容納字?jǐn)?shù)的寬度+按鈕高度,就好啦。還是以上面那個例子為例,按鈕高度=56,文字寬度=96,那么按鈕的寬度=56+96=152

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

2. 輕擬物按鈕

這類按鈕近幾年變的非常流行,甚至QQ、淘寶,都開始大面積使用,因?yàn)檫@類按鈕在保持信息簡潔的同時,仍然有較強(qiáng)的點(diǎn)擊欲,視覺上面也能夠增添頁面的品質(zhì)感。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

公式:漸變方向,建議采用水平漸變,重色在右側(cè),輕色在左側(cè)更為合適。陰影色值我之前就寫過,不知道大家還記得么,陰影顏色=按鈕顏色的 Alpha50%,x=0,y=按鈕高度的20%,模糊值=按鈕高度的50%,擴(kuò)展=按鈕高度的 -15%,高級又簡單,完美!

如果覺得這個彌散陰影太大的同學(xué),也可以自己手動簡單調(diào)整下,不礙事。(這個公式僅適用于Sketch,用PS的同學(xué),也可以按照這個邏輯自行研究一下)

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

另外說一句,實(shí)際上這個陰影公式并沒有什么很多的依據(jù),大多數(shù)都是我個人原創(chuàng)總結(jié)出來的,簡單好用。比如下面的這些按鈕的樣式,用了公式后的效果大家可以自行感受~

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

 

3. 重?cái)M物及游戲按鈕

在一些營銷頁面中,按鈕的樣式通常需要做的比較游戲化。游戲化的按鈕,大部分會采取游戲場景中的元素,再采用擬物的手法,來進(jìn)行打造。

通常游戲化的按鈕,需要重點(diǎn)幾個部分組成,學(xué)過素描的同學(xué)應(yīng)該會知道,立體的物體,通常會有幾大特征,分別為高光,亮部,暗部,投影及反光。那么如果我們需要繪制一個在營銷或者游戲場景中使用的按鈕,只需要保證這個按鈕有高光,亮部,暗部,投影及反光的這些特征,然后飽滿一點(diǎn)就,立馬就可以出效果啦。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

當(dāng)然,我舉的這幾個例子都是最基礎(chǔ)版本,如果你想做的更豐富一些,那也是沒問題的,這個可以case by case 來定。

這個沒有太多的公式可以總結(jié),更多的是看設(shè)計(jì)師的基礎(chǔ)美術(shù)水平啦~~

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

新擬態(tài)按鈕

在寫這篇文章的時候,突然刷到了一套新擬態(tài)的控件設(shè)計(jì)風(fēng)格,有種眼前一亮的感覺。雖然這套設(shè)計(jì)視覺上很有層次很好看,不過感覺短時間之內(nèi),比較難大面積推廣,因?yàn)殚_發(fā)實(shí)現(xiàn)起來還是會比較耗費(fèi)成本。

如何讓你的「按鈕設(shè)計(jì)」上檔次?送你這份萬能公式!

我把源文件保存下來了,對這個感興趣或者好奇這種效果如何實(shí)現(xiàn)的同學(xué),可以下載源文件研究~~ sketch、psd、Figma 格式都有。

文章來源:優(yōu)設(shè)    作者:UX小學(xué)

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

Vue.js教程-目錄

前端達(dá)人

簡介

  • 本目錄作為Vue教程的首頁,所以會持續(xù)更新。
  • 如果某篇章節(jié)中有錯誤的地方,希望大家能夠指出來,我會更正,私信和評論里說都可以,不懂的地方也可以說,如果我也不會那就請教一下大佬們吧,畢竟我對前端的東西也不是特別了解,多多包涵!嘿嘿。

章節(jié)列表

章節(jié)名稱 地址
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教程-組件化開發(fā) https://coderhqf.blog.csdn.net/article/details/107783664

Vue簡介

  • Vue官網(wǎng)
  • Vue (讀音 /vju?/,類似于 view) 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計(jì)為可以自底向上逐層應(yīng)用。
  • Vue 的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項(xiàng)目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫結(jié)合使用時,Vue 也完全能夠?yàn)閺?fù)雜的單頁應(yīng)用提供驅(qū)動。
  • Vue.js 的目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。

Vue特點(diǎn)

  • 易用:在有HTML CSS JavaScript的基礎(chǔ)上,快速上手。
  • 靈活:簡單小巧的核心,漸進(jìn)式技術(shù)棧,足以應(yīng)付任何規(guī)模的應(yīng)用。
  • 性能:20kb min+gzip 運(yùn)行大小、超快虛擬 DOM 、最省心的優(yōu)化。

Vue中數(shù)據(jù)觀測的實(shí)現(xiàn)

  • Vue.js利用了ES5的Object.defineProperty方法,直接將原生數(shù)據(jù)對象的屬性改造為getter和setter,在這兩個函數(shù)內(nèi)部實(shí)現(xiàn)依賴的收集和觸發(fā),而且完美支持嵌套的對象結(jié)構(gòu)。對于數(shù)組,則通過包裹數(shù)組的可變方法(比如push)來監(jiān)聽數(shù)組的變化。這使得操作Vue.js的數(shù)據(jù)和操作原生對象幾乎沒有差別[注:在添加/刪除屬性,或是修改數(shù)組特定位置元素時,需要調(diào)用特定的函數(shù),如obj.$add(key, value)才能觸發(fā)更新。這是受ES5的語言特性所限。],數(shù)據(jù)操作的邏輯更為清晰流暢,和第三方數(shù)據(jù)同步方案的整合也更為方便。

Vue項(xiàng)目打包

  • 在構(gòu)建大型應(yīng)用時,推薦使用Webpack+vue-loader這個組合以使針對組件的開發(fā)更。
  • 在后面的章節(jié)中會細(xì)說怎么打包并部署到服務(wù)器上,也會講怎么白嫖阿里云(學(xué)生版),好像有大佬寫過這個文章,大家搜一下也行,最重要的還是開發(fā)。

Vue的組件化開發(fā)

  • Vue最主要的是組件化開發(fā),因?yàn)槭菃雾撁?,也就是在一個頁面中渲染出多個頁面的效果,這個特點(diǎn)能夠讓非常多的組件在不同的項(xiàng)目中重復(fù)使用。
  • Vue中的組件基于Web components進(jìn)行了上層功能的實(shí)現(xiàn),例如數(shù)據(jù)綁定、動畫系統(tǒng)等。

Vue與后端的數(shù)據(jù)交互:axios

  • 傳統(tǒng)的一般都用Ajax,但如果請求有先后關(guān)系的話就容易產(chǎn)生回調(diào)地獄,套娃套的吧。
  • Vue2之后就推薦使用axios了,等寫到前后端交互的時候再講這個就行。

相關(guān)說明

  • Vue參考了AngularJS、KnockoutJS、Ractive.js、Rivets.js,可以是把他們的缺點(diǎn)都優(yōu)化成了自己的優(yōu)點(diǎn),參考過程中不但去其糟粕,還加入了自己的特性,但目前也只有國內(nèi)用Vue的比較多,畢竟社區(qū)小,資源少,但以后應(yīng)該會是潮流,因?yàn)殚_發(fā)快好上手。
  • 其實(shí)Vue相對來說是非常好上手的,因?yàn)樗粚W⒂谝晥D層。如果只是要用的話,其實(shí)對原理也不用太糾結(jié),但既然要全棧,何不貫徹到底,我也是在學(xué)習(xí)中,如果想正規(guī)學(xué)習(xí)的話,我比較推薦coderwhy-王紅君老師的課,他講的挺好的,有些原理講的也是很清楚的,渠道嘛,B站大學(xué)、騰訊課堂啥的都有,還有他的微博,大家可以去網(wǎng)上找。
  • 再強(qiáng)調(diào)一遍,如果發(fā)現(xiàn)不對的地方請聯(lián)系我,因?yàn)椴幌胝`人子弟,畢竟這是自己的總結(jié),也不想以后自己還用著錯誤的東西,嘿嘿嘿。。。
  • Vue作為現(xiàn)在國內(nèi)最潮流的前端框架,也逐漸成為后端開發(fā)人員需要學(xué)的新知識了,我看現(xiàn)在很多后端崗位的面試?yán)锒紩岬竭@個前端框架,所以大家學(xué)一下是不虧的。
  • 在CSDN雜志中有一篇文章:Vue.js:輕量的前端組件化方案,如果大家有興趣就看看吧。

版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/weixin_45062103/article/details/107763788

手機(jī)appUI界面設(shè)計(jì)賞析(五)

前端達(dá)人

與傳統(tǒng)PC桌面不同,手機(jī)屏幕的尺寸更加小巧操作,方式也已觸控為主,APP界面設(shè)計(jì)不但要保證APP功能的完整性和合理性,又要保證APP的功能性和實(shí)用性,在保證其擁有流暢的操作感受的同時,滿足人們的審美需求。

接下來為大家介紹幾款手機(jī)appui界面設(shè)計(jì)

點(diǎn)擊查看原圖


   --手機(jī)appUI設(shè)計(jì)--

點(diǎn)擊查看原圖

 --手機(jī)appUI設(shè)計(jì)--

點(diǎn)擊查看原圖

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221704.png

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221707.jpg

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221712.jpg

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221759.png

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221803.jpg

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221808.png

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221813.jpg

 --手機(jī)appUI設(shè)計(jì)--

微信圖片_20200805221823.jpg

 --手機(jī)appUI設(shè)計(jì)--

(以上圖片均來源于網(wǎng)絡(luò))



  藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)



  更多精彩文章:

       手機(jī)appUI界面設(shè)計(jì)賞析(一)

       手機(jī)appUI界面設(shè)計(jì)賞析(二)

       手機(jī)appUI界面設(shè)計(jì)賞析(三)

       手機(jī)appUI界面設(shè)計(jì)賞析(四)




這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

資深UI設(shè)計(jì)者

還記得2019年4月上映的復(fù)仇者聯(lián)盟4么,漫威電影宇宙的第三階段結(jié)束了,電影很精彩,但最令人震撼的是先導(dǎo)版的電影海報(bào)!就是那個「五彩斑斕」的黑~

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

從設(shè)計(jì)上看,海報(bào)的設(shè)計(jì)師是把光運(yùn)用到極限了,通過逆光和環(huán)境塑造出了酷+神秘的視覺感受。光是一切視覺表現(xiàn)的基礎(chǔ),是構(gòu)圖和傳遞調(diào)性的關(guān)鍵,也是視覺表現(xiàn)重要的組成部分。所以今天就和大家聊聊啥樣的光是一個牛X的光以及如何塑造一個合格的光影?

光影的基本原理

常見形式1-聚光

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

△ 圖片來源:小米米家臺燈1S

聚光是最常見光,也是在設(shè)計(jì)中用到最多的光,通常在塑造一個物體的時候就會用的到。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

因?yàn)榫酃獾脑?,場景更像個舞臺,凸顯「主角」的存在。具體的原理可以根據(jù)下圖去理解。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

常見形式2-自然光

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

自然光其實(shí)就是陽光,理論上講其實(shí)光源是太陽也是聚光,但由于光源太過于龐大,無法真正的聚焦,所以就把這種光當(dāng)成一種泛光源就好。在產(chǎn)品設(shè)計(jì)中也會經(jīng)常看到類似的光源出現(xiàn),比如行為召喚按鈕:

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

因?yàn)椴恍枰獜?qiáng)有力的表現(xiàn)和氛圍的營造,所以通常產(chǎn)品設(shè)計(jì)中更需要自然光來作為核心光源,通過泛光源去統(tǒng)一控制產(chǎn)品的光影體系就好(發(fā)布的 Mac OS – big Sur 的整體光源同樣是自然光,下文會講到)。

常見形式3-逆光

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

坦誠的講逆光也是聚光的一種,只不過由于角度特殊,呈現(xiàn)的視覺效果也非常不一樣,所以就單獨(dú)把逆光拿出來說一說。當(dāng)畫面需要逆光來營造氛圍的時候,只需要在固有色上加上黑色蒙板和邊緣的高光就可以大概塑造出一個處于逆光的物體了。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

小米是典型的逆光氛圍營造高手,但萬變不離其宗,依舊可以從海報(bào)里看到相同的方法。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

△ 圖片來源:小米傳播物料

光影的塑造(光影層級)

通常現(xiàn)實(shí)中的光源并非那么理想,光線的復(fù)雜超出肉眼所見。所以我們在繪制的過程需要注意到,可以適當(dāng)?shù)某橄?。舉個例子,自然光是普照的,所以我們抽象為四個小光源平均分布,依次打到物體上:

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

在他們疊加的部分可以清晰的看到,1是最重的,2其次,3再次。按照這個辦法就可以獲得光影的層級關(guān)系,在繪制輕擬態(tài)的圖標(biāo)或者運(yùn)營活動中更加細(xì)膩。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

體積塑造+色彩對光影的影響(反光/對比光)

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

△ 圖片來源:09UI設(shè)計(jì)工作室-陌陌直播禮物設(shè)計(jì)

所有的光影其實(shí)都是幫助主體塑造體積感,一個合格的立體圖形必須具備:高光/過度色/明暗交界線和反光這四個基本屬性。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

然后需要一點(diǎn)超現(xiàn)實(shí)主義的手法,把太陽光過濾下,從「赤橙黃綠青藍(lán)紫」的色調(diào)里提取跟主體和諧的顏色(通常是補(bǔ)色),營造出介于真實(shí)與玄幻之間的美妙效果hiahia~

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

然后再在投影上加一點(diǎn)點(diǎn)色彩傾向,一個完美的黑八就出現(xiàn)啦~按照這種方法,你可以試著去嘗試更多的物體/場景。(下圖是筆者作品「插著紅旗的地球」hiahia)

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

光影/材質(zhì)與產(chǎn)品設(shè)計(jì)中的層級關(guān)系

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

影響主體的除了光影之外就是材質(zhì)了,近年來的三大巨頭apple/Microsoft/Google的設(shè)計(jì)都在材質(zhì)上下足了功夫,蘋果的毛玻璃,微軟的亞克力和谷歌的「紙」。

從趨勢上看,材質(zhì)的引入對產(chǎn)品中拉開層級關(guān)系上有巨大意義,以往的設(shè)計(jì)僅僅是通過光影和焦距來拉開關(guān)系,這兩個維度在少量的疊加界面中還能有效果,但到了復(fù)雜的多窗口互壓互疊里就不是那么奏效了,所以鐵子們要善于運(yùn)用材質(zhì)區(qū)分產(chǎn)品顯示的優(yōu)先級。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

圖標(biāo)與插圖的光影使用技巧

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

△ 圖片來源:Eric Hoffman – Big Sur Mac Icons

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

△ 圖片來源:JIAJIE – WeSing Live gift

圖標(biāo)好壞除了造型之外最重要的就是質(zhì)感了,通常圖標(biāo)也就是4種形式(如下圖),類似蘋果的系統(tǒng)圖標(biāo)和抖音直播間禮物的圖標(biāo)都是最后一種形式。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

但如果僅僅是這樣就太水了,既然都說了是干貨預(yù)警,那就要拿出哥們看家的本領(lǐng)~此圖是大家關(guān)注公號后就會收到的推圖,主體就是一個POI的圖標(biāo)加上微信的對話框和代表干貨的小星星營造出的氛圍。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

刨析下這個圖,三個發(fā)光體和底下的投影,通過上文的講解依次繪制完成~

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

之后就到了amazing的時刻了,打開photoshop找到「濾鏡-模糊畫廊-場景模糊」設(shè)置幾個key-point,調(diào)試模糊值和透明度/亮度,最終完成對光影的塑造。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

借助環(huán)境塑造光影

空氣中的灰塵相信大家都不陌生,這種情況多數(shù)是一束光影從窗戶里射入后,在光的折射下把平時看不到的灰塵統(tǒng)統(tǒng)照了個遍。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

如果你是mac用戶一定熟知keynote里的動畫效果「轟然墜落」,這個效果是在模擬物體振動后彈開周圍灰塵,非常震撼。在PPT的設(shè)計(jì)中你也可以同樣借助光和霧來營造你想要的效果,下圖是我在做工作總結(jié)的時候?yàn)榱送癸@Q4工作采用的辦法。

這樣設(shè)計(jì)光影輕擬物,想不脫穎而出都難!

小結(jié)一下

光影輕擬物在產(chǎn)品設(shè)計(jì)中的應(yīng)用面還是很廣的,比如:圖標(biāo)、數(shù)據(jù)可視化、插圖等等。而在大量扁平設(shè)計(jì)時代適量使用會顯得很出彩,當(dāng)然再好的教程也比不上大家多動手試試練練,所以鐵汁們行動起來咯~

文章來源:優(yōu)設(shè)    作者:Nana的設(shè)計(jì)錦囊

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

日歷

鏈接

個人資料

存檔