首頁

減少認(rèn)知過載獲得更好的用戶體驗

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

好的用戶體驗是不會讓用戶注意到并毫無察覺的一種體驗。表面上看似非常簡單,但實際上設(shè)計師已經(jīng)做出了非常多的設(shè)計思考。用戶越少的去思考界面,用戶就越能專注他們要完成的目標(biāo)。在瀏覽頁面時,用戶的注意力不應(yīng)該停留在界面和設(shè)計上,他們更應(yīng)該關(guān)注的是如何達(dá)成他們的目的。所以作為設(shè)計師的首要工作就是通過事先清除障礙,為用戶提供直達(dá)目標(biāo)的途徑。


“通常,飛速行駛的貨車不可能輕松地停下來。因為運用更多的動能去改變運動狀態(tài)是非常困難的。與其強(qiáng)迫人們從他們的主任務(wù)上轉(zhuǎn)移注意力,不如直接帶他們?nèi)ニ麄兿肴サ牡胤??!?

——Luke Wroblewski,谷歌產(chǎn)品總監(jiān)


換個思路來看。復(fù)雜和混亂的界面會迫使用戶去尋找解決問題的方法,而通常情況下,這些方法并不是一目了然的。用戶會因為過多的選項、界面、導(dǎo)航等感到困惑,用戶可能會在思考過程中感到不知所措。即便是很短暫的停頓,也足以讓用戶離開。

這種過度的思考就被稱為認(rèn)知過載,在這篇文章里,我們將為你解釋如何避免認(rèn)知過載。首先,我們需要明白我們大腦中存在過載風(fēng)險的原因。

Image title

認(rèn)知超負(fù)荷的科學(xué)根源
認(rèn)知過載是指工作記憶中腦力處理的信息總量過多。當(dāng)你的工作記憶接收到的信息超出其可以輕松處理的信息時,就會發(fā)生認(rèn)知過載,從而產(chǎn)生挫敗感。
但這究竟意味著什么?工作記憶到底是什么?針對這些我們又應(yīng)該怎樣進(jìn)行設(shè)計呢?那就讓我們先來了解一下認(rèn)知負(fù)荷理論的起源吧。


JOHN SWELLER和認(rèn)知負(fù)荷理論
雖然對認(rèn)知的研究可以追溯到幾個世紀(jì),但直到20世紀(jì)80年代,澳大利亞教育心理學(xué)家約翰·瑞勒才將這項研究應(yīng)用于教學(xué)設(shè)計當(dāng)中。Sweller試圖為每一種類型的學(xué)習(xí)者找出最適合他們的學(xué)習(xí)方法,讓他們可以記住他們學(xué)到的所有知識。換句話說,怎樣的課程設(shè)計才是最佳的呢?
Sweller在1988年出版了“ 認(rèn)知負(fù)荷理論,學(xué)習(xí)難度和教學(xué)設(shè)計 ”,這使他的研究工作達(dá)到新的高峰,于1994年重新修改并重新發(fā)表。他的研究中運用了數(shù)據(jù)組織結(jié)構(gòu)中的圖表數(shù)據(jù)庫,講述了有效和無效的教學(xué)方法,而他對于工作記憶負(fù)荷極限的研究結(jié)果才是設(shè)計師們找到的最有用內(nèi)容。
Sweller的研究在許多方面擴(kuò)展了George Miller的信息加工理論。George Miller是一位認(rèn)知心理學(xué)家和語言學(xué)家,他在20世紀(jì)50年代測試出短期記憶的極限。Miller的研究在于數(shù)字化設(shè)計,尤其是分塊技術(shù)方面,這將在后面討論。另外,Miller還創(chuàng)作了論文“ The Magical Number Seven, Plus orMinus Two“,這個理論促使許多設(shè)計師將菜單項的數(shù)量限制在5和9之間。
雖然這些理論最初是針對教育領(lǐng)域的,但它們同樣適用于用戶體驗(UX)設(shè)計。


工作記憶
如果你每次打開冰箱,都必須回答一個像謎語一樣的問題,“什么東西小的時候四只腳走路,長大了以后兩只腳,而老了以后有三只腳?”這是一個老段子。但是,根據(jù)認(rèn)知負(fù)荷理論,使用這種讓人無奈的用戶體驗設(shè)計會讓用戶產(chǎn)生挫敗感。

Image title

要理解認(rèn)知負(fù)荷理論,你必須要了解什么是工作記憶,大腦在短時間內(nèi)用于完成任務(wù)的過程便是工作記憶。工作記憶必須借助外部刺激和短期記憶,并在需要時從長期記憶中抽取。通俗一點說,工作記憶相當(dāng)于計算機(jī)內(nèi)存,而長期記憶則相當(dāng)于硬盤驅(qū)動器。
工作記憶和短期記憶通??梢曰Q使用,但它們略有不同。工作記憶是處理信息的過程,而短期記憶更像是一個信息的便簽本,它雖然重要,但卻沒有長期記憶重要。
讓我們看看這篇文章是如何解釋這些差異的。在你閱讀的時候,你可能會遇到一個用藍(lán)色字體書寫的陌生概念。你的工作記憶需要知道藍(lán)色文本是什么意思,才能夠理解文章更深層的含義。你的長期記憶知道藍(lán)色文本表示鏈接,因此你的工作記憶知道點擊該鏈可以獲得更多信息。與此同時,你的短期記憶會記住你在文章中的位置,這樣當(dāng)你從外部頁面返回時你不會迷失,但到了第二天早上,該位置就會被遺忘掉。

Image title

設(shè)計中的應(yīng)用
Steve Krug(史蒂夫·克魯格)是一位很有影響力的作家,他在網(wǎng)頁設(shè)計中極力推崇認(rèn)知負(fù)荷理論。他的書《Don’t make me think》被許多設(shè)計師認(rèn)為是有巨大影響力的著作。
書中記錄了許多寶貴的經(jīng)驗,下面就列舉一些的:
1、每一個頁面都要清晰明了。
2、用戶傾向于“滿意” - 也就是說,采取一個最簡單的解決方案來解決他們的問題,而不是最好的解決方案。此外,作為習(xí)慣的生物,用戶將一遍又一遍地使用相同的方法解決問題,而不會刻意尋找一個更好的選擇。
3、當(dāng)新用戶可以熟練使用該系統(tǒng)來實現(xiàn)他們的目標(biāo)時,系統(tǒng)的可用性就足夠了。
4、用戶使用網(wǎng)絡(luò)的絕大部分是想要節(jié)省時間。因此,用戶的行為通常會像鯊魚一樣“保持移動,否則就會死亡”。
5、后退按鈕是Web瀏覽器最常用的功能。
6、屏幕上顯示的主頁按鈕即使從來不被用戶使用,但也能讓用戶感到放心。
總之,用戶在瀏覽網(wǎng)站過程中哪怕是一瞬間的思考,也會對他們的工作記憶造成負(fù)擔(dān)。例如 “這個可以點擊嗎?“首頁按鈕在哪兒?”和“我怎么保存?”等等問題,都會不同程度破壞用戶體驗。


認(rèn)知超負(fù)荷最常見的原因
許多設(shè)計元素都有可能對用戶的大腦造成超負(fù)荷,外界環(huán)境中會有更多的因素它們超出了設(shè)計師的控制范圍。例如:一個用戶瀏覽網(wǎng)站的同時會擔(dān)心第二天的工作報告,或者被窗戶外裝修的噪音所打擾,此時,無論你的網(wǎng)站設(shè)計多么簡單,這些都會耗盡他們的工作記憶。
我們要知道每個用戶的工作記憶能力都不同。隨性的用戶比那些對每一件小事都無比關(guān)注的用戶更能專注于你的網(wǎng)站。不經(jīng)常上網(wǎng)的用戶往往比經(jīng)驗豐富的網(wǎng)絡(luò)用戶思考的更多。
雖然我們無法量化所有的認(rèn)知過載,但我們可以盡量的去避免他的產(chǎn)生,下面,我們對網(wǎng)頁設(shè)計中最常見的類型以及避免它們的最佳方法進(jìn)行了分類說明。
1.不必要的操作
用戶的每一步操作都會增加他們的認(rèn)知負(fù)擔(dān)。過多不必要的操作會打斷用戶的思路或者會讓用戶抓狂。因為用戶的工作記憶都集中在完成特定的目標(biāo)上,所以多余的操作將迫使用戶投入更多的精力,這樣就需要更多的工作記憶才能完成任務(wù),所以,那些不必要的操作步驟很考驗用戶的耐心。
速度和節(jié)奏是讓認(rèn)知負(fù)荷最小化的基本因素。用戶希望以輕快,目的性很強(qiáng)的步驟來完成任務(wù),所以應(yīng)該提前消除一切延遲。
Image title

用戶希望在他們提交郵箱地址之前就知道他們將要進(jìn)入什么網(wǎng)站,但Touch of Modern卻要求用戶在使用之前必須進(jìn)行注冊!這個強(qiáng)制而又多余的行為將會嚇跑很多的潛在用戶。
解決方案
下面這個方法,可以幫助我們找到不必要的操作有哪些:列出用戶要完成任務(wù)必須要去做的步驟。例如發(fā)送電子郵件:
1、點擊電子郵件圖標(biāo)。
2、點擊“發(fā)送到”輸入框。
3、輸入電子郵件地址。
4、點擊“主題”輸入框。
5、等等....
現(xiàn)在,重新審視列表并且找出可刪減的操作步驟,想到什么了嗎?你可以通過將光標(biāo)一開始就自動定位在“發(fā)送到”字段就可以刪除步驟2.這將減少用戶的操作,雖然很微小,但你消除的每一步對于用戶來說都是友好的。

Image title

我們來看看谷歌的主頁。光標(biāo)一開始就在搜索輸入框當(dāng)中,因此用戶所要做的就是開始輸入文字。這些微小的交互提升了整體的用戶體驗,所以不要忽視它們。
2.過度刺激
雜亂無章的頁面會分散用戶的注意力,使用戶無法專注他們想要完成的目標(biāo)。就像有好幾個人同時與你交談時你會很難集中注意力,當(dāng)頁面上太多的圖片、動畫、圖標(biāo)、廣告、文本類型和鮮艷的顏色奪取你的注意時,就會很難集中注意力。
記住,每個人的工作記憶在完成目標(biāo)的過程中,會因為外界的刺激對每一步工作重新排序。每一次分心,尤其是視覺上的強(qiáng)烈刺激,都需要消耗用戶的一部分注意力。

