好的用戶體驗(yàn)是不會讓用戶注意到并毫無察覺的一種體驗(yàn)。表面上看似非常簡單,但實(shí)際上設(shè)計師已經(jīng)做出了非常多的設(shè)計思考。用戶越少的去思考界面,用戶就越能專注他們要完成的目標(biāo)。在瀏覽頁面時,用戶的注意力不應(yīng)該停留在界面和設(shè)計上,他們更應(yīng)該關(guān)注的是如何達(dá)成他們的目的。所以作為設(shè)計師的首要工作就是通過事先清除障礙,為用戶提供直達(dá)目標(biāo)的途徑。
“通常,飛速行駛的貨車不可能輕松地停下來。因?yàn)檫\(yùn)用更多的動能去改變運(yùn)動狀態(tài)是非常困難的。與其強(qiáng)迫人們從他們的主任務(wù)上轉(zhuǎn)移注意力,不如直接帶他們?nèi)ニ麄兿肴サ牡胤健!?
——Luke Wroblewski,谷歌產(chǎn)品總監(jiān)
換個思路來看。復(fù)雜和混亂的界面會迫使用戶去尋找解決問題的方法,而通常情況下,這些方法并不是一目了然的。用戶會因?yàn)檫^多的選項(xiàng)、界面、導(dǎo)航等感到困惑,用戶可能會在思考過程中感到不知所措。即便是很短暫的停頓,也足以讓用戶離開。
這種過度的思考就被稱為認(rèn)知過載,在這篇文章里,我們將為你解釋如何避免認(rèn)知過載。首先,我們需要明白我們大腦中存在過載風(fēng)險的原因。
認(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é)家約翰·瑞勒才將這項(xiàng)研究應(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ā)表。他的研究中運(yùn)用了數(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è)計師將菜單項(xiàng)的數(shù)量限制在5和9之間。
雖然這些理論最初是針對教育領(lǐng)域的,但它們同樣適用于用戶體驗(yàn)(UX)設(shè)計。
工作記憶
如果你每次打開冰箱,都必須回答一個像謎語一樣的問題,“什么東西小的時候四只腳走路,長大了以后兩只腳,而老了以后有三只腳?”這是一個老段子。但是,根據(jù)認(rèn)知負(fù)荷理論,使用這種讓人無奈的用戶體驗(yàn)設(shè)計會讓用戶產(chǎn)生挫敗感。
要理解認(rèn)知負(fù)荷理論,你必須要了解什么是工作記憶,大腦在短時間內(nèi)用于完成任務(wù)的過程便是工作記憶。工作記憶必須借助外部刺激和短期記憶,并在需要時從長期記憶中抽取。通俗一點(diǎn)說,工作記憶相當(dāng)于計算機(jī)內(nèi)存,而長期記憶則相當(dāng)于硬盤驅(qū)動器。
工作記憶和短期記憶通??梢曰Q使用,但它們略有不同。工作記憶是處理信息的過程,而短期記憶更像是一個信息的便簽本,它雖然重要,但卻沒有長期記憶重要。
讓我們看看這篇文章是如何解釋這些差異的。在你閱讀的時候,你可能會遇到一個用藍(lán)色字體書寫的陌生概念。你的工作記憶需要知道藍(lán)色文本是什么意思,才能夠理解文章更深層的含義。你的長期記憶知道藍(lán)色文本表示鏈接,因此你的工作記憶知道點(diǎn)擊該鏈可以獲得更多信息。與此同時,你的短期記憶會記住你在文章中的位置,這樣當(dāng)你從外部頁面返回時你不會迷失,但到了第二天早上,該位置就會被遺忘掉。
設(shè)計中的應(yīng)用
Steve Krug(史蒂夫·克魯格)是一位很有影響力的作家,他在網(wǎng)頁設(shè)計中極力推崇認(rèn)知負(fù)荷理論。他的書《Don’t make me think》被許多設(shè)計師認(rèn)為是有巨大影響力的著作。
書中記錄了許多寶貴的經(jīng)驗(yàn),下面就列舉一些的:
1、每一個頁面都要清晰明了。
2、用戶傾向于“滿意” - 也就是說,采取一個最簡單的解決方案來解決他們的問題,而不是最好的解決方案。此外,作為習(xí)慣的生物,用戶將一遍又一遍地使用相同的方法解決問題,而不會刻意尋找一個更好的選擇。
3、當(dāng)新用戶可以熟練使用該系統(tǒng)來實(shí)現(xiàn)他們的目標(biāo)時,系統(tǒng)的可用性就足夠了。
4、用戶使用網(wǎng)絡(luò)的絕大部分是想要節(jié)省時間。因此,用戶的行為通常會像鯊魚一樣“保持移動,否則就會死亡”。
5、后退按鈕是Web瀏覽器最常用的功能。
6、屏幕上顯示的主頁按鈕即使從來不被用戶使用,但也能讓用戶感到放心。
總之,用戶在瀏覽網(wǎng)站過程中哪怕是一瞬間的思考,也會對他們的工作記憶造成負(fù)擔(dān)。例如 “這個可以點(diǎn)擊嗎?“首頁按鈕在哪兒?”和“我怎么保存?”等等問題,都會不同程度破壞用戶體驗(yà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)驗(yàn)豐富的網(wǎng)絡(luò)用戶思考的更多。
雖然我們無法量化所有的認(rèn)知過載,但我們可以盡量的去避免他的產(chǎn)生,下面,我們對網(wǎng)頁設(shè)計中最常見的類型以及避免它們的最佳方法進(jìn)行了分類說明。
1.不必要的操作
用戶的每一步操作都會增加他們的認(rèn)知負(fù)擔(dān)。過多不必要的操作會打斷用戶的思路或者會讓用戶抓狂。因?yàn)橛脩舻墓ぷ饔洃浂技性谕瓿商囟ǖ哪繕?biāo)上,所以多余的操作將迫使用戶投入更多的精力,這樣就需要更多的工作記憶才能完成任務(wù),所以,那些不必要的操作步驟很考驗(yàn)用戶的耐心。
速度和節(jié)奏是讓認(rèn)知負(fù)荷最小化的基本因素。用戶希望以輕快,目的性很強(qiáng)的步驟來完成任務(wù),所以應(yīng)該提前消除一切延遲。
用戶希望在他們提交郵箱地址之前就知道他們將要進(jìn)入什么網(wǎng)站,但Touch of Modern卻要求用戶在使用之前必須進(jìn)行注冊!這個強(qiáng)制而又多余的行為將會嚇跑很多的潛在用戶。
解決方案
下面這個方法,可以幫助我們找到不必要的操作有哪些:列出用戶要完成任務(wù)必須要去做的步驟。例如發(fā)送電子郵件:
1、點(diǎn)擊電子郵件圖標(biāo)。
2、點(diǎn)擊“發(fā)送到”輸入框。
3、輸入電子郵件地址。
4、點(diǎn)擊“主題”輸入框。
5、等等....
現(xiàn)在,重新審視列表并且找出可刪減的操作步驟,想到什么了嗎?你可以通過將光標(biāo)一開始就自動定位在“發(fā)送到”字段就可以刪除步驟2.這將減少用戶的操作,雖然很微小,但你消除的每一步對于用戶來說都是友好的。
我們來看看谷歌的主頁。光標(biāo)一開始就在搜索輸入框當(dāng)中,因此用戶所要做的就是開始輸入文字。這些微小的交互提升了整體的用戶體驗(yàn),所以不要忽視它們。
2.過度刺激
雜亂無章的頁面會分散用戶的注意力,使用戶無法專注他們想要完成的目標(biāo)。就像有好幾個人同時與你交談時你會很難集中注意力,當(dāng)頁面上太多的圖片、動畫、圖標(biāo)、廣告、文本類型和鮮艷的顏色奪取你的注意時,就會很難集中注意力。
記住,每個人的工作記憶在完成目標(biāo)的過程中,會因?yàn)橥饨绲拇碳γ恳徊焦ぷ髦匦屡判?。每一次分心,尤其是視覺上的強(qiáng)烈刺激,都需要消耗用戶的一部分注意力。
LINGsCARS就是個極端的例子,你可以看到有強(qiáng)烈對比的顏色和絢麗的動效沖擊著人們的感官。在屏幕上,即便在兩個不同位置同時進(jìn)行的動效依然會對用戶造成過度刺激。
解決方法
首先,減少一切不必要的元素。僅保留必要的內(nèi)容通常是最佳的選擇,減少加載時間并簡化體驗(yàn)。用戶更喜歡視覺簡單的網(wǎng)站,而不是視覺上復(fù)雜的網(wǎng)站。
你還可以進(jìn)行內(nèi)容區(qū)分以達(dá)到平衡的效果。太多相同的內(nèi)容(比如文字或圖像)會讓用戶感到厭煩。所以,視覺內(nèi)容要進(jìn)行合理的組合,圖像、視頻、信息圖表等,能夠使頁面和諧,并便于用戶理解。
影視網(wǎng)站IMDb本可以在很大程度上輕松地只依靠圖片進(jìn)行排版,但它反而運(yùn)用同量的文字內(nèi)容來平衡網(wǎng)站頁面。
在抽取出一個頁面上必須要展示的元素之后,你應(yīng)該采用一種讓用戶立即能夠理解的方式組織這些元素。對稱或者不對稱的信息布局顯示都可以很快的被用戶所理解,也就是說,用一種方式,盡可能的減少大腦的工作。這樣不僅對稱和不對稱都能讓眼睛感覺很舒適,而這樣的結(jié)構(gòu)也能讓界面交互更容易。
下面來看一下Groupon是如何布置頁面的吧。左中是文本類的垂直菜單,右中是一個有特色的凍酸奶交易文本描述,插在文本中間的照片和色塊的使用,分分鐘創(chuàng)造出一個讓人喜愛的沙漏結(jié)構(gòu)。
下面來看看Groupon是如何將它的垂直菜單(中間偏左)和描述凍酸奶的文字(中間偏右)進(jìn)行布局的吧。大圖居中被文字包圍著,這樣就打造了一個舒適自然的沙漏形狀。
對稱不僅僅是在屏幕的兩側(cè)應(yīng)用相同的布局,它是視覺重心和視覺方向的平衡。通過這種方式,非對稱頁面也能看起來很有組織性,如下圖的OTHR所示。
將你的頁面內(nèi)容精減到只包含簡單的和非競爭性的元素,這只是完成了預(yù)防過度刺激工作的一半。。不要忘記要以簡單的布局呈現(xiàn)這些元素。
3、太多選項(xiàng)(希克定律)
這有點(diǎn)自相矛盾:用戶需要更多的選擇,但是往往太多的選擇會使他們的大腦超負(fù)荷。
席克定律(選擇困難癥)為我們揭示出了一種現(xiàn)象:用戶擁有的選擇越多,他們做出決定的時間就越長。
作為設(shè)計師要去理解庫克定律,可以把每個選項(xiàng)看作是明亮的閃光燈,如下所示,太多的閃光燈會過度刺激用戶。
甚至像Rakuten這樣的知名網(wǎng)站也會犯類似的錯誤,因?yàn)樗麄儧]有真正的理解這個設(shè)計原則。給用戶需要的而不是給他們認(rèn)為他們需要的。
解決方案
假如你已經(jīng)解決了不必要的和多余的選項(xiàng),你可以將他們分別放入不同的組進(jìn)行分類,你可以在百貨商店的網(wǎng)站上看到很多例子,這些網(wǎng)站擁有廣泛的產(chǎn)品選擇。
它不一定是太多的選擇, 只是一次有太多的選擇。如果你可以用隱藏菜單,抽屜和拉出其中的一種方式隱藏一些選項(xiàng),那么你將獲得兩全其美的效果,這些超級菜單雖然為用戶提供了許多選項(xiàng),但一定程度上不會給用戶帶來很大的負(fù)擔(dān)。
但是,隱藏式的導(dǎo)航欄不利于發(fā)現(xiàn),因此電子商務(wù)和新聞等行業(yè)的設(shè)計人員應(yīng)該注意。你可以通過放置其他類似產(chǎn)品的鏈接使缺點(diǎn)最小化(比方說亞馬遜的“相關(guān)購買”)從而最大限度地減少隱藏菜單的缺點(diǎn)?;蛘吣憧梢詺w納導(dǎo)航菜單的類別,將它們精簡為單行導(dǎo)航(如Apple和CNN那樣)。
你還需要注意應(yīng)該如何組織整個網(wǎng)站的導(dǎo)航。許多與庫克定律有關(guān)的問題可以通過管理信息架構(gòu)(IA)來處理,我們將在下面的“難以查找的頁面和功能”部分中討論。
4.太多內(nèi)容
就像過度刺激和選項(xiàng)過多的問題一樣,提供過多的內(nèi)容會將用戶的工作記憶拉向不同的方向。
顯然,你希望展現(xiàn)的只是重要的內(nèi)容,但對于一些網(wǎng)站來說,一切都是重要的,如果你的網(wǎng)站也有非常多的內(nèi)容,為了避免讓用戶產(chǎn)生困惑,應(yīng)該對內(nèi)容信息進(jìn)行和里的組織規(guī)劃。
Arngren的問題并不是它展示了很多的產(chǎn)品,而是它同時展示了太多的產(chǎn)品。在組織結(jié)構(gòu)上的調(diào)整將會給網(wǎng)站帶來更好的體驗(yàn)。
解決方案
如上所述,George Miller的解決策略是“分塊”,將需要展示的大量內(nèi)容以可管理的方式組合起來,以便于記憶,電話號碼分為國家代碼,區(qū)號,一組三位數(shù)和兩組四位數(shù)字便于記憶,而一連串的11個數(shù)字會很難被記住。
你想在商店主頁上放大量產(chǎn)品的圖片嗎?比起將它們?nèi)苛_列出來,不如通過他們的類型將他們分組羅列。Etsy通過根據(jù)不同的店鋪將產(chǎn)品進(jìn)行分組展示。
還有文本組塊,文本組塊包括簡短的自然段,合理利用標(biāo)題和副標(biāo)題以及足夠的留白。
對于需要大量數(shù)據(jù)的長表單字段,可以嘗試采用多步驟表單。長表單可能會令人生畏,有時會導(dǎo)致用戶流失。你可以將表單的信息分在不同的頁面里,減少信息過量給用戶帶來的影響。記得一定要有一個進(jìn)度標(biāo)記來讓用戶知道還剩下多少頁。(可以總結(jié)為復(fù)雜的頁面簡單化)
購買機(jī)票總是涉及填寫大量的信息,其中沒有一項(xiàng)是多余的。Virgin Atlantic通過將其分解在多個單頁面上填寫來改善其繁瑣的體驗(yàn):選擇航班,填寫乘客信息,輸入付款詳細(xì)信息等。將所有這些信息放在一個長頁面上會對用戶造成負(fù)擔(dān),也有可能會放棄購買。
5.模棱兩可的界面
認(rèn)知超負(fù)荷的罪魁禍?zhǔn)紫染褪怯脩艚缑婊靵y。永遠(yuǎn)不要讓用戶花費(fèi)大量的時間來弄清楚他們?nèi)绾尾拍芡瓿上胍哪繕?biāo),以及花費(fèi)時間來弄清楚圖標(biāo)的含義是什么。
并非所有用戶都是經(jīng)驗(yàn)豐富的,從而可以理解SpeedCrunch這種含義模糊的圖標(biāo)。即使他們能夠識別代表Windows系統(tǒng)和Mac OS X系統(tǒng)的符號,那么位于右下角的那兩個圖標(biāo)也會讓用戶迷茫。
解決方案
使用用戶已經(jīng)熟知的視覺提示。用戶通常會用他所熟悉的符號來進(jìn)行操作,即便是在以前從未使用過的網(wǎng)站上也是這樣。如果你覺得沒有新意,可以融合品牌特征巧妙的結(jié)合成為用戶所熟悉的形式。Home Depot雖然運(yùn)用了較為普遍的圖標(biāo),但同時也賦予了他們品牌獨(dú)有的橙色。
標(biāo)準(zhǔn)標(biāo)簽(如“聯(lián)系人”和“提交”)的按鈕比非傳統(tǒng)標(biāo)簽(如“地址”或“開始”)更容易識別。通常已知的標(biāo)簽可以提高用戶的瀏覽體驗(yàn),而不常見的標(biāo)簽會讓用戶暫停以了解按鈕的功能。不要為了個性化而喪失了識別性。
另外,你如果真的需要一個從未見過的圖標(biāo)該怎么辦呢?如果這樣,可以運(yùn)用現(xiàn)實(shí)生活中的場景展示來讓圖標(biāo)進(jìn)行自我解釋,這種做法是連接現(xiàn)實(shí)和虛擬的橋梁。例如:早期的互聯(lián)網(wǎng)先驅(qū)選擇了一個信封來代表電子郵件,因?yàn)樾欧馐青]件系統(tǒng)的明顯標(biāo)志。
此外,要避免含義模糊的圖標(biāo),特別是可能還會被誤認(rèn)為是其他含義的圖標(biāo),就像下列Issuu的圖標(biāo),有些是被人熟知的,但有一些卻不是。如果用戶必須通過點(diǎn)擊這個圖標(biāo)來發(fā)現(xiàn)它的功能,這就會中斷他們的操作進(jìn)程。
任何一個表意不清的圖標(biāo)都應(yīng)該附帶說明,告訴用戶怎樣操作。新的并且不常見的用戶界面,就需要更多的分步教程。例如,Slack就給出了一個完整的視頻引導(dǎo)來說明界面的操作流程。
6.難以查找的頁面和功能
即使用戶已經(jīng)擁有他們所需要的一切,但他們可能還是不知道如何去尋找它。這樣就會讓用戶費(fèi)盡腦力去尋找他們所需要的。作為用戶體驗(yàn)中不可或缺的元素,導(dǎo)航應(yīng)該放在明顯的地方,給用戶信心去任意瀏覽網(wǎng)站而不會迷失。
如果你覺得漢堡包圖標(biāo)不好,那可以在看看Mojo Yogurt,它會要求你將鼠標(biāo)懸停在左上角的徽標(biāo)上以顯示導(dǎo)航菜單。
雖然圍繞著Logo有個小的動效,但對于整個屏幕的顏色和動效來說,它并不夠明顯。
解決方案
根據(jù)用戶的偏好理順你的信息架構(gòu)。你的目標(biāo)用戶群可能并不認(rèn)可你的做法。因此,要想他們學(xué)習(xí)如何組織網(wǎng)站,卡片分類試驗(yàn)會告訴你你的用戶將會如何對頁面和話題進(jìn)行分類。
如果你還希望通過組合頁面和菜單項(xiàng)來消除多余的頁面。設(shè)計工作室Waaark通過將其工作室的簡介,團(tuán)隊(duì)成員簡介和聯(lián)系信息這三個頁面合并到一個頁面來簡化他們的導(dǎo)航。
如果某些功能或特征比其他功能或特征更重要,可以運(yùn)用視覺手段來吸引他們的注意,增加大小,添加動畫以及使用對比色以此來吸引用戶的眼球。
PayPal期望有更多的老用戶而不是新用戶,并通過設(shè)置登錄按鈕與吸引注意力的白色塊背景來迎合前者。
7.內(nèi)部不一致
假設(shè)網(wǎng)站的主頁使用標(biāo)準(zhǔn)的藍(lán)色和帶下劃線的文本來表示鏈接,但另一個頁面僅使用藍(lán)色而沒有下劃線。當(dāng)用戶瀏覽其他頁面時就會停下來去想,“它沒有下劃線,這還是個鏈接么?”他們甚至可能不會再去關(guān)心鏈接,而會被其他頁面的不統(tǒng)一分散注意力從而影響整體的用戶體驗(yàn)。
要記住,最好的用戶體驗(yàn)是不會被用戶所察覺的,而像上面這樣通常都會被注意到。
總結(jié)
1、認(rèn)知過載是影響工作記憶的因素。當(dāng)過多的信息阻礙決策和整體經(jīng)驗(yàn)時,就會發(fā)生認(rèn)知過載。
2、使用不同的內(nèi)容類型和結(jié)構(gòu)化頁面組合,可以避免視覺混亂。
3、隱藏式菜單可以幫助用戶一次管理可用選項(xiàng)的數(shù)量,但降低了可發(fā)現(xiàn)性。
4、“分塊”和“步驟”等的方式可以防止認(rèn)知過載。
5、UI元素和圖標(biāo)應(yīng)該基于用戶現(xiàn)有的認(rèn)知上,這樣他們就不需要過多的思考,新的獨(dú)特的功能要加上解釋說明。
6、圍繞用戶的實(shí)際思考方式構(gòu)建你的信息架構(gòu)??ㄆ诸惖瓤捎眯詼y試可以為你的目標(biāo)群體揭示最直觀的導(dǎo)航方案。
7、視覺和功能的不一致,以及打字錯誤和語法錯誤,都會分散用戶的注意力。
8、盡可能減少冗余。另外,請留意如何最大限度地減少用戶操作步驟量和他們必須花費(fèi)的精力。
文章來源:UI中國
藍(lán)藍(lán)設(shè)計( sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)。
一 - 字面量方式和new方式
?每次創(chuàng)建數(shù)組或?qū)ο蟮臅r候,都能用以下兩種方法創(chuàng)建:咦?有什么區(qū)別呢?還有哪些可以有這兩種方法呢?我到底用哪一種呢?
var arr = [];//字面量方法創(chuàng)建數(shù)組
var arr = new Array();//實(shí)例化構(gòu)造函數(shù)方法創(chuàng)建數(shù)組
var obj = {};//字面量方法創(chuàng)建對象
var obj = new Object();//實(shí)例化構(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)造方法,減少代碼,減少代碼運(yùn)算量。
那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é)束后,還要釋放該堆棧。
————————————————
如果非要代碼實(shí)現(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è)計細(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)于撤銷,我們可以從下面幾點(diǎn)來聊聊:
它的意思是,依次撤銷之前的操作。
在尼爾森可用性原則里,就有一條類似的原則存在,即 User control and freedom(允許用戶自由操控)。
很多人把這條原則解讀為「撤銷原則」,本質(zhì)上是沒什么問題的,因?yàn)槌蜂N確實(shí)需要讓用戶自由操控。但是早期的撤銷,并不「自由」,而僅僅只是讓用戶在一定范圍內(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)。
相對早期撤銷的使用邏輯,后來可多次撤銷的操作在自由度上,確實(shí)是好了那么一些。
它就是在「單次撤銷」的基礎(chǔ)上,給了用戶「多次撤銷」的機(jī)會,并讓用戶回到自己滿意的位置。
但是這里的撤銷,它還不夠自由,因?yàn)樗恰敢来纬蜂N」—— 每一步撤銷用戶都得經(jīng)歷。
當(dāng)撤銷隨著用戶場景的變化而進(jìn)化之后,才真正具備了比較自由的操控方式。
讓撤銷具備「選擇屬性」,必須與另一個元素做一個結(jié)合,那就是「歷史記錄」。
繼續(xù)拿 PS 舉例。
大家看到上面這張圖,當(dāng)你在 PS 的畫板里完成了一系列操作之后,發(fā)現(xiàn)后面有一些東西做得不是很好,想回去重做,但是依次撤銷又覺得不好把控,于是就通過操作歷史,來選擇具體回退到哪一步。
相比于依次序撤銷,選擇性撤銷的自由度更高,也更符合其對尼爾森可用性第三條原則的解讀。
或者再通俗一點(diǎ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ù)原。
通俗點(diǎn)講,就是當(dāng)用戶撤銷到之前的操作,進(jìn)行了新的操作行為,那么原來舊的那條線路就被廢棄了??磮D:
當(dāng)用戶操作到第 5 步,然后撤銷至第 3 步,再執(zhí)行一次新的操作,那么步驟 4 與步驟 5 就會被廢棄。
大家知道很多設(shè)計師都會做版本記錄,因?yàn)?PS 的歷史記錄雖然在撤銷操作上方便了很多,但無法復(fù)原之前的操作邏輯依舊不能滿足一些設(shè)計師的訴求。
畢竟不廢棄的話,撤銷操作的邏輯就會很復(fù)雜;且通?!高x擇性撤銷」伴隨解釋,說明用戶清楚知道自己當(dāng)前行為會造成何種后果。但它并不能解決用戶操作過程中實(shí)際存在的這類問題。
而「選擇性撤銷」的「版本記錄」可以解決這個問題,來看下面這個例子。
結(jié)合歷史/版本記錄,比如用 Notion 或石墨寫了一篇文章,它們都會有版本記錄,過程中會根據(jù)時間維度與內(nèi)容變更維度來判斷是否進(jìn)行保存,那么當(dāng)用戶想回滾到之前的那段內(nèi)容,只要對這些版本進(jìn)行點(diǎn)擊查看,然后選擇具體撤回到哪一步即可。
比如我今天(2019.11.05)早上花了半小時最后對文章做了一次整理,添加了圖片,它就會記錄其中的操作變化,且可進(jìn)行選擇。這里無論如何撤至哪一步,其它內(nèi)容都會有留存,不會消失。
也許這已經(jīng)不是通常意義上的撤銷,但它確實(shí)是撤銷的升級版。
這樣看起來是不是自由操控度要高很多呢?
到這里,我只是講了「撤銷」的特性,下面來聊下它在界面設(shè)計中是如何應(yīng)用的。
我們現(xiàn)在在很多產(chǎn)品里都能看到撤銷,在網(wǎng)頁里與移動 App 中,它的使用形式雖然多樣,但本質(zhì)上并沒什么區(qū)別。
大多就是單次撤銷,因?yàn)橛貌坏蕉啻纬蜂N,多次撤銷更多是在工具里被使用。
比如油管的撤銷使用:
當(dāng)用戶對一個視頻進(jìn)行「不感興趣」的操作時,視頻內(nèi)容會變成右邊這樣,可撤銷。這個內(nèi)容會一直存在直到用戶刷新頁面時才會消失。
類似的還有淘寶網(wǎng)頁端的購物車,當(dāng)刪除添加的任一商品后,其也會在附近位置出現(xiàn)可撤銷的操作。
在網(wǎng)頁產(chǎn)品中,撤銷的運(yù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:
它有單次撤銷,也可以重做,還能多次撤銷,多次撤銷就是點(diǎn)擊「查看修改內(nèi)容」之后,右圖出現(xiàn)的樣子,它會把所有步驟都呈現(xiàn)出來,給予用戶選擇具體撤銷至哪一步。
其實(shí)更多的也就是這樣了,但是,為什么呢?為什么在非工具類產(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)榇蟛糠中鑷?yán)謹(jǐn)?shù)牟僮鞫紩卸未_認(rèn),并不嚴(yán)重的操作也就不需要任何提示。即使是上述提到的郵箱刪除,沒有二次確認(rèn)也是因?yàn)樗谐蜂N作為提示且還有回收站允許用戶檢查確認(rèn)。
所以,除非是場景與之密切相關(guān)的,比如社交產(chǎn)品內(nèi)容發(fā)送后的撤回功能。
微信早期的撤回,只是撤銷,它并不具備「重做」屬性,現(xiàn)在撤回,內(nèi)容會重新出現(xiàn)在輸入框讓用戶重新編輯。
它們之間的差異是:它并不會產(chǎn)生嚴(yán)重后果,但確實(shí)會產(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é)。
這篇文章講了很多內(nèi)容,我在這里梳理下:
所以當(dāng)你設(shè)計的產(chǎn)品要用到撤銷時,也要注意這些細(xì)節(jié)問題。
這就是本篇文章的所有內(nèi)容了。其實(shí)這篇文章里包含的內(nèi)容有很多,而且有很多爭議點(diǎn)我都沒放出來,直接一筆帶過給出正確結(jié)論了。寫這種大部頭文章太累,要思考的點(diǎn)很多,需要幫助讀者從多視角排雷,很可能導(dǎo)致初學(xué)者在讀文章過程中出現(xiàn)閱讀吃力的問題。所以之后還是會挑一個點(diǎn)來寫吧。
文章來源:優(yōu)設(shè)
功能描述:右擊表格中對應(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;
}
本文對幾種常見的異常狀態(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ò)異常等,因?yàn)楫惓顟B(tài)出現(xiàn)的概率是較低的,所以異常狀態(tài)也常常會被忽略,等到實(shí)際碰到的時候才會意識到原來還有這種狀態(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ò)連接權(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ò)異常的情況:
(2)網(wǎng)絡(luò)連接狀況
在斷網(wǎng)(打開飛行模式)、弱網(wǎng)(手機(jī)信號差)的情況下, 也無法正常獲取數(shù)據(jù)。
當(dāng)網(wǎng)絡(luò)異常時,用戶點(diǎn)擊進(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è)置和稍后再嘗試刷新頁面,稍后再試是因?yàn)槿蹙W(wǎng)環(huán)境是暫時的,比如在地鐵上高鐵上或者某處手機(jī)信號接收較差的地方。
(2)當(dāng)用戶點(diǎn)擊操作當(dāng)前頁面時,比如上拉加載頁面、下拉刷新頁面,點(diǎn)贊、關(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)行歸納,均為流量警告方式。
總結(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è)置截圖如下:
針對以上情況,表現(xiàn)狀態(tài)為“網(wǎng)絡(luò)異?!?,則參照網(wǎng)絡(luò)異常的設(shè)計規(guī)范;表現(xiàn)狀態(tài)為“流量警告”,則參照流量警告的設(shè)計規(guī)范。
服務(wù)器出錯的情況是較少出現(xiàn)的,若出現(xiàn)服務(wù)器異常,其異常的時間也較為短暫。
一般不提示具體原因,處理方式為進(jìn)入新頁面的話則以缺省頁(文案或是文案+插畫)的形式進(jìn)行提示+重試按鈕,例如,進(jìn)入小米金融貸頁面時服務(wù)器出現(xiàn)異常,缺省頁提示錯誤原因同時提供重試按鈕。
點(diǎn)擊操作的話則以toast或?qū)υ捒虻男问竭M(jìn)行提示并重試,比如下圖的段友a(bǔ)pp,服務(wù)器出錯,刷新頁面后進(jìn)行toast提示;前段時間超級火的zao應(yīng)用,朋友圈火爆傳播,一度造成服務(wù)器訪問過載,制作視頻的時候應(yīng)用給出了對話框提示。
在數(shù)據(jù)加載過程中,導(dǎo)致異常的原因可能是:
1、網(wǎng)絡(luò)異常導(dǎo)致加載失敗
2、服務(wù)器請求數(shù)據(jù)失敗導(dǎo)致加載失敗
1、如果是因?yàn)榫W(wǎng)絡(luò)異常導(dǎo)致加載失敗,處理方式參照網(wǎng)絡(luò)異常的設(shè)計規(guī)范。
2、如果是服務(wù)器請求數(shù)據(jù)失敗,處理方式參照服務(wù)器異常的設(shè)計規(guī)范。
空狀態(tài)就是指頁面當(dāng)前無內(nèi)容,主要在以下場景下會出現(xiàn)空狀態(tài)的情況:
當(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)推薦,最后通過埋點(diǎ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)被刪除,點(diǎn)擊進(jìn)入二級頁面后的提示如下:
功能已上線,后期進(jìn)行產(chǎn)品升級或迭代功能正在開發(fā)中,功能入口沒有進(jìn)行關(guān)閉還是允許用戶訪問,通常會在用戶進(jìn)入該頁面之后進(jìn)行對話對話框提示,告知原因。
以上對幾種常見異常狀態(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)理
首先,跨域是什么?
只要協(xié)議、域名、端口有任何一個不同,都被當(dāng)作是不同的域。為什么三者任何一個不同就會產(chǎn)生跨域呢,想想也很容易知道,要是很隨便引用什么外部文件,不同標(biāo)簽下的頁面引用類似的彼此的文件,瀏覽器很容易懵逼的,保障不了安全問題,但在安全限制的同時也給注入iframe或是ajax請求上帶來了不少麻煩。所以我們要通過一些方法使本域的js能夠操作其他域的頁面對象或者使其他域的js能操作本域的頁面對象
但有兩點(diǎn)至少要清楚:
如果是協(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)點(diǎn):它不像XMLHttpRequest對象實(shí)現(xiàn)的Ajax請求那樣受到同源策略的限制;它的兼容性更好,在更加古老的瀏覽器中都可以運(yùn)行,不需要XMLHttpRequest或ActiveX的支持;并且在請求完畢后可以通過調(diào)用callback的方式回傳結(jié)果。
JSONP的缺點(diǎn):它只支持GET請求而不支持POST等其它類型的HTTP請求;它只支持跨域HTTP請求這種情況,不能解決不同域的兩個頁面之間如何進(jìn)行JavaScript調(diào)用的問題;無法判斷它是否請求成功,只能通過timeout
3.CORS跨域
實(shí)現(xiàn)CORS通信的關(guān)鍵是服務(wù)器端,只要服務(wù)端那邊實(shí)現(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只能實(shí)現(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)格系統(tǒng)的基礎(chǔ)上,以網(wǎng)格使用邏輯詳細(xì)的介紹了在實(shí)際的應(yīng)用中應(yīng)該如何才能把劃分的網(wǎng)格當(dāng)做工具使用。
文章來源:站酷
二 - 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è)計的案例、為什么要基于場景化做設(shè)計和如何進(jìn)行場景化設(shè)計 4 個方面為你完整梳理場景化設(shè)計思維的知識點(diǎn)。
「場景」在百度百科里的定義是:戲劇、電影中的場面,泛指情景。情景又指:
在戲劇或影視劇里,場景由人物,時空,事件(行為),環(huán)境(社會環(huán)境和自然環(huán)境)等要素構(gòu)成。
互聯(lián)網(wǎng)中的「場景」我把它分為兩類,一類是為了實(shí)現(xiàn)用戶目標(biāo)而產(chǎn)生的場景,這種類型的場景需要明確用戶目標(biāo),可能并不需要涵蓋用戶是怎么實(shí)現(xiàn)目標(biāo)的。這類場景指根據(jù)用戶的精準(zhǔn)需求,為其提供精準(zhǔn)服務(wù),用明確的差異化服務(wù)給用戶提供一個使用產(chǎn)品的動機(jī)。比如微博和微信,微信定位是熟人社交,微博則是陌生人社交。另一類是更加精細(xì)化的場景,這類場景需要明確用戶操作流程。本文主要針對第二類場景展開。
場景化設(shè)計指基于對場景的分析,得出用戶痛點(diǎn)與需求,結(jié)合前后場景預(yù)判用戶目標(biāo),通過設(shè)計提高用戶效率,給予用戶驚喜與感動。
場景要素包括:4W+1H,即Who人、When時間、Where地點(diǎn)、What事件 、How環(huán)境,什么人,在什么時候,在什么地方,做了什么事情,所處的環(huán)境如何。其中 Where 又包括線上地點(diǎn)和線下地點(diǎn),線下指現(xiàn)實(shí)中的定位,可以通過手機(jī)信號塔數(shù)據(jù)(GPS),Wifi 連接等獲?。痪€上指用戶所處的具體頁面。
如:用戶(who)早上上班(when)在地鐵上(where)看電子書(what),地鐵上人多嘈雜且操作不方便(how)。再比如用戶(who)中午(when)在辦公室里(where)點(diǎn)外賣(what),肚子很餓還不知道吃什么(how)。五要素就像口訣,幫助我們?nèi)婵焖俚孛枋鰣鼍啊?
為幫助大家更好的理解場景化設(shè)計,這里基于上面提到的場景五要素舉一些例子。
人是變量:用戶不同,看到的信息不同。隨著大數(shù)據(jù)和智能推薦技術(shù)的普及,越來越多的產(chǎn)品通過挖掘不同用戶的喜好,生成用戶畫像,為每位用戶提供「千人千面」的個性化內(nèi)容。這樣的產(chǎn)品大家都很熟悉,比如抖音,淘寶,微博,今日頭條。
時間是變量:時間不同,看到的信息不同。比如小米 MIUI11 的效率革新功能「智能出行」,當(dāng)在出行類 app 上定好行程后,MIUI11 就會自動將該行程記錄在負(fù)一屏顯示并同步日歷,同時會根據(jù)出行的時間點(diǎn),在通知欄實(shí)時更新提示:
再比如在 Google Maps 的 app 里開啟導(dǎo)航時,如果目的地在預(yù)計到達(dá)時間還沒有開門,或者快要/已經(jīng)關(guān)門了的話,會有個彈窗提醒。
還有螞蟻森林的頁面會根據(jù)用戶打開的時間進(jìn)行變化(白天與夜晚模式)等等,這些都是充分考慮了場景中時間這一變量,才有如此暖心的設(shè)計。
地點(diǎn)是變量:同一個用戶,在不同地點(diǎn)看到的信息不同。比如,大眾點(diǎn)評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 中的備忘錄頁面,將「添加」按鈕移到了右下角。為什么?因?yàn)槭謾C(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)鍵詞,我們就能立刻接收到他們的消息提示。
通過上面的舉例想必大家已經(jīng)了解到了基于場景做設(shè)計的好處。由于與用戶的空間相隔,設(shè)計師無法感知用戶在真實(shí)場景中使用產(chǎn)品的具體情況。通過場景化設(shè)計的方法,對用戶使用場景進(jìn)行分析與預(yù)期,可以幫助設(shè)計師找到用戶與場景的內(nèi)在聯(lián)系,探索新的功能及交互方式。
可以概括為以下四步。
根據(jù)用戶的使用流程和行為路徑列舉場景,這里以乘坐飛機(jī)(手機(jī)購票)為例,列舉乘坐飛機(jī)涉及到的關(guān)鍵場景:
通過對關(guān)鍵場景的詳細(xì)描述,我們將摸不著的用戶場景像過電影一樣在眼前一一呈現(xiàn),有利于我們發(fā)現(xiàn)很多想不到或者通過調(diào)研得不到的細(xì)節(jié),幫助我們發(fā)現(xiàn)用戶真正的痛點(diǎn)與需求,洞察設(shè)計機(jī)會點(diǎn)。
完成了第一步的場景列舉,我們對流程中涉及的場景有了深刻的了解。下一步就是對場景的判斷與分析,挖掘機(jī)會點(diǎn)。機(jī)會點(diǎn)挖掘有兩個方向,一是通過分析當(dāng)前場景存在的痛點(diǎn)和需求挖掘機(jī)會點(diǎn),二是通過對用戶下一步目標(biāo)的預(yù)判尋找機(jī)會點(diǎn)。
通過分析當(dāng)前場景存在的痛點(diǎn)和需求挖掘機(jī)會點(diǎn)
支付寶「朋友」界面,當(dāng)用戶輸入某數(shù)值時,輸入框上方會自動顯示「給對方轉(zhuǎn)賬***元」按鈕,用戶可點(diǎn)擊該按鈕完成轉(zhuǎn)賬。這是因?yàn)榻?jīng)常有用戶誤以為輸入數(shù)值發(fā)送即完成了轉(zhuǎn)賬,導(dǎo)致很多尷尬的狀況出現(xiàn)?;谠搱鼍跋碌耐袋c(diǎn)與需求,支付寶做了這個改進(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ī)會點(diǎn)
第二個方法是通過對用戶當(dāng)前場景的分析,預(yù)判用戶下一步的行為與目標(biāo),從而尋找當(dāng)前場景的機(jī)會點(diǎn)。
如何預(yù)期用戶下一步目標(biāo)?有三個方法:
在谷歌瀏覽器,當(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)簽頁,提高了用戶的使用效率。
在將機(jī)會點(diǎn)轉(zhuǎn)化為具體的設(shè)計時,有兩個可作為依據(jù)的設(shè)計原則,分別為,情感化。
實(shí)現(xiàn)有以下幾個方法:
行動點(diǎn)前置
通過對用戶下一目標(biāo)的預(yù)測,將用戶目標(biāo)在當(dāng)前場景展示,縮短操作流程,達(dá)到的目標(biāo)。如淘寶首頁的 tab 欄會根據(jù)每個用戶的瀏覽記錄預(yù)測用戶目標(biāo),千人千面?zhèn)€性化展現(xiàn),縮短了用戶查找商品的路徑,提高商品購買效率。
行動點(diǎn)置換
還是拿淘寶舉例,淘寶底部的第一個導(dǎo)航,當(dāng)用戶滑動首頁下方的商品流時,該按鈕由首頁變成置頂。
行動點(diǎn)相關(guān)提示
意思是根據(jù)用戶當(dāng)前目標(biāo)或下一步目標(biāo)進(jìn)行相關(guān)的提示。如支付寶朋友頁面,當(dāng)上滑時,會出現(xiàn)「找人轉(zhuǎn)賬」的提示,點(diǎn)擊進(jìn)入朋友列表的純凈模式(去掉了服務(wù)通知等跟轉(zhuǎn)賬無用的列表),提高了用戶尋找的效率。
再比如,網(wǎng)易郵箱,當(dāng)郵件中提到附件,但是沒有上傳附件時,點(diǎn)擊發(fā)送后,系統(tǒng)彈出下方的提示,解決了用戶常常忘記添加附件的困擾。
突出行動點(diǎn)
根據(jù)用戶當(dāng)前目標(biāo)或下一步目標(biāo)突出關(guān)鍵按鈕,幫助用戶快速找到關(guān)鍵操作,吸引用戶點(diǎn)擊,降低了用戶思考成本,提升效率。運(yù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è)計方案→驗(yàn)證設(shè)計價值(來源于周姮—知乎螞蟻金服體驗(yàn)技術(shù)部的一次分享)。
在谷歌表格每列的開頭依次輸入「Pride」五個字母后,表格會變成彩虹樣式。
網(wǎng)易云音樂在用戶生日時會變成「生日快樂」的蛋糕樣式,點(diǎn)擊進(jìn)去的音樂列表,第一首歌是生日歌,讓人心里暖暖的。
最后一步就是設(shè)計方案的驗(yàn)證,設(shè)計方案能否幫助用戶縮短操作流程?降低用戶思考成本?幫助用戶地完成任務(wù)?是否能打動用戶給他們帶來驚喜與溫暖?通過可用性測試及上線后的數(shù)據(jù)反饋,幫助我們更好的優(yōu)化設(shè)計方案。
1. 什么是場景化設(shè)計?
場景五要素:4W+1H,即Who人、When時間、Where地點(diǎn)、What事件 、How環(huán)境,什么人,在什么時候,在什么地方,做了什么事情,所處的環(huán)境如何。
2. 有哪些場景化設(shè)計的例子?
3. 為什么要進(jìn)行場景化設(shè)計?
4. 怎么進(jìn)行場景化設(shè)計?
藍(lán)藍(lán)設(shè)計的小編 http://sillybuy.com