Image title

LINGsCARS就是個極端的例子,你可以看到有強(qiáng)烈對比的顏色和絢麗的動效沖擊著人們的感官。在屏幕上,即便在兩個不同位置同時進(jìn)行的動效依然會對用戶造成過度刺激。
解決方法
首先,減少一切不必要的元素。僅保留必要的內(nèi)容通常是最佳的選擇,減少加載時間并簡化體驗。用戶更喜歡視覺簡單的網(wǎng)站,而不是視覺上復(fù)雜的網(wǎng)站。
你還可以進(jìn)行內(nèi)容區(qū)分以達(dá)到平衡的效果。太多相同的內(nèi)容(比如文字或圖像)會讓用戶感到厭煩。所以,視覺內(nèi)容要進(jìn)行合理的組合,圖像、視頻、信息圖表等,能夠使頁面和諧,并便于用戶理解。
影視網(wǎng)站IMDb本可以在很大程度上輕松地只依靠圖片進(jìn)行排版,但它反而運用同量的文字內(nèi)容來平衡網(wǎng)站頁面。

Image title


在抽取出一個頁面上必須要展示的元素之后,你應(yīng)該采用一種讓用戶立即能夠理解的方式組織這些元素。對稱或者不對稱的信息布局顯示都可以很快的被用戶所理解,也就是說,用一種方式,盡可能的減少大腦的工作。這樣不僅對稱和不對稱都能讓眼睛感覺很舒適,而這樣的結(jié)構(gòu)也能讓界面交互更容易。
下面來看一下Groupon是如何布置頁面的吧。左中是文本類的垂直菜單,右中是一個有特色的凍酸奶交易文本描述,插在文本中間的照片和色塊的使用,分分鐘創(chuàng)造出一個讓人喜愛的沙漏結(jié)構(gòu)。
下面來看看Groupon是如何將它的垂直菜單(中間偏左)和描述凍酸奶的文字(中間偏右)進(jìn)行布局的吧。大圖居中被文字包圍著,這樣就打造了一個舒適自然的沙漏形狀。

Image title

對稱不僅僅是在屏幕的兩側(cè)應(yīng)用相同的布局,它是視覺重心和視覺方向的平衡。通過這種方式,非對稱頁面也能看起來很有組織性,如下圖的OTHR所示。

Image title

將你的頁面內(nèi)容精減到只包含簡單的和非競爭性的元素,這只是完成了預(yù)防過度刺激工作的一半。。不要忘記要以簡單的布局呈現(xiàn)這些元素。
3、太多選項(希克定律)
這有點自相矛盾:用戶需要更多的選擇,但是往往太多的選擇會使他們的大腦超負(fù)荷。


席克定律(選擇困難癥)為我們揭示出了一種現(xiàn)象:用戶擁有的選擇越多,他們做出決定的時間就越長。


作為設(shè)計師要去理解庫克定律,可以把每個選項看作是明亮的閃光燈,如下所示,太多的閃光燈會過度刺激用戶。

Image title

甚至像Rakuten這樣的知名網(wǎng)站也會犯類似的錯誤,因為他們沒有真正的理解這個設(shè)計原則。給用戶需要的而不是給他們認(rèn)為他們需要的。
解決方案
假如你已經(jīng)解決了不必要的和多余的選項,你可以將他們分別放入不同的組進(jìn)行分類,你可以在百貨商店的網(wǎng)站上看到很多例子,這些網(wǎng)站擁有廣泛的產(chǎn)品選擇。
它不一定是太多的選擇, 只是一次有太多的選擇。如果你可以用隱藏菜單,抽屜和拉出其中的一種方式隱藏一些選項,那么你將獲得兩全其美的效果,這些超級菜單雖然為用戶提供了許多選項,但一定程度上不會給用戶帶來很大的負(fù)擔(dān)。

Image title

但是,隱藏式的導(dǎo)航欄不利于發(fā)現(xiàn),因此電子商務(wù)和新聞等行業(yè)的設(shè)計人員應(yīng)該注意。你可以通過放置其他類似產(chǎn)品的鏈接使缺點最小化(比方說亞馬遜的“相關(guān)購買”)從而最大限度地減少隱藏菜單的缺點?;蛘吣憧梢詺w納導(dǎo)航菜單的類別,將它們精簡為單行導(dǎo)航(如Apple和CNN那樣)。

Image title

你還需要注意應(yīng)該如何組織整個網(wǎng)站的導(dǎo)航。許多與庫克定律有關(guān)的問題可以通過管理信息架構(gòu)(IA)來處理,我們將在下面的“難以查找的頁面和功能”部分中討論。
4.太多內(nèi)容
就像過度刺激和選項過多的問題一樣,提供過多的內(nèi)容會將用戶的工作記憶拉向不同的方向。
顯然,你希望展現(xiàn)的只是重要的內(nèi)容,但對于一些網(wǎng)站來說,一切都是重要的,如果你的網(wǎng)站也有非常多的內(nèi)容,為了避免讓用戶產(chǎn)生困惑,應(yīng)該對內(nèi)容信息進(jìn)行和里的組織規(guī)劃。

Image title

Arngren的問題并不是它展示了很多的產(chǎn)品,而是它同時展示了太多的產(chǎn)品。在組織結(jié)構(gòu)上的調(diào)整將會給網(wǎng)站帶來更好的體驗。
解決方案
如上所述,George Miller的解決策略是“分塊”,將需要展示的大量內(nèi)容以可管理的方式組合起來,以便于記憶,電話號碼分為國家代碼,區(qū)號,一組三位數(shù)和兩組四位數(shù)字便于記憶,而一連串的11個數(shù)字會很難被記住。
你想在商店主頁上放大量產(chǎn)品的圖片嗎?比起將它們?nèi)苛_列出來,不如通過他們的類型將他們分組羅列。Etsy通過根據(jù)不同的店鋪將產(chǎn)品進(jìn)行分組展示。

Image title

還有文本組塊,文本組塊包括簡短的自然段,合理利用標(biāo)題和副標(biāo)題以及足夠的留白。
對于需要大量數(shù)據(jù)的長表單字段,可以嘗試采用多步驟表單。長表單可能會令人生畏,有時會導(dǎo)致用戶流失。你可以將表單的信息分在不同的頁面里,減少信息過量給用戶帶來的影響。記得一定要有一個進(jìn)度標(biāo)記來讓用戶知道還剩下多少頁。(可以總結(jié)為復(fù)雜的頁面簡單化)

Image title

購買機(jī)票總是涉及填寫大量的信息,其中沒有一項是多余的。Virgin Atlantic通過將其分解在多個單頁面上填寫來改善其繁瑣的體驗:選擇航班,填寫乘客信息,輸入付款詳細(xì)信息等。將所有這些信息放在一個長頁面上會對用戶造成負(fù)擔(dān),也有可能會放棄購買。
5.模棱兩可的界面
認(rèn)知超負(fù)荷的罪魁禍?zhǔn)紫染褪怯脩艚缑婊靵y。永遠(yuǎn)不要讓用戶花費大量的時間來弄清楚他們?nèi)绾尾拍芡瓿上胍哪繕?biāo),以及花費時間來弄清楚圖標(biāo)的含義是什么。

Image title

并非所有用戶都是經(jīng)驗豐富的,從而可以理解SpeedCrunch這種含義模糊的圖標(biāo)。即使他們能夠識別代表Windows系統(tǒng)和Mac OS X系統(tǒng)的符號,那么位于右下角的那兩個圖標(biāo)也會讓用戶迷茫。
解決方案
使用用戶已經(jīng)熟知的視覺提示。用戶通常會用他所熟悉的符號來進(jìn)行操作,即便是在以前從未使用過的網(wǎng)站上也是這樣。如果你覺得沒有新意,可以融合品牌特征巧妙的結(jié)合成為用戶所熟悉的形式。Home Depot雖然運用了較為普遍的圖標(biāo),但同時也賦予了他們品牌獨有的橙色。

Image title

標(biāo)準(zhǔn)標(biāo)簽(如“聯(lián)系人”和“提交”)的按鈕比非傳統(tǒng)標(biāo)簽(如“地址”或“開始”)更容易識別。通常已知的標(biāo)簽可以提高用戶的瀏覽體驗,而不常見的標(biāo)簽會讓用戶暫停以了解按鈕的功能。不要為了個性化而喪失了識別性。
另外,你如果真的需要一個從未見過的圖標(biāo)該怎么辦呢?如果這樣,可以運用現(xiàn)實生活中的場景展示來讓圖標(biāo)進(jìn)行自我解釋,這種做法是連接現(xiàn)實和虛擬的橋梁。例如:早期的互聯(lián)網(wǎng)先驅(qū)選擇了一個信封來代表電子郵件,因為信封是郵件系統(tǒng)的明顯標(biāo)志。
此外,要避免含義模糊的圖標(biāo),特別是可能還會被誤認(rèn)為是其他含義的圖標(biāo),就像下列Issuu的圖標(biāo),有些是被人熟知的,但有一些卻不是。如果用戶必須通過點擊這個圖標(biāo)來發(fā)現(xiàn)它的功能,這就會中斷他們的操作進(jìn)程。

Image title

任何一個表意不清的圖標(biāo)都應(yīng)該附帶說明,告訴用戶怎樣操作。新的并且不常見的用戶界面,就需要更多的分步教程。例如,Slack就給出了一個完整的視頻引導(dǎo)來說明界面的操作流程。

Image title

6.難以查找的頁面和功能
即使用戶已經(jīng)擁有他們所需要的一切,但他們可能還是不知道如何去尋找它。這樣就會讓用戶費盡腦力去尋找他們所需要的。作為用戶體驗中不可或缺的元素,導(dǎo)航應(yīng)該放在明顯的地方,給用戶信心去任意瀏覽網(wǎng)站而不會迷失。

Image title

如果你覺得漢堡包圖標(biāo)不好,那可以在看看Mojo Yogurt,它會要求你將鼠標(biāo)懸停在左上角的徽標(biāo)上以顯示導(dǎo)航菜單。

Image title

雖然圍繞著Logo有個小的動效,但對于整個屏幕的顏色和動效來說,它并不夠明顯。
解決方案
根據(jù)用戶的偏好理順你的信息架構(gòu)。你的目標(biāo)用戶群可能并不認(rèn)可你的做法。因此,要想他們學(xué)習(xí)如何組織網(wǎng)站,卡片分類試驗會告訴你你的用戶將會如何對頁面和話題進(jìn)行分類。

Image title

如果你還希望通過組合頁面和菜單項來消除多余的頁面。設(shè)計工作室Waaark通過將其工作室的簡介,團(tuán)隊成員簡介和聯(lián)系信息這三個頁面合并到一個頁面來簡化他們的導(dǎo)航。

Image title

如果某些功能或特征比其他功能或特征更重要,可以運用視覺手段來吸引他們的注意,增加大小,添加動畫以及使用對比色以此來吸引用戶的眼球。

Image title

PayPal期望有更多的老用戶而不是新用戶,并通過設(shè)置登錄按鈕與吸引注意力的白色塊背景來迎合前者。
7.內(nèi)部不一致
假設(shè)網(wǎng)站的主頁使用標(biāo)準(zhǔn)的藍(lán)色和帶下劃線的文本來表示鏈接,但另一個頁面僅使用藍(lán)色而沒有下劃線。當(dāng)用戶瀏覽其他頁面時就會停下來去想,“它沒有下劃線,這還是個鏈接么?”他們甚至可能不會再去關(guān)心鏈接,而會被其他頁面的不統(tǒng)一分散注意力從而影響整體的用戶體驗。
要記住,最好的用戶體驗是不會被用戶所察覺的,而像上面這樣通常都會被注意到。
總結(jié)
1、認(rèn)知過載是影響工作記憶的因素。當(dāng)過多的信息阻礙決策和整體經(jīng)驗時,就會發(fā)生認(rèn)知過載。
2、使用不同的內(nèi)容類型和結(jié)構(gòu)化頁面組合,可以避免視覺混亂。
3、隱藏式菜單可以幫助用戶一次管理可用選項的數(shù)量,但降低了可發(fā)現(xiàn)性。
4、“分塊”和“步驟”等的方式可以防止認(rèn)知過載。
5、UI元素和圖標(biāo)應(yīng)該基于用戶現(xiàn)有的認(rèn)知上,這樣他們就不需要過多的思考,新的獨特的功能要加上解釋說明。
6、圍繞用戶的實際思考方式構(gòu)建你的信息架構(gòu)??ㄆ诸惖瓤捎眯詼y試可以為你的目標(biāo)群體揭示最直觀的導(dǎo)航方案。
7、視覺和功能的不一致,以及打字錯誤和語法錯誤,都會分散用戶的注意力。
8、盡可能減少冗余。另外,請留意如何最大限度地減少用戶操作步驟量和他們必須花費的精力。


文章來源:UI中國

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

字面量方式和new方式的區(qū)別及用法

seo達(dá)人

一 - 字面量方式和new方式

?每次創(chuàng)建數(shù)組或?qū)ο蟮臅r候,都能用以下兩種方法創(chuàng)建:咦?有什么區(qū)別呢?還有哪些可以有這兩種方法呢?我到底用哪一種呢?



var arr = [];//字面量方法創(chuàng)建數(shù)組

var arr = new Array();//實例化構(gòu)造函數(shù)方法創(chuàng)建數(shù)組



var obj = {};//字面量方法創(chuàng)建對象

var obj = new Object();//實例化構(gòu)造函數(shù)方法創(chuàng)建對象



二 - 哪些對象可以new?

?只要存在構(gòu)造函數(shù)的都可以new出來。



var num = new Number();

var boo = new Boolean(); 

var str = new String(); 

var arr = new Array(); 

var obj = new Object(); 

var fn = new Function();

var reg = new RegExp();

var date = new Date();



基本上來說 js中對象,除了null ,undefined,其他的都是可以用new出來的。



三 - 字面量是什么?

字面量表示如何表達(dá)這個值,一般除去表達(dá)式,給變量賦值時,等號右邊都可以認(rèn)為是字面量。



JavaScript支持字面量,允許使用一種簡潔而可讀的記法來創(chuàng)建對象、數(shù)組



字面量分為:字符串字面量(string literal )、數(shù)組字面量(array literal)和對象字面量(object literal),另外還有函數(shù)字面量(function literal)等等。



var num = 1;

var boo = true;

var str = "a";

var arr = [];

var obj = {};

var fn = function(){};

var reg = /\s/g;



四 - 兩種的區(qū)別

字面量語法簡單,直接,優(yōu)雅

也沒有必要去使用new去調(diào)用構(gòu)造方法,減少代碼,減少代碼運算量。

那new這個操作符到底做了什么?

var arr = new Array();

/

new:

       1:var obj = {};

       2:obj.proto = Array.prototype;

       3:Array.call(obj);

/



五 - 使用哪一種?

字面量比new

比如:{}是字面量,可以立即求值



而new Object()本質(zhì)上是方法(只不過這個方法是內(nèi)置的)調(diào)用, 既然是方法調(diào)用,就涉及到在proto鏈中遍歷該方法,當(dāng)找到該方法后,又會生產(chǎn)方法調(diào)用必須的堆棧信息,方法調(diào)用結(jié)束后,還要釋放該堆棧。

————————————————


JS實現(xiàn)xml與json互轉(zhuǎn)且基本保持原樣

seo達(dá)人



如果非要代碼實現(xiàn)的話,github上一個不錯的js庫(X2JS):https://github.com/abdolence/x2js

自己寫了demo測試了一下:



<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

</body>

<script src="js/xml2json.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript">

var xmlText =

'<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="220" y="90" width="120" height="80" as="geometry"/></mxCell><mxCell id="3" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1"><mxGeometry x="410" y="110" width="80" height="80" as="geometry"/></mxCell></root></mxGraphModel>';

console.log("原始數(shù)據(jù)xml:"+xmlText);

var x2js = new X2JS();

var jsonObj = x2js.xml_str2json( xmlText );

console.log(jsonObj);

var xmlAsStr = x2js.json2xml_str( jsonObj );

console.log(xmlAsStr);

</script>

</html>

效果如下:







基本能還原,只是""變成了'',這個應(yīng)該問題不大的。






關(guān)于「撤銷」設(shè)計

資深UI設(shè)計者

關(guān)于「撤銷」有很多設(shè)計細(xì)節(jié)可以講,所以我花了兩周時間,將其濃縮成 3000 字,幫助各位產(chǎn)品設(shè)計師更好理解撤銷的設(shè)計細(xì)節(jié)。

撤銷的目的是幫助用戶取消當(dāng)前的操作行為。

撤銷可以對用戶使用產(chǎn)品起到一種安全保障作用,讓用戶在界面中自由地探索而無需擔(dān)心操作所可能導(dǎo)致的嚴(yán)重后果。

或者用戶刪除了一個視頻,撤銷可以幫助用戶恢復(fù)他所刪除的內(nèi)容;以及用戶進(jìn)行了一步操作,覺得不太好,就通過撤銷來回退到上一步操作。

與之對應(yīng)的叫「重做」,就是當(dāng)用戶撤銷了當(dāng)前的操作,但是想了想,還是行進(jìn)到剛才已經(jīng)操作的步驟好了。既給了用戶安全感,還給了用戶反悔的余地。

類似于下象棋的時候,你覺得這一步走得不好,所以悔棋了,雖然對家沒說什么,但是你心里又覺得過意不去,畢竟落子無悔真君子,所以你又把棋子放回去了(真是不怎么恰當(dāng)?shù)谋扔髂兀?

這樣做的目的是提升用戶使用產(chǎn)品的信心,增強(qiáng)對產(chǎn)品的控制感;鼓勵用戶放心地探索,快速建立起自己熟悉的操作路徑。

所以關(guān)于撤銷,我們可以從下面幾點來聊聊:

  • 依次序撤銷
  • 選擇性撤銷
  • 撤銷在界面中的運用
  • 與撤銷沖突的元素

依次序撤銷

它的意思是,依次撤銷之前的操作。

在尼爾森可用性原則里,就有一條類似的原則存在,即 User control and freedom(允許用戶自由操控)。

很多人把這條原則解讀為「撤銷原則」,本質(zhì)上是沒什么問題的,因為撤銷確實需要讓用戶自由操控。但是早期的撤銷,并不「自由」,而僅僅只是讓用戶在一定范圍內(nèi)「可操控」。

比如早期在一些產(chǎn)品里,執(zhí)行多步操作,但往往只能撤銷一次,要想繼續(xù)撤銷是不被允許的,所以它的操控自由度就很低。那時候如果把這條原則解讀為「撤銷原則」,顯然是不合理的。

于是,后來逐漸延伸出多次撤銷的功能。

我記得最早使用 PS 的時候,在 PS 里面就有關(guān)于撤銷次數(shù)的范圍設(shè)定,但是我忘了具體范圍的上限與下限是多少了。

使用的方式是,比如我設(shè)置參數(shù)為 10,那么之后我的撤銷也只能操作 10 次,要想繼續(xù)撤銷,就會告知無法繼續(xù)了。

現(xiàn)在的很多工具產(chǎn)品應(yīng)該是沒有這些限制了,比如 Sketch,Word 都是可以無限次撤銷直至最初始狀態(tài)或剛打開文件的狀態(tài)。

相對早期撤銷的使用邏輯,后來可多次撤銷的操作在自由度上,確實是好了那么一些。

它就是在「單次撤銷」的基礎(chǔ)上,給了用戶「多次撤銷」的機(jī)會,并讓用戶回到自己滿意的位置。

但是這里的撤銷,它還不夠自由,因為它是「依次撤銷」—— 每一步撤銷用戶都得經(jīng)歷。

選擇性撤銷

當(dāng)撤銷隨著用戶場景的變化而進(jìn)化之后,才真正具備了比較自由的操控方式。

讓撤銷具備「選擇屬性」,必須與另一個元素做一個結(jié)合,那就是「歷史記錄」。

繼續(xù)拿 PS 舉例。

大家看到上面這張圖,當(dāng)你在 PS 的畫板里完成了一系列操作之后,發(fā)現(xiàn)后面有一些東西做得不是很好,想回去重做,但是依次撤銷又覺得不好把控,于是就通過操作歷史,來選擇具體回退到哪一步。

相比于依次序撤銷,選擇性撤銷的自由度更高,也更符合其對尼爾森可用性第三條原則的解讀。

或者再通俗一點的例子,瀏覽器。

假設(shè)這時候你打開了 5 個網(wǎng)頁,關(guān)掉了其中 3 個,但是突然想起第 1 個關(guān)掉的網(wǎng)頁還有值得收藏的內(nèi)容,于是依次撤銷 3 次,才打開第 1 個關(guān)掉的頁面。

而現(xiàn)在有網(wǎng)頁歷史記錄,就可以直接幫你打開之前關(guān)閉掉的所有網(wǎng)頁中的其中一個。

解決了用戶每一步都要經(jīng)歷的問題。

當(dāng)「撤銷」與「歷史記錄」結(jié)合之后,「選擇性撤銷」的出現(xiàn)還能解決掉「依次序撤銷」的一個關(guān)鍵問題:撤銷重做之后,無法復(fù)原。

通俗點講,就是當(dāng)用戶撤銷到之前的操作,進(jìn)行了新的操作行為,那么原來舊的那條線路就被廢棄了。看圖:

當(dāng)用戶操作到第 5 步,然后撤銷至第 3 步,再執(zhí)行一次新的操作,那么步驟 4 與步驟 5 就會被廢棄。

大家知道很多設(shè)計師都會做版本記錄,因為 PS 的歷史記錄雖然在撤銷操作上方便了很多,但無法復(fù)原之前的操作邏輯依舊不能滿足一些設(shè)計師的訴求。

畢竟不廢棄的話,撤銷操作的邏輯就會很復(fù)雜;且通?!高x擇性撤銷」伴隨解釋,說明用戶清楚知道自己當(dāng)前行為會造成何種后果。但它并不能解決用戶操作過程中實際存在的這類問題。

而「選擇性撤銷」的「版本記錄」可以解決這個問題,來看下面這個例子。

結(jié)合歷史/版本記錄,比如用 Notion 或石墨寫了一篇文章,它們都會有版本記錄,過程中會根據(jù)時間維度與內(nèi)容變更維度來判斷是否進(jìn)行保存,那么當(dāng)用戶想回滾到之前的那段內(nèi)容,只要對這些版本進(jìn)行點擊查看,然后選擇具體撤回到哪一步即可。

比如我今天(2019.11.05)早上花了半小時最后對文章做了一次整理,添加了圖片,它就會記錄其中的操作變化,且可進(jìn)行選擇。這里無論如何撤至哪一步,其它內(nèi)容都會有留存,不會消失。

也許這已經(jīng)不是通常意義上的撤銷,但它確實是撤銷的升級版。

這樣看起來是不是自由操控度要高很多呢?

到這里,我只是講了「撤銷」的特性,下面來聊下它在界面設(shè)計中是如何應(yīng)用的。

撤銷在界面中的運用

我們現(xiàn)在在很多產(chǎn)品里都能看到撤銷,在網(wǎng)頁里與移動 App 中,它的使用形式雖然多樣,但本質(zhì)上并沒什么區(qū)別。

大多就是單次撤銷,因為用不到多次撤銷,多次撤銷更多是在工具里被使用。

比如油管的撤銷使用:

當(dāng)用戶對一個視頻進(jìn)行「不感興趣」的操作時,視頻內(nèi)容會變成右邊這樣,可撤銷。這個內(nèi)容會一直存在直到用戶刷新頁面時才會消失。

類似的還有淘寶網(wǎng)頁端的購物車,當(dāng)刪除添加的任一商品后,其也會在附近位置出現(xiàn)可撤銷的操作。

在網(wǎng)頁產(chǎn)品中,撤銷的運用大多是這樣的。

我們再來看移動端產(chǎn)品對于撤銷的應(yīng)用。

在 iOS 中比較常見的是微信的搖一搖手機(jī)撤銷正在鍵入的內(nèi)容:

這類撤銷較為被動,經(jīng)常是在無意間觸發(fā),所以不是我們主要要聊的。

而有一類產(chǎn)品,撤銷會以 Snackbars 的形式出現(xiàn),如圖:

當(dāng)這類郵箱產(chǎn)品,刪除了某封郵件后,在底部就會出現(xiàn)這樣的提示,告知用戶可撤銷上一步行為。

更多的還是工具類產(chǎn)品,比如修圖類產(chǎn)品 Snapseed:

它有單次撤銷,也可以重做,還能多次撤銷,多次撤銷就是點擊「查看修改內(nèi)容」之后,右圖出現(xiàn)的樣子,它會把所有步驟都呈現(xiàn)出來,給予用戶選擇具體撤銷至哪一步。

其實更多的也就是這樣了,但是,為什么呢?為什么在非工具類產(chǎn)品里撤銷很少見呢?難道用戶從來不會誤操作或操作之后反悔?

下面一節(jié)來解答。

與撤銷沖突的元素

先放結(jié)論:當(dāng)某個功能具備撤銷屬性時,切勿再使用二次確認(rèn)對話框,反之同樣成立。

撤銷與二次確認(rèn),是兩種東西,雖然有時候解決的是同一個問題,但是它們的屬性是完全不同的。

舉個例子:

上面這張圖,左邊是在執(zhí)行操作前彈出的確認(rèn)框,右邊是執(zhí)行操作后彈出的提示框。

二者的區(qū)別很明顯,二次確認(rèn)的刪除提示框更具警示效果,后者作為提示,較為弱化,且通常是在用戶操作完成后彈出。對于用戶來說,在非工具類產(chǎn)品中,前者更好的抑制了用戶的沖動行為或誤操作行為。后者作為提示類控件,不具備警示效果。

所以它們不應(yīng)該同時出現(xiàn),且它們雖然是解決同一個問題,但是是完全不同的情況。

于是,在大多數(shù)產(chǎn)品中我們很少看到撤銷的使用,因為大部分需嚴(yán)謹(jǐn)?shù)牟僮鞫紩卸未_認(rèn),并不嚴(yán)重的操作也就不需要任何提示。即使是上述提到的郵箱刪除,沒有二次確認(rèn)也是因為它有撤銷作為提示且還有回收站允許用戶檢查確認(rèn)。

所以,除非是場景與之密切相關(guān)的,比如社交產(chǎn)品內(nèi)容發(fā)送后的撤回功能。

微信早期的撤回,只是撤銷,它并不具備「重做」屬性,現(xiàn)在撤回,內(nèi)容會重新出現(xiàn)在輸入框讓用戶重新編輯。

它們之間的差異是:它并不會產(chǎn)生嚴(yán)重后果,但確實會產(chǎn)生小問題。比如誤操作發(fā)出信息,或發(fā)出后發(fā)現(xiàn)話術(shù)并不嚴(yán)謹(jǐn)。

所以這一段內(nèi)容只是想告訴各位:二次確認(rèn)操作與撤銷操作是兩種不同的東西,雖然看起來是解決同一個問題,但它們的差異也是非常明顯的。必須謹(jǐn)記。

另外還有個提示:心細(xì)的同學(xué)會注意到文章里或其他產(chǎn)品里出現(xiàn)的「撤銷」通常也會寫成「撤消」。在別的領(lǐng)域里這是兩種不同的內(nèi)容,但在產(chǎn)品設(shè)計領(lǐng)域里,目前并沒有對這兩者做明確的區(qū)分,所以暫時不用過于糾結(jié)。

總結(jié)

這篇文章講了很多內(nèi)容,我在這里梳理下:

  • 撤銷分為依次序撤銷與選擇性撤銷;
  • 依次序撤銷有單次撤銷與多次撤銷,以 PS 為例;
  • 選擇性撤銷大多在工具類產(chǎn)品里被使用,它與歷史記錄結(jié)合,解決了依次序多次撤銷部分內(nèi)容被覆蓋的問題;
  • 在非工具類產(chǎn)品里,被使用更多的是單次撤銷,是因為場景限制;
  • 撤銷與二次確認(rèn)不可同時出現(xiàn),它們看起來是解決同個問題,但之間存在較大差異。

所以當(dāng)你設(shè)計的產(chǎn)品要用到撤銷時,也要注意這些細(xì)節(jié)問題。

這就是本篇文章的所有內(nèi)容了。其實這篇文章里包含的內(nèi)容有很多,而且有很多爭議點我都沒放出來,直接一筆帶過給出正確結(jié)論了。寫這種大部頭文章太累,要思考的點很多,需要幫助讀者從多視角排雷,很可能導(dǎo)致初學(xué)者在讀文章過程中出現(xiàn)閱讀吃力的問題。所以之后還是會挑一個點來寫吧。

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

DataGridView(VS中表格)刪除和刷新

seo達(dá)人

功能描述:右擊表格中對應(yīng)的行,進(jìn)行刪除或者刷新的操作。

先往DataGridView上拖一個ContextMenuStrip控件





在下面分別輸入刪除與刷新





雙擊刪除,輸入代碼:



  private void 刪除ToolStripMenuItem_Click_1(object sender, EventArgs e)

        {

            try

            {

                DialogResult dr = MessageBox.Show("確定刪除嗎?", "提示", MessageBoxButtons.OKCancel);

                if (dr == DialogResult.OK)

                {

                    //獲取選中行的數(shù)據(jù)

                    Facade.FoodMenuCateFa?ade fa?ade = new Facade.FoodMenuCateFa?ade();

                    Entity.T_FoodMenuCate t_Food = new Entity.T_FoodMenuCate();

                    t_Food.CateName = dataFood.CurrentRow.Cells[1].Value.ToString();

                    int list1 = fa?ade.DeleteFoodMenu(t_Food);



                    frmTips f = frmTips.GetInstance("刪除完成");

                    f.Show();

                }



            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

        }



雙擊刷新,輸入代碼:

        private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)

        {//通過走七層查詢出數(shù)據(jù)庫中新的內(nèi)容:

            Facade.FoodMenuCateFa?ade fa?ade = new Facade.FoodMenuCateFa?ade();

            Entity.T_FoodMenuCate t_Food = new Entity.T_FoodMenuCate();

            List<Entity.T_FoodMenuCate> list = fa?ade.SelectFoodMenu(t_Food);

            //把值賦給表格

            dataFood.DataSource = list;

        }


關(guān)于異常狀態(tài)的設(shè)計總結(jié)

資深UI設(shè)計者

本文對幾種常見的異常狀態(tài)進(jìn)行設(shè)計總結(jié),其中介紹了不同異常狀態(tài)的表現(xiàn)形式以及我們應(yīng)展現(xiàn)的設(shè)計狀態(tài)與規(guī)范。

異常狀態(tài)多在特殊場景下出現(xiàn),比如服務(wù)器異常、網(wǎng)絡(luò)異常等,因為異常狀態(tài)出現(xiàn)的概率是較低的,所以異常狀態(tài)也常常會被忽略,等到實際碰到的時候才會意識到原來還有這種狀態(tài)……

作為交互設(shè)計師,在完成主流程設(shè)計后,也應(yīng)該考慮到異常場景。

從全局性出發(fā),我們可以預(yù)先考慮到產(chǎn)品將會碰到的異常狀態(tài),針對不同的異常狀態(tài)制定相應(yīng)的設(shè)計規(guī)范,在后續(xù)的設(shè)計需求中直接復(fù)用即可。

下面對幾種常見的異常狀態(tài)進(jìn)行設(shè)計總結(jié)。

一、網(wǎng)絡(luò)異常

1. 原因

網(wǎng)絡(luò)異常的原因主要有以下兩種原因:

(1)網(wǎng)絡(luò)連接權(quán)限

針對某App的網(wǎng)絡(luò)連接權(quán)限可以通過手機(jī)進(jìn)行設(shè)置,可設(shè)置為關(guān)閉應(yīng)用使用數(shù)據(jù),或者只允許應(yīng)用在WLAN下使用,或者允許應(yīng)用在WLAN與蜂窩網(wǎng)絡(luò)下均可使用。

所以以下均屬于網(wǎng)絡(luò)異常的情況:

  • 關(guān)閉應(yīng)用使用數(shù)據(jù),在流量或WI-FI環(huán)境下打開App
  • 只允許應(yīng)用在WI-FI下使用,但在流量環(huán)境下打開App

(2)網(wǎng)絡(luò)連接狀況

在斷網(wǎng)(打開飛行模式)、弱網(wǎng)(手機(jī)信號差)的情況下, 也無法正常獲取數(shù)據(jù)。

2. 處理方式

當(dāng)網(wǎng)絡(luò)異常時,用戶點擊進(jìn)入新頁面或在當(dāng)前頁進(jìn)行操作時,App會通過異常狀態(tài)缺省頁或交互反饋來告知用戶當(dāng)前異常狀態(tài)和解決方案。主要分為兩種情況:

(1)當(dāng)用戶操作進(jìn)入App新的頁面時,常以缺省頁的形式提醒用戶當(dāng)前網(wǎng)絡(luò)異常。當(dāng)應(yīng)用檢測到有可用網(wǎng)絡(luò)時,缺省頁將自動刷新頁面內(nèi)容。

比如網(wǎng)易云音樂在無網(wǎng)絡(luò)連接下,進(jìn)入新頁面時,缺省頁以簡單的文案告知無網(wǎng)絡(luò)的基礎(chǔ)原因,通過查看詳情來告知用戶解決方案以及引導(dǎo)如何解決問題。

美團(tuán)、騰訊視頻等,引導(dǎo)用戶檢查網(wǎng)絡(luò)權(quán)限設(shè)置和稍后再嘗試刷新頁面,稍后再試是因為弱網(wǎng)環(huán)境是暫時的,比如在地鐵上高鐵上或者某處手機(jī)信號接收較差的地方。

(2)當(dāng)用戶點擊操作當(dāng)前頁面時,比如上拉加載頁面、下拉刷新頁面,點贊、關(guān)注等操作時,常以toast或?qū)υ捒虻男问教崾居脩簟?

比如網(wǎng)易云音樂,網(wǎng)絡(luò)異常情況下下拉刷新或上拉加載頁面均進(jìn)行對話框提示,并引導(dǎo)用戶檢查網(wǎng)絡(luò)權(quán)限設(shè)置。

美團(tuán)外賣,無網(wǎng)絡(luò)連接環(huán)境下,在我的訂單頁面進(jìn)行評價操作,會進(jìn)行toast提示。

二、流量警告

前面說完網(wǎng)絡(luò)異常的設(shè)計規(guī)范,接下來就不得不提到流量警告的場景。

對于需要消耗大量流量的應(yīng)用:

(1)在流量環(huán)境下進(jìn)行需要消耗大流量的操作,比如播放/下載音視頻等,頁面會進(jìn)行流量警告。比如網(wǎng)易云音樂在流量環(huán)境下打開MV。

(2)在WI-FI環(huán)境下切換到流量環(huán)境時通常應(yīng)用會主動暫停進(jìn)程并進(jìn)行流量警告,并在頁面上告知用戶原因,讓用戶選擇是否繼續(xù)進(jìn)程。

比如網(wǎng)易云音樂、愛奇藝、芒果TV、BiliBili等音視頻娛樂App,在以上2種場景下,在視頻畫布上進(jìn)行告知讓用自己選擇是否繼續(xù)播放,同時也提供按鈕入口讓用戶辦理業(yè)務(wù)可免流量進(jìn)行播放。其中,芒果TV和BiliBili的繼續(xù)播放按鈕還貼心地告知了用戶將要消耗的流量值。

對以上兩種場景的處理方式進(jìn)行歸納,均為流量警告方式。

三、網(wǎng)絡(luò)異常和流量警告適用場景快速查詢

總結(jié)完網(wǎng)絡(luò)異常和流量警告的設(shè)計規(guī)范,我們知道其中影響因素包含:網(wǎng)絡(luò)連接權(quán)限、網(wǎng)絡(luò)連接狀況以及網(wǎng)絡(luò)環(huán)境的變化,下面做一個小總結(jié),以便快速查詢。

在總結(jié)之前強(qiáng)調(diào)一下,網(wǎng)絡(luò)權(quán)限設(shè)置是針對某App,連接Wi-Fi和流量是針對手機(jī)(所有應(yīng)用)。以iOS為例,設(shè)置截圖如下:

情況一:當(dāng)前網(wǎng)絡(luò)環(huán)境不變化

情況二:當(dāng)前網(wǎng)絡(luò)環(huán)境發(fā)生變化

針對以上情況,表現(xiàn)狀態(tài)為“網(wǎng)絡(luò)異?!保瑒t參照網(wǎng)絡(luò)異常的設(shè)計規(guī)范;表現(xiàn)狀態(tài)為“流量警告”,則參照流量警告的設(shè)計規(guī)范。

四、服務(wù)器異常

服務(wù)器出錯的情況是較少出現(xiàn)的,若出現(xiàn)服務(wù)器異常,其異常的時間也較為短暫。

一般不提示具體原因,處理方式為進(jìn)入新頁面的話則以缺省頁(文案或是文案+插畫)的形式進(jìn)行提示+重試按鈕,例如,進(jìn)入小米金融貸頁面時服務(wù)器出現(xiàn)異常,缺省頁提示錯誤原因同時提供重試按鈕。

點擊操作的話則以toast或?qū)υ捒虻男问竭M(jìn)行提示并重試,比如下圖的段友a(bǔ)pp,服務(wù)器出錯,刷新頁面后進(jìn)行toast提示;前段時間超級火的zao應(yīng)用,朋友圈火爆傳播,一度造成服務(wù)器訪問過載,制作視頻的時候應(yīng)用給出了對話框提示。

五、加載失敗

1. 原因

在數(shù)據(jù)加載過程中,導(dǎo)致異常的原因可能是:
1、網(wǎng)絡(luò)異常導(dǎo)致加載失敗

2、服務(wù)器請求數(shù)據(jù)失敗導(dǎo)致加載失敗

2. 處理方式

1、如果是因為網(wǎng)絡(luò)異常導(dǎo)致加載失敗,處理方式參照網(wǎng)絡(luò)異常的設(shè)計規(guī)范。

2、如果是服務(wù)器請求數(shù)據(jù)失敗,處理方式參照服務(wù)器異常的設(shè)計規(guī)范。

六、空狀態(tài)

1. 原因

空狀態(tài)就是指頁面當(dāng)前無內(nèi)容,主要在以下場景下會出現(xiàn)空狀態(tài)的情況:

  1. 無權(quán)限,某些界面和功能會針對不同的角色設(shè)定不同的使用權(quán)限,無權(quán)限訪問的頁面會出現(xiàn)空狀態(tài)的情況
  2. 搜索無結(jié)果,搜索無相應(yīng)結(jié)果會進(jìn)行空狀態(tài)提示
  3. 初始內(nèi)容為空,例如無瀏覽記錄、無收藏、無購買記錄、無訂單記錄、無下載記錄等
  4. 內(nèi)容被刪,若內(nèi)容允許被清空,內(nèi)容清空后會回到初始前的空狀態(tài)

2. 處理方式

當(dāng)前頁面為空一般會提示用戶當(dāng)前頁面為空狀態(tài),同時也可能會做適當(dāng)?shù)囊龑?dǎo)。

針對空狀態(tài)的場景,主要采取以下幾種設(shè)計原則:

(1)用戶無權(quán)限

一般在B端產(chǎn)品中會碰到這種場景,通常來說,若用戶無權(quán)限訪問某功能模塊的話,處理方式一般是將該功能模塊對用戶進(jìn)行隱藏。

若有其他原因不能隱藏對應(yīng)功能模塊,處理方式為缺省頁面(文案或是文案+插畫),但文案要足夠明確,告知無權(quán)限的用戶該如何處理才能訪問,一般是聯(lián)系管理員添加權(quán)限。

(2)搜索無結(jié)果
搜索無結(jié)果的處理方式一般有兩種處理方式,一種是缺省頁面(文案或是文案+插畫),另一種是在第一種的基礎(chǔ)上加上相關(guān)推薦。具體用哪一種根據(jù)設(shè)計目標(biāo)來決定。

比如網(wǎng)易云音樂搜索音樂無結(jié)果直接用文案告知。豆瓣搜索書影單無結(jié)果以插畫+文案的形式展示結(jié)果。美團(tuán)搜索不到相應(yīng)的內(nèi)容,應(yīng)用直接推薦其他商家刺激用戶購買。

另外也有應(yīng)用會添加一些引導(dǎo)操作收集用戶數(shù)據(jù)來優(yōu)化搜索,比如微信讀書找不到相關(guān)的數(shù)據(jù),在頁面的底部提供一個入口讓用戶填寫書籍名稱和作者,基于用戶的反饋數(shù)據(jù),微信讀書在后續(xù)書城書目的收錄工作中,就可以優(yōu)先收錄用戶搜索率較高的書籍了,在優(yōu)化搜索的同時也提供了用戶反饋訴求的入口。

(3)初始內(nèi)容為空

需要用戶進(jìn)行操作產(chǎn)生內(nèi)容的頁面,初始狀態(tài)一般為空,和搜索無結(jié)果的處理方式類似,有2種處理方式,一種是缺省頁面(文案或是文案+插畫),另一種是在第一種的基礎(chǔ)上加上快捷入口或推薦內(nèi)容,其目的都是在于引導(dǎo)用戶進(jìn)行操作從而產(chǎn)生數(shù)據(jù)。具體用哪一種還是根據(jù)設(shè)計目標(biāo)來決定。

直接用缺省頁面告知方式上,例如網(wǎng)易云音樂,個人未發(fā)布相關(guān)動態(tài),該動態(tài)頁面直接用簡短的文案告知用戶暫無相關(guān)動態(tài)。

提供快捷入口上,比如微信讀書,用戶未加入書籍到書架時,進(jìn)入書架頁面,會有一句話文案引起用戶共鳴,另外附上找書按鈕方便用戶快捷進(jìn)入書城進(jìn)行找書。

如果通過用戶瀏覽記錄和搜索行為等能夠分析出用戶的興趣愛好,進(jìn)行精準(zhǔn)推送,那在空狀態(tài)頁面進(jìn)行推薦引導(dǎo)也不乏是一種很好的嘗試。比如網(wǎng)易云音樂、騰訊視頻和美團(tuán)均有采取該方式。

網(wǎng)易云音樂里頭我從未購買或領(lǐng)取過數(shù)字專輯,該頁面也是無數(shù)據(jù)的,網(wǎng)易云音樂在頁面底部進(jìn)行了數(shù)據(jù)專輯的推薦,具體的推薦算法不太清楚,我覺得可以是銷售量較大的專輯,或者根據(jù)我個人的搜索和瀏覽記錄進(jìn)行相關(guān)推薦,最后通過埋點數(shù)據(jù)分析通過推薦引導(dǎo)購買是否提高了專輯購買率。

(4)內(nèi)容被刪除

頁面內(nèi)容被刪除區(qū)分場景說明。

第一種是需要用戶操作產(chǎn)生內(nèi)容的頁面,用戶也可以通過刪除將頁面內(nèi)容清空。

對于該場景,當(dāng)頁面內(nèi)容被用戶清空后,頁面內(nèi)容為空,處理方式和初始狀態(tài)為空類似,以缺省頁(文案或是文案+插畫)的形式告知或在此基礎(chǔ)上加上快捷入口或用戶推薦。

比如清空網(wǎng)易云音樂中我的下載列表所有單曲、清空騰訊視頻我的緩存視頻,清空微信讀書的書架,清空后的狀態(tài)和初始狀態(tài)是一致的。

另一種場景是的頁面入口依然存在,但二級頁面內(nèi)容已經(jīng)被刪除了,二級空頁面的設(shè)計處理方式是以缺省頁(文案或是文案+插畫)的形式告知,文案信息告知用戶內(nèi)容已被刪除。

例如某微信訂閱號的文章發(fā)布記錄中的某篇文章已經(jīng)被刪除,點擊進(jìn)入二級頁面后的提示如下:

七、功能重建

功能已上線,后期進(jìn)行產(chǎn)品升級或迭代功能正在開發(fā)中,功能入口沒有進(jìn)行關(guān)閉還是允許用戶訪問,通常會在用戶進(jìn)入該頁面之后進(jìn)行對話對話框提示,告知原因。

總結(jié)

以上對幾種常見異常狀態(tài)的設(shè)計規(guī)范進(jìn)行了總結(jié),相對正常狀態(tài),異常狀態(tài)較為少見,容易忽略,大家可以參照以上規(guī)范進(jìn)行異常狀態(tài)設(shè)計和優(yōu)化調(diào)整。后面碰到其他異常狀態(tài),我會繼續(xù)補(bǔ)充。

文章來源:人人都是產(chǎn)品經(jīng)理

前端解決跨域問題的常用方法

seo達(dá)人

首先,跨域是什么?



只要協(xié)議、域名、端口有任何一個不同,都被當(dāng)作是不同的域。為什么三者任何一個不同就會產(chǎn)生跨域呢,想想也很容易知道,要是很隨便引用什么外部文件,不同標(biāo)簽下的頁面引用類似的彼此的文件,瀏覽器很容易懵逼的,保障不了安全問題,但在安全限制的同時也給注入iframe或是ajax請求上帶來了不少麻煩。所以我們要通過一些方法使本域的js能夠操作其他域的頁面對象或者使其他域的js能操作本域的頁面對象



但有兩點至少要清楚:



如果是協(xié)議和端口造成的跨域問題“前臺”是無能為力的;

在跨域問題上,域僅僅是通過“URL的首部”來識別而不會去嘗試判斷相同的ip地址對應(yīng)著兩個域或兩個域是否在同一個ip上。

(“URL的首部”指window.location.protocol +window.location.host,也可以理解為“Domains, protocols and ports must match”。)

1.通過HTML5的postMessage方法跨域



頁面M通過postMessage方法發(fā)送消息如下:



window.onload = function() {  

    var iframe_dom = document.getElementById('iframId');  

    var targetOrigin = ";

    iframe_dom.contentWindow.postMessage('hello world!', targetOrigin);  

};

備注:



postMessage的使用方法:



originwindow.postMessage(message, targetOrigin);



originwindow:是說的目標(biāo)窗口,即要給某個window發(fā)消息,是 window.frames 屬性的成員或者由 window.open 方法創(chuàng)建的窗口

message: 是要發(fā)送的消息,類型為 String、Object (但I(xiàn)E8、9 不支持)

targetOrigin: 是限定消息接收范圍,不限制請使用 '*

頁面N通過message事件監(jiān)聽并接受消息如下:



let onmessage = function (event) {  

  var data = event.data;//由發(fā)送窗口傳過來的消息內(nèi)容  

  var origin = event.origin;//由發(fā)送窗口傳過來的消息來源地址  

  var source = event.source;//源Window對象  

  if(origin=="
;

    console.log(data);//hello world!  

  }  

};  

if (typeof window.addEventListener != 'undefined') {  

  window.addEventListener('message', onmessage, false);  

} else if (typeof window.attachEvent != 'undefined') {  

  //for ie  

  window.attachEvent('onmessage', onmessage);  

}

或者為了防止接入方的命名沖突,也可以約定事件名,以此加以區(qū)分



例如



window.addEventListener("message", function(event) {

  if (

    event &&

    typeof event.data == "object" &&

    event.data.event == "FUNCTION_NAME"

){

document.getElementById("val").innerHTML = event.data.value;

} });

2.通過JSONP



上面那種方式的通信是雙向的,頁面與iframe或是頁面與頁面之間的



JSONP主要是封裝好的請求方式添加callback,這個callback是由前后端約定好的



它的優(yōu)劣勢:



JSONP的優(yōu)點:它不像XMLHttpRequest對象實現(xiàn)的Ajax請求那樣受到同源策略的限制;它的兼容性更好,在更加古老的瀏覽器中都可以運行,不需要XMLHttpRequest或ActiveX的支持;并且在請求完畢后可以通過調(diào)用callback的方式回傳結(jié)果。

JSONP的缺點:它只支持GET請求而不支持POST等其它類型的HTTP請求;它只支持跨域HTTP請求這種情況,不能解決不同域的兩個頁面之間如何進(jìn)行JavaScript調(diào)用的問題;無法判斷它是否請求成功,只能通過timeout

3.CORS跨域



實現(xiàn)CORS通信的關(guān)鍵是服務(wù)器端,只要服務(wù)端那邊實現(xiàn)了CORS接口,就可以跨源通信



CORS(Cross-Origin Resource Sharing)跨域資源共享,定義了必須在訪問跨域資源時,瀏覽器與服務(wù)器應(yīng)該如何溝通。CORS背后的基本思想就是使用自定義的HTTP頭部讓瀏覽器與服務(wù)器進(jìn)行溝通,從而決定請求或響應(yīng)是應(yīng)該成功還是失敗。目前,所有瀏覽器都支持該功能,IE瀏覽器不能低于IE10。整個CORS通信過程,都是瀏覽器自動完成,不需要用戶參與。對于開發(fā)者來說,CORS通信與同源的AJAX通信沒有差別,代碼完全一樣。瀏覽器一旦發(fā)現(xiàn)AJAX請求跨源,就會自動添加一些附加的頭信息,有時還會多出一次附加的請求,但用戶不會有感覺



服務(wù)器端對于CORS的支持,主要就是通過設(shè)置Access-Control-Allow-Origin來進(jìn)行的。如果瀏覽器檢測到相應(yīng)的設(shè)置,便可以允許Ajax進(jìn)行跨域的訪問



 



CORS和JSONP對比



JSONP只能實現(xiàn)GET請求,而CORS支持所有類型的HTTP請求。



使用CORS,開發(fā)者可以使用普通的XMLHttpRequest發(fā)起請求和獲得數(shù)據(jù),比起JSONP有更好的錯誤處理。



JSONP主要被老的瀏覽器支持,它們往往不支持CORS,而絕大多數(shù)現(xiàn)代瀏覽器都已經(jīng)支持了CORS)。



CORS與JSONP相比,顯然更為先進(jìn)、方便和可靠。



4.設(shè)置代理



目前市場上用vue技術(shù)不在少數(shù),下面介紹一種配置代理方式



在vue.config.js該文件里面配置如下:



 devServer: {

        port: 8001,

        open: true,

        disableHostCheck: true,

        proxy: {

            '/api': {

                target: 'https:/xxx.com',

                secure: true, // false為http訪問,true為https訪問

                ws: true,

                changeOrigin: true,

                pathRewrite: {

                    '^/api': ''

                }

             }

        }

 }

 



后面請求是需要帶上‘/api’請求即可


如何才能更加靈活的使用網(wǎng)格?

資深UI設(shè)計者

本篇文章立足于網(wǎng)格系統(tǒng)的基礎(chǔ)上,以網(wǎng)格使用邏輯詳細(xì)的介紹了在實際的應(yīng)用中應(yīng)該如何才能把劃分的網(wǎng)格當(dāng)做工具使用。

文章來源:站酷

ES6的解構(gòu)賦值的用途總結(jié)

seo達(dá)人

二 - ES6的解構(gòu)賦值的用途總結(jié)

2 - 什么是ES6解構(gòu)

在ES6中添加了一個新屬性:解構(gòu),允許你使用類似數(shù)組或?qū)ο笞置媪康恼Z法將數(shù)組和對象的屬性賦給各種變量。解構(gòu)是一種打破數(shù)據(jù)結(jié)構(gòu),將其拆分為更小部分的過程,允許我們將右邊的表達(dá)式看起來也像變量聲明一般,然后在左邊將值一一提取。 解構(gòu)這種賦值語法較為簡潔,比傳統(tǒng)的屬性訪問更為清晰。

還不了解什么是解構(gòu)賦值的,請參考:https://blog.csdn.net/azxqwe123/article/details/103296603

下面只講怎么應(yīng)用:



2.1 - ES6解構(gòu)賦值7種場景案例—用途

(1)交換變量的值



[x, y] = [y, x];

上面代碼交換變量x和y的值,這樣的寫法不僅簡潔,而且易讀,語義非常清晰。



(2)從函數(shù)返回多個值



函數(shù)只能返回一個值,如果要返回多個值,只能將它們放在數(shù)組或?qū)ο罄锓祷?。有了解?gòu)賦值,取出這些值就非常方便。



// 返回一個數(shù)組



function example() {

  return [1, 2, 3];

}

var [a, b, c] = example();



// 返回一個對象



function example() {

  return {

    foo: 1,

    bar: 2

  };

}

var { foo, bar } = example();



(3)函數(shù)參數(shù)的定義



解構(gòu)賦值可以方便地將一組參數(shù)與變量名對應(yīng)起來。



// 參數(shù)是一組有次序的值

function f([x, y, z]) { ... }

f([1, 2, 3]);



// 參數(shù)是一組無次序的值

function f({x, y, z}) { ... }

f({z: 3, y: 2, x: 1});



(4)提取JSON數(shù)據(jù)



解構(gòu)賦值對提取JSON對象中的數(shù)據(jù),尤其有用。



var jsonData = {

  id: 42,

  status: "OK",

  data: [867, 5309]

};



let { id, status, data: number } = jsonData;



console.log(id, status, number);

// 42, "OK", [867, 5309]

上面代碼可以快速提取JSON數(shù)據(jù)的值。



(5)函數(shù)參數(shù)的默認(rèn)值



jQuery.ajax = function (url, {

  async = true,

  beforeSend = function () {},

  cache = true,

  complete = function () {},

  crossDomain = false,

  global = true,

  // ... more config

}) {

  // ... do stuff

};





指定參數(shù)的默認(rèn)值,就避免了在函數(shù)體內(nèi)部再寫var foo = config.foo || ‘default foo’;這樣的語句。



(6)遍歷Map結(jié)構(gòu)



任何部署了Iterator接口的對象,都可以用for…of循環(huán)遍歷。Map結(jié)構(gòu)原生支持Iterator接口,配合變量的解構(gòu)賦值,獲取鍵名和鍵值就非常方便。



var map = new Map();

map.set('first', 'hello');

map.set('second', 'world');



for (let [key, value] of map) {

  console.log(key + " is " + value);

}

// first is hello

// second is world

如果只想獲取鍵名,或者只想獲取鍵值,可以寫成下面這樣。



// 獲取鍵名

for (let [key] of map) {

  // ...

}



// 獲取鍵值

for (let [,value] of map) {

  // ...

}



(7)輸入模塊的指定方法



加載模塊時,往往需要指定輸入那些方法。解構(gòu)賦值使得輸入語句非常清晰。



const { SourceMapConsumer, SourceNode } = require("source-map");


設(shè)計師必備的場景化思維

資深UI設(shè)計者

本文從什么是場景化、場景化設(shè)計的案例、為什么要基于場景化做設(shè)計和如何進(jìn)行場景化設(shè)計 4 個方面為你完整梳理場景化設(shè)計思維的知識點。

什么是場景化設(shè)計

「場景」在百度百科里的定義是:戲劇、電影中的場面,泛指情景。情景又指:

  • 感情與景色
  • 情形、景象
  • 環(huán)境:假設(shè)是在這個情景。

在戲劇或影視劇里,場景由人物,時空,事件(行為),環(huán)境(社會環(huán)境和自然環(huán)境)等要素構(gòu)成。

互聯(lián)網(wǎng)中的「場景」我把它分為兩類,一類是為了實現(xiàn)用戶目標(biāo)而產(chǎn)生的場景,這種類型的場景需要明確用戶目標(biāo),可能并不需要涵蓋用戶是怎么實現(xiàn)目標(biāo)的。這類場景指根據(jù)用戶的精準(zhǔn)需求,為其提供精準(zhǔn)服務(wù),用明確的差異化服務(wù)給用戶提供一個使用產(chǎn)品的動機(jī)。比如微博和微信,微信定位是熟人社交,微博則是陌生人社交。另一類是更加精細(xì)化的場景,這類場景需要明確用戶操作流程。本文主要針對第二類場景展開。

場景化設(shè)計指基于對場景的分析,得出用戶痛點與需求,結(jié)合前后場景預(yù)判用戶目標(biāo),通過設(shè)計提高用戶效率,給予用戶驚喜與感動。

場景要素包括:4W+1H,即Who人、When時間、Where地點、What事件 、How環(huán)境,什么人,在什么時候,在什么地方,做了什么事情,所處的環(huán)境如何。其中 Where 又包括線上地點和線下地點,線下指現(xiàn)實中的定位,可以通過手機(jī)信號塔數(shù)據(jù)(GPS),Wifi 連接等獲?。痪€上指用戶所處的具體頁面。

如:用戶(who)早上上班(when)在地鐵上(where)看電子書(what),地鐵上人多嘈雜且操作不方便(how)。再比如用戶(who)中午(when)在辦公室里(where)點外賣(what),肚子很餓還不知道吃什么(how)。五要素就像口訣,幫助我們?nèi)婵焖俚孛枋鰣鼍啊?

有哪些場景化設(shè)計的例子

為幫助大家更好的理解場景化設(shè)計,這里基于上面提到的場景五要素舉一些例子。

人是變量:用戶不同,看到的信息不同。隨著大數(shù)據(jù)和智能推薦技術(shù)的普及,越來越多的產(chǎn)品通過挖掘不同用戶的喜好,生成用戶畫像,為每位用戶提供「千人千面」的個性化內(nèi)容。這樣的產(chǎn)品大家都很熟悉,比如抖音,淘寶,微博,今日頭條。

時間是變量:時間不同,看到的信息不同。比如小米 MIUI11 的效率革新功能「智能出行」,當(dāng)在出行類 app 上定好行程后,MIUI11 就會自動將該行程記錄在負(fù)一屏顯示并同步日歷,同時會根據(jù)出行的時間點,在通知欄實時更新提示:

再比如在 Google Maps 的 app 里開啟導(dǎo)航時,如果目的地在預(yù)計到達(dá)時間還沒有開門,或者快要/已經(jīng)關(guān)門了的話,會有個彈窗提醒。

還有螞蟻森林的頁面會根據(jù)用戶打開的時間進(jìn)行變化(白天與夜晚模式)等等,這些都是充分考慮了場景中時間這一變量,才有如此暖心的設(shè)計。

地點是變量:同一個用戶,在不同地點看到的信息不同。比如,大眾點評APP當(dāng)用戶從常住地北京(where)定位成非常住地杭州(where)時,根據(jù)用戶的上個場景與當(dāng)前場景預(yù)測用戶可能處于旅游狀態(tài),從而預(yù)測用戶下一步的目標(biāo)是在杭州「吃喝玩樂」,所以首頁和攻略頁的內(nèi)容都發(fā)生了變化,為用戶推薦旅行地的「吃喝玩樂」。

環(huán)境是變量:不同環(huán)境看到的信息不同,比如設(shè)備環(huán)境發(fā)生變化時:iOS13 中的備忘錄頁面,將「添加」按鈕移到了右下角。為什么?因為手機(jī)屏幕越來越大,把按鈕從右上角移到右下角,更有利于用戶單手操作。

再比如:我們在駕駛環(huán)境下,要保持注意力集中,避免或減少分心駕駛導(dǎo)致的交通事故,所以基于駕駛環(huán)境,iOS11 上線了駕駛模式功能。當(dāng) iphone 與車內(nèi)的 USB 或藍(lán)牙連接,或 iphone 感知到人的移動速度時,iphone 就會自動進(jìn)入駕駛模式,在該模式下,任何人發(fā)短信,我們都不會收到提示,對方會收到「我正在駕駛,稍后回復(fù)您」的自動回復(fù)。同時,iphone 會追加一條短信,提示對方只要回復(fù)「緊急」關(guān)鍵詞,我們就能立刻接收到他們的消息提示。

為什么要基于場景做設(shè)計?

通過上面的舉例想必大家已經(jīng)了解到了基于場景做設(shè)計的好處。由于與用戶的空間相隔,設(shè)計師無法感知用戶在真實場景中使用產(chǎn)品的具體情況。通過場景化設(shè)計的方法,對用戶使用場景進(jìn)行分析與預(yù)期,可以幫助設(shè)計師找到用戶與場景的內(nèi)在聯(lián)系,探索新的功能及交互方式。

怎么進(jìn)行場景化設(shè)計

可以概括為以下四步。

1. 根據(jù)用戶使用流程和行為路徑窮盡場景

根據(jù)用戶的使用流程和行為路徑列舉場景,這里以乘坐飛機(jī)(手機(jī)購票)為例,列舉乘坐飛機(jī)涉及到的關(guān)鍵場景:

  • 乘客(who)在航旅縱橫頁面(where)購票(what),航班多查找起來麻煩(how)。
  • 乘客(who)起大早拖著疲憊的身體(how)在去往機(jī)場的路上(where),又遇到早高峰堵車,內(nèi)心焦躁煩悶(how)。
  • 起飛前(when)乘客(who)在機(jī)場(where)過安檢(what),安檢流程復(fù)雜,又檢測出不符合登機(jī)規(guī)定的物品,讓人心煩,手忙腳亂(how)。
  • 起飛前(when),乘客(who)在候機(jī)口(where)候機(jī)(what),人多嘈雜,沒有座位,還背著繁重的行李,還要時刻關(guān)注航班信息(how)。
  • 起飛前40分鐘(when),乘客(who)背著行李排著隊(how),將登機(jī)牌(紙質(zhì)/電子)和身份證出示給工作人員(what),工作人員(who)站在入口處(where)開始檢查每位乘客的登機(jī)牌和身份證(what)。
  • 檢完票后(when),乘客(who)拿著身份證和登機(jī)牌,背著行李(how)乘坐擺渡車(what),擺渡車上嘈雜、擁擠(how)。
  • 下擺渡車后(when),乘客拿出登機(jī)牌,背著行李(how)排隊檢票登機(jī)(what),工作人員(who)站在飛機(jī)前(where)開始檢查每位乘客的登機(jī)牌(what)。
  • 在起飛前30分鐘(when),乘客(who)登機(jī)(what),背著行李在狹窄擁擠的通道里(how)尋找自己的座位(what)。找到座位后,將沉重的行李艱難的(how)放到上方的置物架上(what)。放好行李后,坐到自己的座位上(what),系好安全帶(what),調(diào)節(jié)座椅靠背(what),等待飛機(jī)起飛(what)。
  • 飛行過程中(when),氣流導(dǎo)致飛機(jī)顛簸,乘客感到恐慌不適(how)。飛行過程中,乘客通過看電影,看書,睡覺打發(fā)時間(what)。
  • 到達(dá)目的地(when),乘客(who)從高處置物架上(how)取下行李(what),拿著沉重的行李(how)排隊下飛機(jī)(what)。此時乘客對目的地的天氣等其他情況都不清楚。
  • 乘客走出飛機(jī)到達(dá)航站樓后,在陌生的機(jī)場(where),跟著標(biāo)牌指示艱難的找到自己的行李(what)。拿著行李跟著指示牌(how)困難的找出口(what)。

通過對關(guān)鍵場景的詳細(xì)描述,我們將摸不著的用戶場景像過電影一樣在眼前一一呈現(xiàn),有利于我們發(fā)現(xiàn)很多想不到或者通過調(diào)研得不到的細(xì)節(jié),幫助我們發(fā)現(xiàn)用戶真正的痛點與需求,洞察設(shè)計機(jī)會點。

2. 根據(jù)場景挖掘機(jī)會點

完成了第一步的場景列舉,我們對流程中涉及的場景有了深刻的了解。下一步就是對場景的判斷與分析,挖掘機(jī)會點。機(jī)會點挖掘有兩個方向,一是通過分析當(dāng)前場景存在的痛點和需求挖掘機(jī)會點,二是通過對用戶下一步目標(biāo)的預(yù)判尋找機(jī)會點。

通過分析當(dāng)前場景存在的痛點和需求挖掘機(jī)會點

支付寶「朋友」界面,當(dāng)用戶輸入某數(shù)值時,輸入框上方會自動顯示「給對方轉(zhuǎn)賬***元」按鈕,用戶可點擊該按鈕完成轉(zhuǎn)賬。這是因為經(jīng)常有用戶誤以為輸入數(shù)值發(fā)送即完成了轉(zhuǎn)賬,導(dǎo)致很多尷尬的狀況出現(xiàn)?;谠搱鼍跋碌耐袋c與需求,支付寶做了這個改進(jìn),貼心又好用。

iOS 系統(tǒng)在切換 APP 操作時,會將一些金融類 APP 虛化,以此來保證用戶信息安全。這一設(shè)計細(xì)節(jié)也是充分考慮了用戶在切換 APP 時的場景,解除了用戶在公告場合擔(dān)心被窺屏而泄露個人財富信息的擔(dān)憂。

還有,當(dāng)我們用耳機(jī)聽音樂或播放視頻時,拔下耳機(jī),聲音就會自動停掉,這樣就算在安靜的場合聽音樂或者看視頻,耳機(jī)不小心掉下來也不會發(fā)出尷尬的聲音,這些都是充分考慮了用戶當(dāng)前使用時的場景,才做出如此貼心的設(shè)計。

通過對用戶下一步目標(biāo)的預(yù)判尋找機(jī)會點

第二個方法是通過對用戶當(dāng)前場景的分析,預(yù)判用戶下一步的行為與目標(biāo),從而尋找當(dāng)前場景的機(jī)會點。

如何預(yù)期用戶下一步目標(biāo)?有三個方法:

  • 通過成組動作進(jìn)行預(yù)期,如復(fù)制→粘貼,編輯→保存。
  • 通過用戶認(rèn)知流程預(yù)判,如,瀏覽時反向滑動→結(jié)束瀏覽/回到頂部;再比如谷歌翻譯在發(fā)音時,第一遍是正常語速,第二遍語速變慢,第三遍又恢復(fù)到常速。是不是很貼心,很符合用戶期望?
  • 通過產(chǎn)品使用流程進(jìn)行預(yù)期,如訂外賣→取外賣→評價。

在谷歌瀏覽器,當(dāng)我們打開多個瀏覽窗口時,通常需要手動一個個地關(guān)閉標(biāo)簽頁。chrome 充分考慮到了用戶的使用場景,當(dāng)用戶關(guān)閉一個標(biāo)簽頁時,預(yù)期用戶會關(guān)閉下一個標(biāo)簽頁,所以當(dāng)關(guān)閉一個標(biāo)簽時,相鄰標(biāo)簽會自動靠近,保證關(guān)閉的按鈕始終位于鼠標(biāo)的當(dāng)前位置,這樣用戶就不用移動鼠標(biāo)關(guān)閉下一個標(biāo)簽頁,提高了用戶的使用效率。

3. 機(jī)會點轉(zhuǎn)化為落地的設(shè)計方案

在將機(jī)會點轉(zhuǎn)化為具體的設(shè)計時,有兩個可作為依據(jù)的設(shè)計原則,分別為,情感化。

實現(xiàn)有以下幾個方法:

行動點前置

通過對用戶下一目標(biāo)的預(yù)測,將用戶目標(biāo)在當(dāng)前場景展示,縮短操作流程,達(dá)到的目標(biāo)。如淘寶首頁的 tab 欄會根據(jù)每個用戶的瀏覽記錄預(yù)測用戶目標(biāo),千人千面?zhèn)€性化展現(xiàn),縮短了用戶查找商品的路徑,提高商品購買效率。

行動點置換

還是拿淘寶舉例,淘寶底部的第一個導(dǎo)航,當(dāng)用戶滑動首頁下方的商品流時,該按鈕由首頁變成置頂。

行動點相關(guān)提示

意思是根據(jù)用戶當(dāng)前目標(biāo)或下一步目標(biāo)進(jìn)行相關(guān)的提示。如支付寶朋友頁面,當(dāng)上滑時,會出現(xiàn)「找人轉(zhuǎn)賬」的提示,點擊進(jìn)入朋友列表的純凈模式(去掉了服務(wù)通知等跟轉(zhuǎn)賬無用的列表),提高了用戶尋找的效率。

再比如,網(wǎng)易郵箱,當(dāng)郵件中提到附件,但是沒有上傳附件時,點擊發(fā)送后,系統(tǒng)彈出下方的提示,解決了用戶常常忘記添加附件的困擾。

突出行動點

根據(jù)用戶當(dāng)前目標(biāo)或下一步目標(biāo)突出關(guān)鍵按鈕,幫助用戶快速找到關(guān)鍵操作,吸引用戶點擊,降低了用戶思考成本,提升效率。運用這個方法進(jìn)行設(shè)計的例子太多了,比如淘寶的商品詳情頁用紅色突出購買按鈕等。

直接執(zhí)行

根據(jù)用戶當(dāng)前目標(biāo)或下一步目標(biāo)直接執(zhí)行。比如滴滴的掃一掃界面,當(dāng)檢測到光線較暗時,手電筒會自動打開,提高了掃一掃的效率。

情感化

唐納德·諾曼在《情感化設(shè)計》中提到設(shè)計的三個層次,分別為:本能的設(shè)計,行為的設(shè)計,反思的設(shè)計。情感化設(shè)計是能打動人的,它能傳遞感情,勾起回憶,給人驚喜,情感化設(shè)計是幫助產(chǎn)品與用戶之間建立情感的紐帶,能強(qiáng)化用戶對品牌的認(rèn)知,培養(yǎng)對品牌的忠誠度。

情感化設(shè)計的步驟依次為:提煉影響產(chǎn)品的的情感指標(biāo)→聚焦用戶對產(chǎn)品的情感訴求→產(chǎn)出設(shè)計方案→驗證設(shè)計價值(來源于周姮—知乎螞蟻金服體驗技術(shù)部的一次分享)。

在谷歌表格每列的開頭依次輸入「Pride」五個字母后,表格會變成彩虹樣式。

網(wǎng)易云音樂在用戶生日時會變成「生日快樂」的蛋糕樣式,點擊進(jìn)去的音樂列表,第一首歌是生日歌,讓人心里暖暖的。

4. 設(shè)計檢驗

最后一步就是設(shè)計方案的驗證,設(shè)計方案能否幫助用戶縮短操作流程?降低用戶思考成本?幫助用戶地完成任務(wù)?是否能打動用戶給他們帶來驚喜與溫暖?通過可用性測試及上線后的數(shù)據(jù)反饋,幫助我們更好的優(yōu)化設(shè)計方案。

總結(jié)

1. 什么是場景化設(shè)計?

場景五要素:4W+1H,即Who人、When時間、Where地點、What事件 、How環(huán)境,什么人,在什么時候,在什么地方,做了什么事情,所處的環(huán)境如何。

2. 有哪些場景化設(shè)計的例子?

3. 為什么要進(jìn)行場景化設(shè)計?

4. 怎么進(jìn)行場景化設(shè)計?

  • 根據(jù)使用流程和行為路徑窮盡場景
  • 根據(jù)場景挖掘設(shè)計機(jī)會點
  • 將機(jī)會點轉(zhuǎn)化為落地的設(shè)計方案
  • 設(shè)計檢驗

日歷

鏈接

個人資料

存檔