首頁

認(rèn)識(shí) ESLint 和 Prettier

seo達(dá)人

ESLint

先說是什么:ESLint 是一個(gè)檢查代碼質(zhì)量與風(fēng)格的工具,配置一套規(guī)則,他就能檢查出你代碼中不符合規(guī)則的地方,部分問題支持自動(dòng)修復(fù)。


使用這么一套規(guī)則有什么用呢?如果單人開發(fā)的話倒是沒什么了,但是一個(gè)團(tuán)隊(duì)若是存在兩種風(fēng)格,那格式化之后處理代碼沖突就真的要命了,統(tǒng)一的代碼風(fēng)格真的很重要!


(其實(shí)以前自己做一個(gè)項(xiàng)目的時(shí)候,公司電腦和家庭電腦的代碼風(fēng)格配置不一樣,在家加班的時(shí)候也經(jīng)常順手格式化了,這么循環(huán)了幾次不同的風(fēng)格,導(dǎo)致 diff 極其混亂

想提高設(shè)計(jì)轉(zhuǎn)化率,按鈕應(yīng)該放在左邊還是右邊?

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

任何一名設(shè)計(jì)師應(yīng)該都會(huì)接觸到運(yùn)營活動(dòng)頁,產(chǎn)品落地頁此類需求。而這些落地頁設(shè)計(jì)需求的業(yè)務(wù)目標(biāo)衡量標(biāo)準(zhǔn)都相當(dāng)明確——即轉(zhuǎn)化率。再進(jìn)一步,與我們的設(shè)計(jì)輸出直接相關(guān)的就是首頁轉(zhuǎn)化率/點(diǎn)擊率。這些數(shù)據(jù)通過埋點(diǎn)能很輕易地獲得,一般情況下,產(chǎn)品經(jīng)理會(huì)提前在需求文檔中標(biāo)明需要埋點(diǎn)的地方(埋點(diǎn)簡單說就是測量某個(gè)位置或者交互節(jié)點(diǎn)的具體數(shù)據(jù),例如發(fā)生了多少次點(diǎn)擊),獲得數(shù)據(jù)用于驗(yàn)證產(chǎn)品最終是否符合預(yù)期,是否達(dá)到了理想的轉(zhuǎn)化效果。

叮~ 講到這我們應(yīng)該明確了一件事,整個(gè)落地的設(shè)計(jì)其實(shí)最終都是為那個(gè)關(guān)鍵數(shù)據(jù)服務(wù),無論是點(diǎn)擊率還是轉(zhuǎn)化率,達(dá)到預(yù)期甚至超出預(yù)期,那你的設(shè)計(jì)就完美地完成了任務(wù),這也是驗(yàn)證設(shè)計(jì)有效性的主要方法,將設(shè)計(jì)與數(shù)據(jù)關(guān)聯(lián),用可量化的數(shù)據(jù)指標(biāo)來驗(yàn)證偏感性的視覺工作。

就這樣,設(shè)計(jì)與產(chǎn)品/運(yùn)營的世紀(jì)大戰(zhàn)開始了。因?yàn)槲覀兌加辛艘粋€(gè)共同的目標(biāo),因此在產(chǎn)品的最終收益、期望效果方面互相都很明確。但在實(shí)現(xiàn)手段上,我們很輕易地產(chǎn)生了分歧。主要分歧點(diǎn)就是「按鈕在左還是按鈕在右」這個(gè)問題上。我們需要理解,這不是一個(gè)簡單的交互問題,因?yàn)樗渲袚诫s了商業(yè)內(nèi)容。如果這是一個(gè)交互問題,那我們很容易判斷,例如彈窗的主次按鈕應(yīng)該主右副左,這既符合平臺(tái)規(guī)范,也符合用戶認(rèn)知和操作習(xí)慣。

然而作為一個(gè)強(qiáng)商業(yè)屬性的落地頁,按鈕在左或者按鈕在右都有其合理性。我選擇左,而運(yùn)營同學(xué)代表他們團(tuán)隊(duì)要求右。 于是我敗下陣來,當(dāng)然,雖然表面上設(shè)計(jì)師輸了,但我們怎么能服輸,于是我想盡辦法來驗(yàn)證左側(cè)放置按鈕才是更有利于轉(zhuǎn)化的形式。下面我們來看看不同的傾向?qū)?yīng)的設(shè)計(jì)原理。

左與右的矛盾

產(chǎn)生左與右的爭執(zhí)其實(shí)主要源于設(shè)計(jì)與需求方的兩個(gè)判斷方向。首先說一下我的判斷邏輯,按照已知經(jīng)過驗(yàn)證的理論,即 F 閱讀順序(尼爾森的用戶閱讀視線模型),用戶瀏覽落地頁的順序應(yīng)當(dāng)是從左往右自上而下,因此左上角的信息最早觸達(dá)用戶。在當(dāng)前主流的首圖式落地頁樣式下,首圖 banner 中的內(nèi)容應(yīng)當(dāng)置于左側(cè),以使用戶更快地獲知產(chǎn)品的關(guān)鍵信息。

在落地頁首圖的體驗(yàn)文案本身就是一個(gè)設(shè)計(jì)的覆蓋范圍,因?yàn)樗苯雨P(guān)系到首頁的視覺傳達(dá)效率,即用戶需要花費(fèi)多長時(shí)間、多少精力才能理解你的產(chǎn)品。我們往往在首頁體驗(yàn)文案中采用主標(biāo)題加副標(biāo)題的形式,著重解釋這個(gè)產(chǎn)品是個(gè)什么東西、用戶能從這獲得什么,往往通過主副文案搭配的形式,來完成整個(gè)大意的闡述。

基于此,核心內(nèi)容置于左側(cè),用戶在快速掃視時(shí)能夠第一時(shí)間獲知產(chǎn)品信息,了解產(chǎn)品利益點(diǎn),這與我們精心準(zhǔn)備整個(gè)網(wǎng)站,以及精心準(zhǔn)備誘導(dǎo)力文案的方法相契合。這是我做出內(nèi)容置于左側(cè)的設(shè)計(jì)決策的主要思路??梢钥闯?,我這里主要參考的是 F 閱讀模型這一理論,根據(jù)這個(gè)經(jīng)驗(yàn)我得到的結(jié)論是 重要的信息應(yīng)當(dāng)擺放在左側(cè)以使用戶立即觸達(dá)核心信息,這將有利于接下來的引導(dǎo)或者轉(zhuǎn)化。

另一方面,運(yùn)營同學(xué)又是基于什么考慮決定將核心內(nèi)容放在右側(cè)的呢?答案是操作習(xí)慣,理論化的話可以用費(fèi)茨定律概括,(目標(biāo)距離用戶距離越短,用戶觸達(dá)的效率越高)??紤]到大部分用戶使用右手操作,鼠標(biāo)也大都懸停在屏幕右側(cè),因此,按鈕置于右側(cè),用戶點(diǎn)擊的路徑變得更短,也就更容易觸達(dá)和轉(zhuǎn)化(純體驗(yàn)角度或者說效率角度)。

你仔細(xì)閱讀這部分內(nèi)容,從分歧點(diǎn)到各自的理論支撐實(shí)際上都沒有太大的漏洞,為什么沒有漏洞?因?yàn)榇_實(shí)都沒有錯(cuò)誤,也都存在其合理性。例如我們常用的購物 APP 會(huì)把按鈕置于右下角,用戶操作起來必然比左上角的按鈕更加容易。那么在這兩種分析都合理的背景下,我們要對比或爭論的其實(shí)不是哪個(gè)判斷是錯(cuò)誤的,而是哪個(gè)判斷更有利,更合理,能夠帶來更多的數(shù)據(jù)轉(zhuǎn)化。因此,這個(gè)問題最終由對錯(cuò)問題,轉(zhuǎn)化為一個(gè)優(yōu)劣問題。

左與右的妥協(xié)(一種結(jié)論)

有些人很機(jī)智,這個(gè)時(shí)候肯定會(huì)想,既然左邊最容易觸達(dá)信息,右邊最容易觸達(dá)按鈕操作,那左邊放置內(nèi)容,右側(cè)放置操作不就完美解決了嗎?哎呀,讀者真聰明。

由于 F 閱讀的邏輯,將展示性質(zhì)的「內(nèi)容」放置于左側(cè),使用戶更快觸達(dá)關(guān)鍵信息,由于費(fèi)茨定律,以及多年來養(yǎng)成的用戶習(xí)慣(操作組件在右側(cè),當(dāng)然現(xiàn)在很多放在中間的情況)將需要執(zhí)行的操作置于右側(cè),使用戶快速交互并完成任務(wù)。有一定道理,甚至在實(shí)際落地產(chǎn)品中我們也能看到一些類似的設(shè)計(jì),例如豆瓣。 這是一種左與右的妥協(xié)

但需要注意的是,豆瓣產(chǎn)品的右側(cè)放置的是較為復(fù)雜的交互模塊,例如完整的登錄注冊模塊。在該場景下,用戶在交互路徑更短的右側(cè)區(qū)域執(zhí)行交互效率要明顯高于左側(cè)區(qū)域。

那么下面開始論述按鈕置于左側(cè)的觀點(diǎn)

論點(diǎn)一:排版的限制

豆瓣的形式對于落地頁產(chǎn)品,可能并不適用。主要有兩方面原因。我們都知道,產(chǎn)品落地頁首屏的組成為體驗(yàn)文案,主 CTA,插畫配圖三部分。常規(guī)做法是插畫作為一組信息置于一側(cè),文案加按鈕作為一組信息置于一側(cè)。因?yàn)?,體驗(yàn)文案與按鈕具有強(qiáng)關(guān)聯(lián)性,同時(shí)按鈕與文案作為一組信息,才能與另一側(cè)的插畫搭配構(gòu)建平衡的布局,呈現(xiàn)比較優(yōu)美的視覺效果。

請登錄后查看原圖,因此,豆瓣那種妥協(xié)方式并不適用于商業(yè)類落地頁。因?yàn)閮?nèi)容和操作本身是一體的,這源于排版的規(guī)整性的限制,按鈕和文案只能同時(shí)存在于一側(cè),如果刻意去追求左側(cè)內(nèi)容,右側(cè)操作,效果就像下面這樣。一方面,只靠文案和按鈕無法撐起左右兩個(gè)區(qū)域,一方面文案和按鈕被割裂開,用戶的視線由文案轉(zhuǎn)到按鈕的路徑過長,體驗(yàn)較差。(文案與按鈕成組后,用戶可以在閱讀內(nèi)容產(chǎn)生動(dòng)機(jī)后立即觸達(dá)交互按鈕并完成轉(zhuǎn)化)

論點(diǎn)二:文案與配圖孰輕孰重

如果你親自體驗(yàn)這兩種區(qū)別的落地頁(左圖右文/左文右圖),你會(huì)發(fā)現(xiàn)有一個(gè)共同點(diǎn),就是在某個(gè)區(qū)域的停留時(shí)長,沒錯(cuò)就是內(nèi)容區(qū)域。以下圖的頂部卡片區(qū)域?yàn)槔?,在閱讀時(shí)我的瀏覽情況是,大致地掃視左側(cè)的插畫,然后注視右側(cè)文字區(qū),了解文章的具體內(nèi)容,并在此區(qū)域停留較長時(shí)間,畢竟仔細(xì)閱讀需要花費(fèi)時(shí)間。

這就涉及到一個(gè)問題,插畫與內(nèi)容哪個(gè)更重要?其實(shí)答案很明顯,我們只需要舍棄掉其中一項(xiàng)來測試下,看看哪個(gè)內(nèi)容的缺失會(huì)對用戶理解設(shè)計(jì)傳達(dá)的語義產(chǎn)生較大影響。OK,我覺得沒必要測試了(虛晃一槍)。很明顯,刪除插畫后,我們?nèi)匀豢梢酝ㄟ^文章的標(biāo)題來獲知文章概要等關(guān)鍵信息,就像落地頁首屏的體驗(yàn)文案,即便沒有插畫我們也能通過首頁文案來獲知這個(gè)產(chǎn)品是什么,能夠?yàn)槲規(guī)硎裁础?

然而如果去掉關(guān)鍵信息,去掉標(biāo)題與按鈕,僅憑插畫我們無法分辨當(dāng)前頁面到底在講述什么東西。設(shè)計(jì)本身就像是人與人的交流,產(chǎn)品就是我們,而用戶則是我們的交流對象,去掉核心的文案,相當(dāng)于把我們自己變成了啞巴,而去掉插畫,最多相當(dāng)于我們交流時(shí)面無表情罷了。

因此,在商業(yè)落地頁中,我們以轉(zhuǎn)化為核心目標(biāo),而能夠更快地觸達(dá)最重要的信息顯然是明智之舉,因此我們希望將核心的文案內(nèi)容置于左側(cè)。

(另外,一圖勝千言的原理只適用于個(gè)別場景,例如數(shù)據(jù)可視化。設(shè)計(jì)人員通過將數(shù)值數(shù)據(jù)轉(zhuǎn)化為易于理解的柱狀圖扇形圖,來傳達(dá)數(shù)據(jù)結(jié)論。而視覺修飾性質(zhì)的插畫則無法做到準(zhǔn)確表意,我們通常在產(chǎn)品設(shè)計(jì)中見到的插畫更多的是在情感上和審美上給予我們一定的愉悅,但想要準(zhǔn)確描述關(guān)鍵信息,還是需要文字作為核心角色)

論點(diǎn)三:用戶會(huì)因?yàn)楸阌诓僮鞫a(chǎn)生動(dòng)機(jī)?

另一點(diǎn)同樣值得我們思考,即用戶真的會(huì)因?yàn)槟硞€(gè)按鈕更容易點(diǎn)擊而被轉(zhuǎn)化嗎?或者我們換個(gè)形式問,假設(shè)你是一名男性,你會(huì)因?yàn)榘粹o在鼠標(biāo)附近而選擇點(diǎn)擊購買女士內(nèi)衣嗎?你會(huì)在自己財(cái)務(wù)狀況較差的時(shí)候因?yàn)榘粹o在鼠標(biāo)附近而點(diǎn)擊購買品嗎?在大多數(shù)理性場景下,我相信你不會(huì)這樣做。

所以這時(shí)候要引入福格模型,用來闡述產(chǎn)生轉(zhuǎn)化的整個(gè)路徑。福格模型簡單來講就是一個(gè)公式:B=MAT。B(behavior) 代表行為,M(motivation) 代表動(dòng)機(jī)也就是用戶需求,A(ability) 代表用戶使用的門檻,T(trigger) 代表觸發(fā)。也就是用戶行為的產(chǎn)生需要用戶需求為基礎(chǔ),需要保證產(chǎn)品的易用性,但是這還不夠,在這個(gè)基礎(chǔ)上我們還需要在產(chǎn)品中通過設(shè)計(jì)觸發(fā)用戶。完成轉(zhuǎn)化的三個(gè)關(guān)鍵要素是,動(dòng)機(jī)、能力、觸發(fā),缺一不可。

福格模型幫助我們解決了這個(gè)疑問。用戶的購買或者轉(zhuǎn)化始于動(dòng)機(jī),就像我上面舉的例子,如果一個(gè)用戶根本對產(chǎn)品沒有需求(男性對女性內(nèi)衣),那就不會(huì)產(chǎn)生動(dòng)機(jī),在沒有動(dòng)機(jī)的情況下,后面兩項(xiàng)內(nèi)容,能力或者觸發(fā)都沒有意義,無法發(fā)揮作用。整個(gè)轉(zhuǎn)化的流程可以參考下方的示意圖。

實(shí)際上對于那些有強(qiáng)烈動(dòng)機(jī)購買或使用產(chǎn)品的用戶,你的一切設(shè)計(jì)都沒有太大意義,因?yàn)橛脩粲袕?qiáng)烈訴求的情況下,他會(huì)發(fā)揮主觀能動(dòng)性去找到轉(zhuǎn)化的入口,主動(dòng)完成轉(zhuǎn)化。同理,有些用戶是完全不會(huì)產(chǎn)生動(dòng)機(jī)的,不是目標(biāo)用戶群。

設(shè)計(jì)策略主要針對的是有動(dòng)機(jī)但不強(qiáng)烈(某種程度上有需求或者被吸引),以及暫時(shí)沒有動(dòng)機(jī)的兩類用戶。通過我們的首屏及詳細(xì)內(nèi)容,痛點(diǎn)利益點(diǎn)的介紹,來放大用戶動(dòng)機(jī),制造共鳴點(diǎn),創(chuàng)造美好的想象空間,使用戶涌現(xiàn)強(qiáng)烈動(dòng)機(jī)。然后轉(zhuǎn)化就自然而然的產(chǎn)生。

因此,在首屏我們的核心要義是通過內(nèi)容設(shè)計(jì)來觸發(fā)用戶動(dòng)機(jī),而不是想方設(shè)法觸發(fā)操作。走捷徑的誤觸方案設(shè)計(jì)能保證百分百的觸發(fā)率,但那種觸發(fā)沒有任何意義。到這里我們應(yīng)該明確了,用戶會(huì)因?yàn)楹玫膬?nèi)容所觸發(fā)的動(dòng)機(jī)而買單,但不會(huì)因?yàn)槟惆寻粹o放在我手邊而產(chǎn)生購買沖動(dòng)。

因此,我的結(jié)論是,用戶更有可能因?yàn)樽髠?cè)展示的強(qiáng)洞察力的文案而產(chǎn)生動(dòng)機(jī),而動(dòng)機(jī)是整個(gè)轉(zhuǎn)化的起始,也是最關(guān)鍵的一點(diǎn),有了動(dòng)機(jī),觸發(fā)(按鈕位置)的效率即便低一點(diǎn),但轉(zhuǎn)化仍然很有可能繼續(xù)(就像動(dòng)機(jī)產(chǎn)生了慣性,有了強(qiáng)烈的動(dòng)機(jī)會(huì)自發(fā)地去尋找觸發(fā)器,去尋找按鈕以自主完成轉(zhuǎn)化,但觸發(fā)器不會(huì)有慣性)

這個(gè)觀點(diǎn)論述下來,主要涉及到 F 閱讀模型,費(fèi)茨定律以及福格模型,算是很基本的設(shè)計(jì)原則,也順便幫大家重溫一下。最后,我們再拿一些其他實(shí)證來進(jìn)一步論述,例如國內(nèi)一線公司的落地頁設(shè)計(jì)。

1. 一線公司落地頁布局

2. 全球獨(dú)角獸企業(yè)落地頁

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

B端系統(tǒng),篩選控件總結(jié)

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

寫在前面


首先我們先從篩選本身講起吧~

 

篩選可以說是我使用比較頻繁的一種交互形式,比如我點(diǎn)外賣,會(huì)選擇滿減優(yōu)惠力度大,同時(shí)我也可以選擇在哪一個(gè)價(jià)格區(qū)間內(nèi)的產(chǎn)品,這就會(huì)用到篩選,而到了B端產(chǎn)品上來,一個(gè)CRM系統(tǒng)當(dāng)中,篩選的邏輯也會(huì)比移動(dòng)端的復(fù)雜,伴隨著:且關(guān)系、或關(guān)系、大于、小于等等這樣復(fù)雜的邏輯,也為設(shè)計(jì)本身增加了很多難度。因此,今天我們就來討論討論篩選控件

 


1、篩選存在的意義


篩選存在的對于整個(gè)表單來說是非常重要的,它可以幫助用戶,在表單茫茫多的數(shù)據(jù)當(dāng)中進(jìn)行快速的定位;可以對表單進(jìn)行快速劃分,縮短用戶對于數(shù)據(jù)的尋找時(shí)間;能夠滿足用戶在工作中,實(shí)際業(yè)務(wù)場景的篩選。

對于實(shí)際B端場景來說,篩選是日常數(shù)據(jù)分類的一個(gè)重要途徑,我們先來看看實(shí)際場景到底有哪些?

 

用幾個(gè)我們CRM用戶日常使用的場景來說:

 

比如今天作為一個(gè)電話銷售人員,想要聯(lián)系最近注冊的用戶時(shí),通常會(huì)通過篩選來選出最近幾天注冊過,同時(shí)又沒有銷售更進(jìn)的客戶,進(jìn)行一個(gè)優(yōu)先級(jí)的排布;

 

再比如說,在銷售周報(bào)當(dāng)中,銷售主管可以通過篩選得到每個(gè)人這周完成的狀態(tài),也可以通過篩選得出每個(gè)人對于線索的更進(jìn)情況和對客戶的流失狀態(tài)等等,這些都可以通過各種各樣的篩選形式來滿足用戶對于特定情況下的使用



篩選和搜索、導(dǎo)航的區(qū)別?

 

篩選可以通過多個(gè)篩選條件進(jìn)行多維度的尋找,而導(dǎo)航、搜索只能通過單一條件進(jìn)行指定篩選。

雖然在現(xiàn)在很多搜索都可以支持多維度用空格去進(jìn)行多字段的關(guān)鍵詞搜索,但本質(zhì)上區(qū)別不大

所以在B端項(xiàng)目當(dāng)中,如果你有表單,那你就需要篩選



2、篩選的類型


我們將篩選分為基礎(chǔ)篩選和高級(jí)篩選兩種,兩種篩選會(huì)根據(jù)業(yè)務(wù)場景不同,在不同的頁面去使用

 

2.1、基礎(chǔ)篩選


基礎(chǔ)篩選一般為系統(tǒng)預(yù)設(shè)好的篩選字段,具有很強(qiáng)的業(yè)務(wù)和場景的需求?;A(chǔ)篩選一般分為四個(gè)部分:


篩選條件:是指用戶可以篩選的范圍

篩選項(xiàng):是指用戶可以選擇的篩選項(xiàng)目

已選項(xiàng):是指用戶已經(jīng)選中的篩選項(xiàng)

備選項(xiàng):是指用戶還沒有選擇的篩選選項(xiàng)



基礎(chǔ)篩選更多作為用戶快捷篩選的一種方式,因?yàn)橐话闶褂脠鼍爱?dāng)中用戶幾個(gè)篩選邏輯為“且”

同時(shí)篩選的邏輯也為簡單篩選,所以在使用場景上只適合在對篩選要求不高的場景下使用。


2.2、高級(jí)篩選


高級(jí)篩選一般為篩選中含有運(yùn)算符,同時(shí)篩選當(dāng)中包含條件關(guān)系,比如且關(guān)系或者否關(guān)系。一般高級(jí)篩選包含以下幾類關(guān)鍵詞

 

篩選關(guān)系:是指幾個(gè)篩選條件之間的關(guān)系,一般為 且、或關(guān)系,即 且 關(guān)系為幾個(gè)條件之間的并集;或 關(guān)系為幾個(gè)條件之間的聯(lián)集

篩選字段:是指在篩選當(dāng)中,所要的篩選項(xiàng),一般為表單當(dāng)中的所有可篩選的字段

篩選操作:是指篩選字段和篩選值之間的關(guān)系,常見的篩選操作有:大于、小于、是、否、包含、不包含、為空、不為空等等。

篩選值:你所需要篩選的數(shù)值



高級(jí)篩選一般滿足更多的用戶場景,為用戶多條件多字段、多個(gè)篩選關(guān)系、多個(gè)篩選操作 提供有利保障。




3、篩選的布局


3.1、上下布局


當(dāng)在篩選器條件少于5個(gè)的情況下,最常使用的就是上下布局,這樣篩選能與網(wǎng)站保持統(tǒng)一的情況下,上下布局也更方便用戶進(jìn)行閱讀

 

當(dāng)篩選器過多的情況下(一般在5-15個(gè)之間),篩選器過多,需要滾屏才能看到篩選結(jié)果,用戶使用起來會(huì)很別扭。所以在5-15個(gè)的情況下,一般會(huì)將篩選項(xiàng)進(jìn)行收折,這樣保證篩選整體面積不會(huì)太大,同時(shí)將用戶常用的篩選放在前面,可以滿足用戶基本的業(yè)務(wù)需求和使用場景



3.2、左右布局


左右布局在PC端一般是以字段選擇進(jìn)行篩選,通俗來講就是將用戶可以篩選的所有字段全部羅列出來,然后通過勾選選,擇出你需要篩選的字段,進(jìn)行篩選器的使用

 

左右布局的好處是能夠?qū)⒑Y選的所有條件都直接的展示出來,可以適應(yīng)很多場景,在篩選器用15個(gè)以上時(shí)。通過左右布局的方式,能夠讓篩選條件進(jìn)行滾動(dòng),在最大限度保持用戶使用體驗(yàn)




4、篩選的形式


在日常的B端產(chǎn)品中,篩選的形式有哪些?篩選到底應(yīng)該怎么設(shè)計(jì)?接下來為大家總結(jié)梳理一些在 B端產(chǎn)品 中的篩選玩法,希望為你開啟新大陸。


4.1、平鋪型



平鋪型一般為用戶搜索結(jié)果數(shù)據(jù)量過大,使用戶搜索出來的結(jié)果與其預(yù)期差距過大,用戶然后可以通過篩選對數(shù)據(jù)的再一次分類,使用戶能夠精準(zhǔn)尋找其想要的結(jié)果。

平鋪型一般為篩選條件少于6個(gè),這樣能夠通過1行或者2行去展示篩選項(xiàng)的結(jié)果

 

多用于信息量大的產(chǎn)品,比如電商、視頻網(wǎng)站等等。常見的淘寶、京東、騰訊視頻PC端 都采取用這樣的方式,將所有的篩選條件列出來。

 

平鋪型的好處是將篩選項(xiàng)的結(jié)果全部或者部分放出,能夠幫助用戶快速理解篩選項(xiàng)以及快讀找到自己想要的結(jié)果。

缺點(diǎn)也是很明顯,平鋪型的控件占比大,需要占據(jù)大量面積展示平鋪出的篩選結(jié)果。

 

比如淘寶PC端,搜索一個(gè)產(chǎn)品后花去40%的面積去展示所有的篩選條件,其實(shí)就是想引導(dǎo)用戶,淘寶搜索過后spu的數(shù)量仍然過大,想通過進(jìn)一步的篩選,讓用戶明確自己對想要東西。同時(shí)因?yàn)槊娣e占比大,通常平鋪型都是以收折的狀態(tài),只有在搜索觸發(fā)后才會(huì)完全展開


4.2、收折型



收折型篩選是一種簡單直接的篩選形式,將用戶常用的篩選形式通過下拉框的形式進(jìn)行篩選。每一個(gè)篩選條件就是一個(gè)下拉框,這種形式看上去很簡單,但是在B端場景中,下拉框?qū)τ谟脩魜碚f認(rèn)知成本低,操作性也較強(qiáng),同時(shí)在用戶重度使用時(shí),又能給用戶很好的使用體驗(yàn)的一種方式

 

優(yōu)點(diǎn):

用戶可以直接對其常用的字段篩選進(jìn)行一步操作,并且沒有復(fù)雜的篩選關(guān)系,全部都是“且”的篩選邏輯,能夠保證用戶進(jìn)行快速的篩選選擇

 

缺點(diǎn):

將所有信息全部平鋪展開,信息量過于冗雜繁多,同時(shí)在做通用性產(chǎn)品時(shí),這種方式很難做到通用性


 

4.3、單側(cè)篩選



單側(cè)篩選是一種更通用的篩選形式,通過對于你想篩選的字段進(jìn)行勾選,勾選完成后就會(huì)出現(xiàn)篩選條件,然后選擇篩選字段、篩選操作、篩選值,一般選擇完成所有篩選后,還需要點(diǎn)擊查詢,篩選操作才算完成。

 

整個(gè)單側(cè)篩選,大量的篩選條件可以放置在表單的左側(cè)或者右側(cè),通過表單縱向空間,去承載大量篩選條件。

 

優(yōu)點(diǎn):

節(jié)省空間、通用性強(qiáng)。因?yàn)樵诤芏郤aas系統(tǒng)、Paas系統(tǒng)當(dāng)中,無法針對每一個(gè)客戶進(jìn)行設(shè)計(jì),就要考慮到系統(tǒng)通用型高,做一些大而全的功能。在每個(gè)表單也所需要定制化修改的地方很少,同時(shí)能容納的信息量可以很大。

 

缺點(diǎn):

就是在后臺(tái)系統(tǒng)當(dāng)中只有這一種篩選形式會(huì)面臨在我常用的幾種篩選的字段中,要通過不斷尋找,來滿足我的篩選需求,操作麻煩。

 

 

我們產(chǎn)品在某一次改版就將篩選由收折式修改為單側(cè)式,因?yàn)槲覀冇脩羰褂煤Y選的場景非常的多,用戶每次篩選都要多進(jìn)行2、3步操作,導(dǎo)致用戶進(jìn)行了大量的吐槽,后來進(jìn)行修改,將篩選順序支持手動(dòng)調(diào)整順序,用戶吐槽的次數(shù)才慢慢減少。



4.4、表頭篩選

 


表頭篩選是一種復(fù)雜篩選的形式,其最開始是來源于Excel的篩選形式。點(diǎn)擊表單的篩選按鈕,可以將表頭的篩選字段直接帶入,方便用戶。之后在后臺(tái)產(chǎn)品的發(fā)展中,得以借鑒過來。

 

優(yōu)點(diǎn):

可以通過表頭的點(diǎn)擊,使用戶更快捷進(jìn)入到自己的篩選條件,在通常情況下,在表單越左的數(shù)據(jù)顯然是越重要的,也是使用篩選去篩頻率最高的,因此高頻的篩選場景基本還是得到滿足。


缺點(diǎn):

用戶第一次進(jìn)入系統(tǒng)很難理解這種交互形式,且在每個(gè)表頭都會(huì)有一個(gè)icon,影響用戶對于表頭的識(shí)別。

 

 

4.5、彈窗式



通過點(diǎn)擊篩選按鈕,展現(xiàn)出篩選彈窗,進(jìn)行篩選。這種篩選適合在篩選功能在系統(tǒng)中不是很重要的層級(jí)。最常見的就是Tapd,在其中篩選不是很強(qiáng)的一個(gè)功能,同時(shí)也是系統(tǒng)中十分有必要的。

 

優(yōu)點(diǎn):

是能夠在節(jié)省面積的情況下,可以進(jìn)行很復(fù)雜的篩選,同時(shí)可以支持復(fù)雜情況下的篩選

 

缺點(diǎn):

彈窗會(huì)遮擋一部分表單數(shù)據(jù),會(huì)影響篩選人的判斷,其次篩選條件的添加也相對更加繁瑣。

 

 


5、選擇更合適的篩選

在我們一系列篩選的調(diào)整過后,我們團(tuán)隊(duì)也總結(jié)了對于我們來說更重要的條件和形式,來和大家分享探討一下。

 

5.1、使用頻率

我們認(rèn)為影響篩選控件最重要的是用戶的使用頻率,因?yàn)橛脩舻氖褂妙l率和使用方式,直接影響到我們篩選是用普通篩選or高級(jí)篩選,也會(huì)影響到篩選的形式。

 

5.2、滿足實(shí)際業(yè)務(wù)所需

篩選功能的做法,取決于我們產(chǎn)品未來是想往哪一個(gè)方向發(fā)展,如果想把功能做的強(qiáng)大,就得考慮到篩選的后續(xù)擴(kuò)展性。因此滿足實(shí)際業(yè)務(wù)也是十分重要。

 

5.3、用戶認(rèn)知成本

在B端系統(tǒng)當(dāng)中,最可能遇見的就是你給用戶設(shè)計(jì)的路徑但是其實(shí)用戶根本沒有往你想的方向去操作。我們系統(tǒng)最開始給用戶設(shè)計(jì)好了很多功能點(diǎn),但是用戶對于這個(gè)點(diǎn)的認(rèn)知成本實(shí)在過低,也導(dǎo)致了后面系統(tǒng)功能點(diǎn)很多都被埋沒。因?yàn)樵谀阍O(shè)計(jì)好了一個(gè)功能點(diǎn)后,要適當(dāng)引導(dǎo)用戶,解釋這個(gè)功能的使用場景才不會(huì)讓你設(shè)計(jì)的功能被淹沒。

 

 


其實(shí)在B端產(chǎn)品中,易用本身就是難且長的過程,在每一個(gè)功能的設(shè)計(jì)都需要你去思考很多方面:用戶易用、信息層級(jí)、未來擴(kuò)展,你都要做出取舍,而對于每個(gè)模塊都需要你思考、結(jié)合用戶場景,B端web的設(shè)計(jì)一直都是摸黑前進(jìn),我也只是將自己的一段時(shí)間的工作進(jìn)行總結(jié),說的不正確,歡迎大家指正。

 轉(zhuǎn)自:站酷-Cengg 


Mac 視覺史 vol.1:從 Macintosh 到 Mac OS

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

2009 年,買不起 Macbook 的我在 PC 上裝上了黑蘋果。在此之前,我用虛擬機(jī)體驗(yàn)了 Apple II 、Mac OS 8.1、Mac OS 9.2.2 、Mac OS X 10.6 ,在不斷的折騰過程中,我開始對蘋果、對GUI 的整個(gè)歷史發(fā)生了興趣。

此后,我在Jeff Johnson 的《認(rèn)知與設(shè)計(jì)》當(dāng)中,在 Steve Krug 的《Don’t Make Me Think》當(dāng)中,在一本又一本和UI、交互、體驗(yàn)相關(guān)的經(jīng)典書籍當(dāng)中, 發(fā)現(xiàn) Mac 系統(tǒng)的界面一直被作為范例來展示。

Mac 確實(shí)是優(yōu)秀設(shè)計(jì)的典范,是 GUI 設(shè)計(jì)史當(dāng)中繞不過去的最重要的操作系統(tǒng)家族。所以,視覺史系列文章的第一篇,我決定從 Mac 系統(tǒng)下手。

兩大系列,四個(gè)名字

簡單來說,我們泛指的 Mac 系統(tǒng),通常是分為2個(gè)大的系列的。

1982 年隨 Macintosh 發(fā)布的系統(tǒng),一直到 1999年發(fā)布的 Mac OS 9 為第一個(gè)系列,一般被統(tǒng)稱為「Classic Mac OS」。

而 2001 年之后所誕生的 Mac OS X 系列的操作系統(tǒng),包括現(xiàn)在所說的 macOS ,則被視作為第二個(gè)系列的 Mac 系統(tǒng),其中 X 是羅馬數(shù)字 10 的意思。

蘋果公司最初只有 Macintosh 電腦,系統(tǒng)并無名稱,直到第5個(gè)大版本的時(shí)候,操作系統(tǒng)才擁有 Macintosh 這個(gè)名字。而 Mac OS 這一系統(tǒng)名稱,則是在系統(tǒng)更新到第7個(gè)大版本的時(shí)候才被提出,而自此開始,Mac OS 的稱謂正式出現(xiàn)。

而 macOS 則相當(dāng)于是 Mac OS X 品牌的一次重啟。它始于 10.12 Sierra 這一版本,并且為了和 iOS、tvOS、watchOS 這幾個(gè)系統(tǒng)品牌保持一致,而從 Mac OS X 更名為 macOS。

在很長一段時(shí)間,國外很多老用戶會(huì)將它簡稱為「OS8」、「OS9」,而在2001年之后直到今天,依然有很多人將它簡稱為「OSX」,這也是在了在討論 Mac 系統(tǒng)這個(gè)前提下所用到的、帶有版本的簡略稱謂。

注釋:國內(nèi)有不少人會(huì)將 Mac 稱為「OS系統(tǒng)」,但是 OS 本就是 Operation System 的縮寫,意為操作系統(tǒng),Windows 是 OS,Linux 也是 OS,「OS系統(tǒng)」是一個(gè)錯(cuò)誤且尷尬的表述。

如果不深究細(xì)節(jié)的話,Macintosh,MacOS,Mac OS X , macOS 這四個(gè)都簡稱為 Mac 系統(tǒng)。

圖形化界面:向施樂偷師

Macintosh 并非最早的圖形化界面,但卻是真正推動(dòng)圖形化界面操作系統(tǒng)發(fā)展的里程碑。

Xerox Alto

對于圖形化用戶界面的起源,一個(gè)相對統(tǒng)一的共識(shí)是,它來源于施樂的帕羅奧托研究中心,而最早使用圖形化界面的電腦,是當(dāng)時(shí)正出于研發(fā)中的 Xerox Alto。在之前的文章當(dāng)中,我曾經(jīng)專門聊過最早圖形化界面的誕生和設(shè)計(jì)細(xì)節(jié):

比爾蓋茨曾經(jīng)指責(zé)喬布斯從施樂這里「偷」走了圖形化界面(GUI)的設(shè)計(jì),實(shí)際上,為了換得機(jī)會(huì)去施樂的帕羅奧托研究中心去觀摩學(xué)習(xí)研發(fā)中的Xerox Alto 和開發(fā)工具 Smalltalk,喬布斯是拿股權(quán)交換得來的。

這是 Xerox Alto 當(dāng)時(shí)所采用的圖形化界面。界面的確圖形化了,只不過,從今天的視角來看,整體的界面邏輯并不清晰。

而在GUI的設(shè)計(jì)細(xì)節(jié)、實(shí)現(xiàn)方式上,Macintosh 則截然不同,可以說是后來居上。

規(guī)避糾紛: Macintosh 的名字來源

說回 Mac。

回溯到 1979年,Jef Raskin 是Macintosh 電腦和操作系統(tǒng)項(xiàng)目的發(fā)起者和監(jiān)督者,他想用自己最喜歡的一種蘋果(McIntosh)來給這個(gè)操作系統(tǒng)命名。

這種名為 McIntosh 的蘋果不僅被譽(yù)為加拿大國家級(jí)蘋果,但是更重要的原因在于,當(dāng)時(shí)紐約還有一家名為 McIntosh Laboratory 并且提供高端定制音響服務(wù)的公司,為了避免商業(yè)品牌上的沖突,Raskin 將系統(tǒng)的名稱改為 Macintosh,故意錯(cuò)開了一個(gè)字母。當(dāng)然隨后 Macintosh 的名字逐漸超過了前者,在世界范圍內(nèi),甚至慢慢超過了加拿大最著名的水果。

當(dāng)然,1984年,最初版本的 Macintosh 系統(tǒng)隨著同名的蘋果電腦的發(fā)布而面向大眾,這個(gè)并非最早的圖形化界面操作系統(tǒng)開始了它的歷程,如今它是最著名、最具有影響力的圖形化界面的操作系統(tǒng)之一。

Macintosh 電腦的主板由 Burrell Smith 所設(shè)計(jì),結(jié)合當(dāng)時(shí)的硬件技術(shù),讓最終上市的 Macintosh 電腦擁有了一塊分辨率為 512×342 的單色顯示屏。

在這塊寸土寸金的單色屏幕上,Macintosh 系統(tǒng)需要將圖形化界面的價(jià)值盡可能發(fā)揮出來。

Macintosh 系統(tǒng):正式擁有姓名

Macintosh 電腦開始出現(xiàn)在各大雜志媒體上,蜚聲世界,但是此刻,這一操作系統(tǒng)并沒有官方的名稱。 1.x系列的只有一個(gè)非正式的 System 1 的名字,而隨后的大版本也被稱為 System 2,System 3,等等。

直到 System 5 的時(shí)候,這一操作系統(tǒng)才算是正式有了 Macintosh 的名稱,而它正式的完整名稱是 Macintosh System Software 。

System 1 ~ System 5:功能迭代

最早的 System 1 當(dāng)中,開機(jī)之后有一個(gè)非常可愛的歡迎界面:

菜單和窗口的概念清晰,比起 Xerox Alto 的設(shè)計(jì)更加成熟:

左上角的蘋果圖標(biāo)打開之后,本質(zhì)上是一個(gè)程序列表:

在 System 1 當(dāng)中,文件夾是一個(gè)虛擬概念,在文件系統(tǒng)當(dāng)中其實(shí)是根本不存在文件夾的,它是模擬現(xiàn)實(shí)文件夾的概念而存在的一個(gè)圖形化界面概念:

在系統(tǒng)出錯(cuò)之后,系統(tǒng)報(bào)錯(cuò)界面中會(huì)使用炸彈圖標(biāo)來進(jìn)行提示:

1984年的 Macintosh 的系統(tǒng)崩潰界面都比 2000 年之后的的 Windows 藍(lán)屏界面來得更加有趣:

當(dāng)然,用一個(gè)帶有圖形化界面的電腦玩游戲,難道不是一件天經(jīng)地義的事情嗎:

特別值得一提的是,Macintosh 自打一開始就為自己設(shè)計(jì)了一系列的字體:

其中風(fēng)格獨(dú)特的 San Francisco 在多年以后還擁有一個(gè)同名的字體,作為系統(tǒng)默認(rèn)的字體而存在。

隨后,在隨后的 System 3 當(dāng)中,垃圾桶的 APP 圖標(biāo)增加了「有垃圾文件」和「已清空」兩種狀態(tài)的區(qū)分,并且給系統(tǒng)新增了一個(gè)歡迎界面:

文件夾也不再只是一個(gè)虛擬的概念了:

同樣的,在 System 3 當(dāng)中游戲的精美程度也有了一定程度的提升:

當(dāng)然,從 System 1 到 System 4,系統(tǒng)的功能在一代代地增加,但是受限于屏幕和基本的性能,其界面在整體觀感上差別并不大:

不過在圖標(biāo)和界面細(xì)節(jié)的處理上,越來越豐富,越來越細(xì)致,比如系統(tǒng)的控制面板,功能和細(xì)節(jié)比 System 1 時(shí)代豐富了許多:

在 System 5 當(dāng)中,Macintosh 還加入了多任務(wù)的功能,也就是 MultiFinder,使得用戶終于可以同時(shí)運(yùn)行多個(gè)任務(wù),不過因?yàn)樾阅芟拗?,跑多任?wù)的時(shí)候,會(huì)比單任務(wù)慢不少。

System 6 :集大成的版本

對于 Macintosh 系統(tǒng)而言, System 6 是一個(gè)階段性集大成的版本。系統(tǒng)的版本和軟件的版本在 System 6 當(dāng)中進(jìn)行了統(tǒng)一,并且功能也有了相當(dāng)程度的完善。

性能更強(qiáng)勁的 Macintosh SE/30 和 筆記本電腦 Macintosh Portable 也是在 System 6 更新期間發(fā)售的。

Macintosh Portable

Macintosh SE/30

System 7:擁有色彩的新世代

終于,黑白用戶界面的時(shí)代在 1991 年終結(jié),Macintosh 系統(tǒng)從 System 7 開始擁有了彩色的用戶界面:

色彩的加入,系統(tǒng)圖標(biāo)的擬真度也再一次提升,比如垃圾桶的圖標(biāo),光影已經(jīng)相當(dāng)逼真了。

而為了更好地利用彩色界面的功能,用戶可以根據(jù)自己的偏好進(jìn)行全局色彩設(shè)置:

軟件安裝的進(jìn)度指示方式,比起同時(shí)代的系統(tǒng)乃至于后面的很多系統(tǒng),都要清晰明確:

關(guān)鍵信息的說明和引導(dǎo)上,Macintosh 系統(tǒng)在30年前就已經(jīng)有明確的范式了,比如重要信息標(biāo)紅強(qiáng)調(diào):

由于這個(gè)階段系統(tǒng)分辨率的限制,在按鈕的視覺層次構(gòu)建上,陰影和按鈕凸起的效果,都做的比較簡單,但是總體上始終上是在模擬現(xiàn)實(shí)存在的元素,通過盡可能貼近現(xiàn)實(shí)的視覺設(shè)計(jì),來減輕用戶的認(rèn)知負(fù)荷,計(jì)算器和鍵盤的設(shè)計(jì)就非常的典型:

System 7 當(dāng)中,還內(nèi)置了交互式的用戶幫助系統(tǒng):

在控制面板當(dāng)中,圖標(biāo)的統(tǒng)一性再一次得到了提升,風(fēng)格上明顯有著當(dāng)時(shí)的特征,只不過在信息的傳達(dá)上,還不夠優(yōu)秀,如果沒有文本標(biāo)簽,你很難判斷每個(gè)按鈕對應(yīng)的功能是什么:

值得一提的是,System 7 所處的階段,大量的兼容機(jī)和包括 Windows 在內(nèi)的操作系統(tǒng)開始出現(xiàn),激烈的市場競爭之下,蘋果也發(fā)布了一系列的新款的 Macintosh 電腦:

為了應(yīng)對激烈的競爭,蘋果還想出了新的策略,而這一策略也促成 Macintosh 系統(tǒng)后續(xù)逐漸成為一個(gè)獨(dú)立的品牌。

Mac OS :第一次品牌重構(gòu)

1996年,喬布斯重回蘋果。同時(shí)在這個(gè)階段,Macintosh 系統(tǒng)也隨之進(jìn)行了品牌重設(shè)計(jì),Macintosh 系統(tǒng)更名為 Mac OS。

為了應(yīng)對激烈的市場競爭,這一階段的 Macintosh 電腦開始逐步切換到 PowerPC 架構(gòu)的 CPU 芯片,同時(shí),蘋果公司也開始授權(quán)一些第三方廠商,使用同樣架構(gòu)的芯片和主板,并且安裝System 7 的系統(tǒng)。

可以直接安裝 System 7 的 StarMax 兼容機(jī)

這樣一來,就開始出現(xiàn)問題了:非蘋果產(chǎn)的電腦上,也會(huì)顯示 「Macintosh 」的字樣,那這個(gè)怎么和原廠的 Macintosh 電腦進(jìn)行區(qū)分呢?

很簡單,在原裝的 Macintosh 上,依然還是 Macintosh,但是在兼容機(jī)上,它就是「黑蘋果」——Mac OS:

在當(dāng)時(shí),很多人認(rèn)為這種區(qū)分,僅僅只是用來進(jìn)行差異化的臨時(shí)解決方案。此時(shí)喬布斯即將重掌蘋果,并且打算把前 CEO 的系統(tǒng)第三方授權(quán)策略給干掉。將 Macintosh 更名為 Mac OS 就是解決方案,只不過這個(gè)解決方案并后面還有其他的深意。

因?yàn)楹竺孢€有新系統(tǒng)。

Mac OS 8:一石二鳥的更新

Mac OS 8 是在 1997年7月26日發(fā)布的,同一個(gè)月另外一件大事,就是喬布斯正式任命為 CEO,執(zhí)掌大權(quán)。

其實(shí),此處的 Mac OS 8 并非真正意義上的大版本更新——它原本應(yīng)該是 Mac OS 7.7 。但是,前 CEO 同第三方廠商簽訂的系統(tǒng)授權(quán)協(xié)議,是基于Macintosh System 7 的,而直接發(fā)布 8.0 版本等同于是巧妙地利用命名,直接把后續(xù)的服務(wù)和協(xié)議一起給斷掉了,同時(shí)新的 Mac OS 系統(tǒng)從名字上也直接區(qū)分于原本的 Macintosh,可以說是釜底抽薪的一招絕殺。

同時(shí),新名字,新世代,也是開創(chuàng)新局面的好預(yù)兆,一舉多得。新的 Mac OS 8 系統(tǒng)在更加優(yōu)秀的硬件基礎(chǔ)上,在顯示效果上也一下子進(jìn)入了高清的時(shí)代。

雖然 Mac OS 8 在底層上,依然繼承自 System 7 ,但是因?yàn)閹啄昵伴_始的 Copland 項(xiàng)目有不少遺產(chǎn),身為繼承者的 Mac OS 8 在視覺和體驗(yàn)上,提升了相當(dāng)明顯:

Mac OS 8 當(dāng)中加入了主題選擇的功能,雖然比較簡單,但是也至少有著跟 Windows 95 相互匹敵:

和同時(shí)代的很多操作系統(tǒng)一樣,在多媒體軟件上, Mac OS 8 有了頗為炫酷的視覺效果:

界面左上角的 Apple LOGO 繼續(xù)作為程序列表的菜單按鈕而存在:

類似 2.5 D 的圖標(biāo)設(shè)計(jì),是這個(gè)時(shí)代的用戶界面設(shè)計(jì)的流行風(fēng)尚:

而這種變化,在 Mac OS 8.5 這一版本上,有了更為明顯的提升——比如文本抗鋸齒效果,讓文本更加易于閱讀:

更加柔和自然的的光影變化,更復(fù)雜的交互和界面元素,Mac OS 8.5 所呈現(xiàn)出來的視覺效果乃至于體驗(yàn),不會(huì)弱于同時(shí)代的任何系統(tǒng):

但是也僅僅只是不弱于對手而已。

Mac OS 9:爭取時(shí)間的權(quán)宜之計(jì)

Mac OS 9 是 Mac 系統(tǒng)第一個(gè)系列的最后一個(gè)大版本。

和 Mac OS 8 類似,原本的 Mac OS 9 原本應(yīng)該作為 Mac OS 8.7 來發(fā)布的。

其實(shí)早在喬布斯回歸并發(fā)布 Mac OS 8 之后,Mac OS 9 的發(fā)展路徑和命運(yùn)就已經(jīng)注定了:為老硬件和老用戶更新,并且繼續(xù)為真正的新系統(tǒng)爭取時(shí)間。

Mac OS 9 是在 1999 年 10 月 23 日發(fā)布的。這個(gè)面向新世紀(jì)而發(fā)布的操作系統(tǒng),蘋果是以「有史以來網(wǎng)絡(luò)功能最好的操作系統(tǒng)」來進(jìn)行宣傳。

此時(shí),喬布斯重組的設(shè)計(jì)團(tuán)隊(duì),已經(jīng)為新的操作系統(tǒng)挑選好了新的設(shè)計(jì)語言,而此時(shí)發(fā)布的 Mac OS 9 當(dāng)中,也適當(dāng)?shù)丶尤肓艘恍檎嬲南乱淮到y(tǒng)所準(zhǔn)備的視覺元素,比如播放器軟件中的不銹鋼拉絲效果:

窗口界面中的元素有著細(xì)膩微妙的光影起伏:

搜索應(yīng)用中的內(nèi)陰影、高度擬物化的小圖標(biāo):

特別要說的是,此時(shí)的 Mac OS 9 中已經(jīng)可以找到很多貼合現(xiàn)代 UI 設(shè)計(jì)中的諸多原則了,比如富有邏輯的分組:

容納多個(gè)并列分組的標(biāo)簽頁交互:

在諸如幫助頁面和安裝界面中,使用了層級(jí)豐富的排版視覺設(shè)計(jì):

也許現(xiàn)在你對于字體的這種投影深惡痛絕,但是在20年前,這樣的視覺效果是令人驚艷的:

Mac 系統(tǒng)第一系列自此收官

Mac 系統(tǒng)的第一個(gè)操作系統(tǒng)系列,在明面上有著相對清晰的脈絡(luò):自家電腦,用自家系統(tǒng)。通過這一系列的界面設(shè)計(jì),可以總結(jié)出下面的幾點(diǎn):

  • 第一個(gè)系列的 Mac 系統(tǒng)在交互和整體框架上,保持了高度了延續(xù)性;
  • 模擬現(xiàn)實(shí)世界中元素的設(shè)計(jì)理念,從 Xerox Alto 一直延續(xù)下來沒變過;
  • 在已有屏幕分辨率基礎(chǔ)上,最大化地提供優(yōu)質(zhì)的視覺體驗(yàn),是它的宗旨;
  • Mac 系統(tǒng)確實(shí)在很早的階段,就已經(jīng)開始注意體驗(yàn)和「不言自明」的交互邏輯;

Mac 的圖形化界面,始于施樂,成于喬布斯,在迭代中一步步完善。

不過,從 System 7 開始,它的危機(jī)就已經(jīng)出現(xiàn)了。從 1991 年到 1999 年這 8 年時(shí)間當(dāng)中,暗地里發(fā)生了一系列的事情,這些事情是 Mac 系統(tǒng)視覺史當(dāng)中,不可或缺的組成部分。

下一篇,依然是 Mac 系統(tǒng)的視覺史,其中包括 WIndows、NeXTstep、BeOS,當(dāng)然,還有 Mac OS X。

參考:
https://history-computer.com/ModernComputer/Personal/Macintosh.html
https://en.wikipedia.org/wiki/Xerox_Alto
https://web.archive.org/web/20001109004000/http://www.apple.com:80/macos/
https://apple.fandom.com/wiki/Mac_OS_8.5
https://en.wikipedia.org/wiki/System_7
https://www.versionmuseum.com/history-of/classic-mac-os
https://en.wikipedia.org/wiki/Macintosh_clone
https://en.wikipedia.org/wiki/Classic_Mac_OS

https://guidebookgallery.org/guis/macos/macos10


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

Mac 視覺史 vol.2:90年代失敗操作系統(tǒng)大賞

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

在第一篇 Mac 視覺史當(dāng)中,我梳理過了整個(gè) Mac 系統(tǒng)第一階段的明線,而這一篇,我們來聊一下它的「暗線」。

這一章所涉及到的項(xiàng)目,幾乎可以組成一個(gè) 大型的「90年代失敗操作系統(tǒng)大賞」,在主要由成功者們所構(gòu)成的故事、新聞乃至與傳說當(dāng)中,這些失敗的故事和項(xiàng)目,被提及的次數(shù)很少。

但是對于 Mac OS X 而言,這里的每一次作死和失敗都充滿了意義。

對于絕大多數(shù)的用戶而言,Mac OS X 是21世紀(jì)初頂尖設(shè)計(jì)的范式,在今天,它是最優(yōu)秀操作系統(tǒng)的當(dāng)中的典型。

但是仔細(xì)想想看:從 System 1.0 到 Mac OS 9.2.2,長達(dá)15年時(shí)間的擠牙膏漸進(jìn)式升級(jí)的Classic Mac OS,怎么可能突然一下子就變成了充滿現(xiàn)代感的 Mac OS X?這種翻天覆地式的變化的確充滿了戲劇感,但那是在今天的視角之下。

在這場「90年代失敗操作系統(tǒng)大賞」當(dāng)中,無疾而終者多不勝數(shù),你所看到的不僅有粉墨登場,還有各式各樣的粉末謝場。在 Mac 的視覺史當(dāng)中,這一篇應(yīng)該是一個(gè)大型的「處刑現(xiàn)場」。

失敗的嘗試,同樣是 Mac 整個(gè)視覺演變史當(dāng)中,繞不過去的部分——沒有這些失敗,就沒有今天我們所熟知的 macOS 的視覺風(fēng)格,沒有后面 iOS 、iPadOS、watchOS 等等一系列交互界面和視覺。

來自內(nèi)部的壓力

雖然我們此刻所談及的是操作系統(tǒng)的視覺史,但是操作系統(tǒng)背后最重要的始終是推動(dòng)它的「人」。談 Windows 必然會(huì)涉及 比爾·蓋茨,而談到 Mac ,也不得不說喬布斯。

和當(dāng)年很多操作系統(tǒng)不一樣的地方在于,喬布斯一直堅(jiān)持硬件和軟件(操作系統(tǒng))理應(yīng)是一體的。這也是為什么在很長的一段時(shí)間以內(nèi),Macintosh 指的既是硬件(電腦),也是軟件(操作系統(tǒng)),而因?yàn)檫@臺(tái)電腦是更容易被指代的對象,當(dāng)用戶在指代系統(tǒng)的時(shí)候,使用的是諸如 System 1 ,System 2 這樣的詞匯。

原本的 Maciontsh 是有內(nèi)部競爭對手的——Lisa,這個(gè)以喬布斯女兒命名的電腦研發(fā)項(xiàng)目被奪走之后,喬布斯在 Macintosh 上投注了300% 的精力,親手操刀了不少設(shè)計(jì)。擁有大量資源傾斜的 Lisa 在當(dāng)時(shí)那個(gè)階段,看起來也并不差:

在這個(gè) 1983年的 UI 界面上,細(xì)節(jié)處理其實(shí)也算得上非常用心了,比如頂部菜單上的「陰影漸變效果」:

當(dāng)然,Lisa 的定位也非常明確,它就是一臺(tái)辦公電腦,所以它的系統(tǒng)名稱也非常簡單直接地使用了 Lisa Office System 這樣的名字:

也正是在這樣的對比之下,有著豐富字體、多樣的媒體功能、能夠玩游戲的 Macintosh 在這場內(nèi)部競賽中,得以勝出。

當(dāng)然,如同我們都知道的,喬布斯在發(fā)布 Macintosh 的 2年后被迫離開自己創(chuàng)立的公司。當(dāng)然,更重要的是,硅谷的巨頭們更加清楚計(jì)算機(jī)的發(fā)展方向。這使得 Macintosh 面對的外部壓力驟增。

激烈的外部競爭

圖形化界面(GUI)的概念和交互模式——這個(gè)點(diǎn)子本身可能比實(shí)現(xiàn)技術(shù)來得更重要。

在高手云集的硅谷,雖然絕大多數(shù)的企業(yè)和開發(fā)者都是后期入局者,但是他們只要投入足夠多的技術(shù)人員和時(shí)間,類似的圖形化交互界面總歸是能做出來的。

比如 Visi Corp 給 IBM 提供了 Visi On 這樣的圖形化程序:

微軟也在 1985 年為 IBM 的 PC 提供了 Windows 軟件:

Commodore 的圖形化界面也差不多同期問世:

而 GEOS 甚至為更老的 Apple ][ 提供了圖形化界面的操作系統(tǒng):

這些系統(tǒng)都是在 Macintosh 發(fā)布那一兩年內(nèi)相繼問世的。

從 System 6 開始新嘗試

操作系統(tǒng)領(lǐng)域的競爭,刺激著蘋果尋求突破。

多數(shù)企業(yè)都不會(huì)把雞蛋放在一個(gè)籃子里,這樣孤注一擲的決策確實(shí)有太大的風(fēng)險(xiǎn)。其他的商用操作系統(tǒng),都開始擁有日漸完善的桌面端圖形界面,使得蘋果在差異性和獨(dú)特性上不足。除了在硬件性能和產(chǎn)品線上增加投入,他們也開始嘗試開發(fā)更優(yōu)秀的圖形化界面和下一代操作系統(tǒng)。

在上一篇當(dāng)中,我提到過,在 80 年代末所發(fā)售的 System 6 是一個(gè)集大成的版本,在硬件性能和黑白顯示器之下,這個(gè)操作系統(tǒng)本身的核心功能已經(jīng)頗為完善了。這個(gè)時(shí)候,蘋果開始有意識(shí)地進(jìn)行一些探索性的項(xiàng)目。

「Pink」和「Blue」項(xiàng)目

某種意義上來說,「Blue」 和「Pink」 兩個(gè)項(xiàng)目幾乎是同時(shí)開始的。

雖然 1988 年的時(shí)候,喬布斯早已離開,但是他所塑造的 Macintosh 是當(dāng)之無愧的傳奇,那種「內(nèi)部創(chuàng)業(yè)」和「改變世界」、「創(chuàng)造傳奇」的硅谷精神對于此刻的蘋果員工依然有著極大的影響。

當(dāng)時(shí)蘋果內(nèi)部 5 名躁動(dòng)不安的中層開發(fā)工程師想拜托日漸僵化的內(nèi)部管理,想改變當(dāng)時(shí) System 6 表現(xiàn)欠佳的局面,想打造一個(gè)次世代的旗艦操作系統(tǒng)——某種意義上重現(xiàn) 1984 Macintosh 的傳奇。

他們在這次私底下的會(huì)議上重新梳理并規(guī)劃未來的操作系統(tǒng)。他們將System 6 基礎(chǔ)上的可以增量更新的特性、可以很快實(shí)現(xiàn)的功能,寫在藍(lán)色的卡片上,將技術(shù)上更加先進(jìn)、符合長期價(jià)值的功能(比如當(dāng)時(shí) Macintosh 所缺乏的搶先式多任務(wù)處理和組件化程序設(shè)計(jì))寫在粉色的卡片上,將更加激進(jìn)的特性寫在紅色的卡片上。

這次會(huì)議基本上就塑造了后面的「Blue」和「Pink」兩個(gè)項(xiàng)目,而紅色卡片上的特性由于過于激進(jìn),僅僅只是備案而沒有成立項(xiàng)目。

數(shù)百名工程師繼續(xù)在 System 6 的基礎(chǔ)上按部就班地更新功能、維護(hù)代碼庫,繼續(xù)「Blue」項(xiàng)目,而它的最終產(chǎn)物,就是后面我們看到的 System 7:

而另外一邊的「Pink」項(xiàng)目,一開始并不是公開的。當(dāng)時(shí) Erich Ringewald 領(lǐng)導(dǎo)這發(fā)起這次會(huì)議的核心 5人組,想像 Macintosh 項(xiàng)目開始那樣,找一個(gè)隱秘的房間開始這次「內(nèi)部創(chuàng)業(yè)」。

他們看上了 位于 Bubb Road 的一間倉庫,當(dāng)他們進(jìn)去的時(shí)候,才發(fā)現(xiàn)這個(gè)倉庫已經(jīng)被另外一個(gè)正在秘密進(jìn)行 Newton 項(xiàng)目的團(tuán)隊(duì)給占了。

當(dāng)然這款同樣極為傳奇的(失?。┱粕显O(shè)備我們回頭再說。

一路膨脹的「Pink」項(xiàng)目

「Pink 」項(xiàng)目開局的時(shí)候,有 6個(gè)人,但是考慮到要徹底放棄 System 6 的遺產(chǎn),重新開始全新的操作系統(tǒng),程序要是面向?qū)ο蟮?,要有?nèi)存保護(hù),要搶先式多任務(wù)處理,要支持多語言足夠國際化,還要有全新的圖形庫,這個(gè)團(tuán)隊(duì)開始一路膨脹。

先是蘋果的先進(jìn)技術(shù)小組(ATG)加入團(tuán)隊(duì),人數(shù)變?yōu)?1人。 2個(gè)月后,「Pink」項(xiàng)目增加到 25 人。7個(gè)月后,原始的5人組幾乎都因?yàn)椤溉藛T多到失控」而離開「Pink」項(xiàng)目。1年后,「Pink」項(xiàng)目的開發(fā)組多達(dá)100人。

原本計(jì)劃在2年后發(fā)布的「Pink」操作系統(tǒng)在原計(jì)劃的2年之期到期之時(shí),擁有了 150 人的超大規(guī)模,高級(jí)副總裁和市場營銷部門的首腦領(lǐng)導(dǎo)著這個(gè)龐大的開發(fā)團(tuán)隊(duì)。

「Pink 什么時(shí)候上市?答案永遠(yuǎn)都是2年后?!?

這是當(dāng)時(shí)流傳的一個(gè)內(nèi)部笑話。

但是這個(gè)笑話只是剛剛開始。因?yàn)樗艅倓傞_始膨脹。

系統(tǒng)開發(fā)需要時(shí)間,而隨著時(shí)間推移,市場變化需要「Pink」 更有競爭力,然后原本位于紅色卡片上的「激進(jìn)功能」開始不斷的加入到「Pink」當(dāng)中,然后項(xiàng)目就需要更多時(shí)間來開發(fā)——惡性循環(huán)開始了。

在「Pink」上,蘋果投入了太多,放棄是不可能放棄了,唯一的辦法就是拉更多人入局。當(dāng)時(shí)的 CEO John Sculley 對外宣稱「Pink」操作系統(tǒng)代碼已經(jīng)多達(dá) 150 萬行,并去 IBM 做了內(nèi)部演示。

然后,這個(gè)看起來像是被移植到 PC 上的 System 7 成功地引起了 IBM 的注意。讓比爾·蓋茨最不想看到的事情發(fā)生了:蘋果、IBM 和 摩托羅拉成立 AIM 聯(lián)盟。

從未發(fā)布的「Taligent」系統(tǒng)

AIM 聯(lián)盟成立于 1991年10月2日,此時(shí)距離「Pink」項(xiàng)目開始已經(jīng)過去了3年半。半年之后,蘋果和 IBM 正式組建了合資公司 Taligent .inc ,而其中蘋果占股較小。

原本被拿來吹噓的「Pink」操作系統(tǒng),此時(shí)也更名為 Taligent 。

Taligent OS 的確有著很多超越 Macintosh 的功能,比如更的程序機(jī)制,3D功能等等等等。在整個(gè) UI 界面上,Taligent OS 使用了繼承自「Pink」項(xiàng)目的一些設(shè)計(jì):等軸測的圖標(biāo),偽3D風(fēng)格的圖標(biāo),還有非矩形的窗口(注意看窗口的頂部菜單欄)。

當(dāng)然,Taligent OS 從「PInk」項(xiàng)目繼承過來的最大特性是:一直在開發(fā),從未正式發(fā)布。

1994年,HP 入局,加入 Taligent 公司并且持股 15%,Taligent OS 的一部分技術(shù)開始運(yùn)用到 HP 家的 NewWave 桌面環(huán)境中了:

與此同時(shí),Windows 95 的關(guān)注度越來越高,而媒體吐槽蘋果久未發(fā)布的新系統(tǒng),并嘲諷難產(chǎn)多年的 Taligent OS(還有 Pink),已經(jīng)成了一件政治正確的事情。

雖然 1994 年的時(shí)候,Taligent OS 在 SFA 展會(huì)上使用 Macintosh IIcI 展示了運(yùn)行速度和崩潰速度同樣快的 3D 應(yīng)用,但是它最終還是沒有發(fā)布。

1995年,蘋果出售股權(quán)退出 Taligent 公司,「Pink」 項(xiàng)目的最終產(chǎn)品也并非 Taligent OS,而是 IBM 公司的 AIX 系統(tǒng)中的 Common Point 應(yīng)用。

「Pink」到此終結(jié)。失敗。

最終迷航的「StarTrek」計(jì)劃

在 Taligent OS 研發(fā)期間,蘋果將雞蛋還放到了另外一個(gè)籃子里面,這個(gè)項(xiàng)目的代號(hào)借用了著名的科幻電影《星際迷航》,項(xiàng)目的 Slogan 是「大膽地探索 Mac 之前從未去到過的地方」。

這個(gè)地方就是使用英特爾芯片的 X86 架構(gòu)的電腦上。

「StarTret」項(xiàng)目中,蘋果是和當(dāng)時(shí)的服務(wù)器供應(yīng)商 Novell 共同構(gòu)思的,這個(gè)項(xiàng)目最終因?yàn)閮?nèi)部斗爭、人事糾紛、市場問題而關(guān)閉。值得一提的是,同樣的嘗試在 1985年的時(shí)候就有過,不過那次嘗試很快就被中止了,以至于至今沒有一個(gè)正式的代號(hào)留下來。

這算是2次失敗。

「Copland」 操作系統(tǒng)

作為 「Blue」項(xiàng)目產(chǎn)物的 System 7 最終并沒有徹底解決蘋果在操作系統(tǒng)上的困頓處境,系統(tǒng)依然問題很多,內(nèi)存保護(hù)機(jī)制、搶先式多任務(wù)處理依然還沒有。而 1994年3月開始的「Copland」項(xiàng)目,就是為此做準(zhǔn)備的,它的代號(hào)來源于美國作曲家 Aaron Copland 。

除了在內(nèi)存分配和多任務(wù)處理等核心功能上進(jìn)行開發(fā)提升,它在 GUI 的視覺層面上的優(yōu)化,也花費(fèi)了相當(dāng)多的心思。在視覺層面上,Copland 新設(shè)計(jì)的一套主題名為 Platinum ,所有的元素都有著頗為細(xì)膩的陰影,窗口元素則有著明顯的突起,原本「Pink」項(xiàng)目中的等軸測圖標(biāo)也加入了進(jìn)來。

除了 Platinum 之外,Copland 還加入了面向兒童的主題P,以及更加具有未來派風(fēng)格的主題Z。

除了主題本身之外,Copland 還支持窗口最小化到底部為標(biāo)簽,多用戶登錄(Windows 98 之后才有這個(gè)功能),這種功能類似于現(xiàn)在的家長管理——管理員帳號(hào)可以決定其他用戶可以使用哪些應(yīng)用??梢哉f,非常超前了。

當(dāng)你在 Copland 中拖動(dòng)文件到不同文件夾的時(shí)候,這些文件夾可以自動(dòng)打開,這一功能在當(dāng)時(shí)也是非常先進(jìn)的。

不過,Copland 極具前瞻性的另外一面,就是它本質(zhì)上是一個(gè)「要你命3000」。各種新的功能和特性出于市場需求和項(xiàng)目需求毫無節(jié)制地被加入進(jìn)來,所有的功能相互之間都存在沖突和影響,所有人都很清晰地知道,Copland 是不可能被作為正式產(chǎn)品所發(fā)布出來的。

「它只是一個(gè)不同團(tuán)隊(duì)開發(fā)產(chǎn)品的合集……并且期望它們能夠神奇地組合到一起。」

這是當(dāng)時(shí)的 CEO Amelio 自己說的。

當(dāng)然,Copland 的陣亡不可避免,只不過它的界面管理器和 Platinum 主題最終留到了 Mac OS 8 當(dāng)中,為蘋果公司的自救大業(yè)添磚加瓦。

Copland 失敗了。自家開發(fā)團(tuán)隊(duì)搞不定,只能從外部想辦法了。

4個(gè)外部備選方案

當(dāng)時(shí),CEO Amelio 個(gè)人比較傾向于 Windows NT,并且為此專門同蓋茨通了電話,而蓋茨也表示如果愿意使用 Windows,他可以組建團(tuán)隊(duì)將蘋果的拳頭產(chǎn)品 QuickDraw 移植過來。此時(shí),WIndows 95 已經(jīng)發(fā)布一年了,而 Windows NT 也剛剛發(fā)布,市場反響極好,份額節(jié)節(jié)攀升。

當(dāng)然,蘋果和微軟的命運(yùn)糾纏并不是此時(shí)才開始的。Windows 1.0 時(shí)代,圖形化界面的專利授權(quán)是蘋果授權(quán)給微軟的。

而 Windows 2.0 繼續(xù)沿用 1.0 時(shí)代的設(shè)計(jì),但是蘋果沒有給 2.0 授權(quán),最終引起了糾紛,蓋茨借用不維護(hù) Word 和 Excel 軟件和當(dāng)時(shí)的 CEO 達(dá)成了庭外的和解。這些事情回頭有機(jī)會(huì)細(xì)說。

和CEO的想法不同,當(dāng)時(shí)蘋果的 CTO Ellen Hancock 其實(shí)是想選擇 Solaris 來著,不過它還沒有一套友好的用戶界面,贏面不大。

最終擺在蘋果CEO 和董事會(huì)桌面上的,就剩下兩個(gè)備選了,一個(gè)是 BeOS,另一個(gè)是喬布斯的 NeXTSTEP。

然而這毫無疑問是一次極具戲劇化的選擇,因?yàn)檫@兩個(gè)操作系統(tǒng)背后的兩個(gè)人,有著極深的糾葛。

讓-路易·加西 和喬布斯的糾葛

Be 公司的 CEO 是法國人 讓·路易·加西,他是 1981 年加入蘋果公司并負(fù)責(zé)當(dāng)時(shí)歐洲業(yè)務(wù)。

1985年,他在得知喬布斯計(jì)劃在陣亡將士紀(jì)念日罷免 CEO 約翰·斯卡利(John Sculley)的計(jì)劃后,搶先告知董事會(huì),最終導(dǎo)致喬布斯從蘋果辭職。

1987年,加西啟動(dòng)了 「Skunkworks」項(xiàng)目,而這個(gè)項(xiàng)目的產(chǎn)物就是后來的掌上電腦 Newton MessagePad,而最終這條產(chǎn)品線也是喬布斯關(guān)停的。當(dāng)年的「Pink 」五人組在倉庫里撞見的,就是加西的團(tuán)隊(duì)。

1990年,加西和CEO交惡,并且董事會(huì)對于他所推出的 Macintosh 產(chǎn)品不滿意,最終導(dǎo)致他離開了蘋果,并于次年創(chuàng)立了自己的 Be 公司。

彼時(shí)正在艱難推進(jìn) NeXT 電腦業(yè)務(wù)的喬布斯,在媒體那邊的口碑并不好。而加西反而在這個(gè)時(shí)候,對 NeXT 不吝溢美之詞。

當(dāng)然,最終喬布斯的 NeXT 和 加西的 Be 最終還是擺在了同一張桌子上,被選擇。

極具潛力的 BeOS

BeOS 是一個(gè)在當(dāng)時(shí)來看極為激進(jìn)的操作系統(tǒng)。它并不是為當(dāng)時(shí)更為流行的辦公場景而構(gòu)建,而是一款旨在為多媒體處理而生的操作系統(tǒng)。

它并沒有采用當(dāng)時(shí)所流行的 Unix 的架構(gòu),有著一套相對更加獨(dú)特的系統(tǒng)邏輯和設(shè)計(jì)規(guī)則。

它同樣延續(xù)了當(dāng)時(shí)最為流行的等軸測圖標(biāo)設(shè)計(jì),在配色上更為鮮亮,在視覺化設(shè)計(jì)上,一點(diǎn)都不弱于同時(shí)期的任何操作系統(tǒng),包括 Macintosh 和 NeXTSTEP。

在交互邏輯上,BeOS 沿用了當(dāng)時(shí)很多 Unix 操作系統(tǒng)的右側(cè)交互工具工具欄,正在運(yùn)行的程序可以清晰地在此預(yù)覽,而右上角的 BeOS LOGO 則類似開始菜單,可以呼出程序列表:

BeOS 的圖標(biāo)設(shè)計(jì)在統(tǒng)一性和規(guī)范性上極高,即使在今天看來,很多設(shè)計(jì)都不落俗套:

BeOS 能進(jìn)入蘋果的備選,一個(gè)很重要原因是這套操作系統(tǒng)兼容當(dāng)時(shí) Macintosh 所用的 PowerPC 的架構(gòu)。盡管它一直都未曾推進(jìn)到 1.0 正式版,但是并不影響它在電腦領(lǐng)域收割一大波粉絲。

但是作為一個(gè)操作系統(tǒng)而言,在消費(fèi)市場上依然是一個(gè)失敗的產(chǎn)品。

定位高端的 NeXTSTEP

另外一邊,喬布斯 的 NeXT 電腦并沒有復(fù)制 Macintosh 消費(fèi)市場上的成功。不過,NeXT 作為定位高端的工作站,倒是吸引了不少科學(xué)家和計(jì)算機(jī)領(lǐng)域的研究人員以及頂尖的數(shù)字創(chuàng)意從業(yè)者的注意。

在接近被收購的當(dāng)口,NeXTSTEP 系統(tǒng)已經(jīng)推進(jìn)到了4.0 的大版本。由于它本身在硬件性能上的突出表現(xiàn),在操作系統(tǒng)的各種細(xì)節(jié)上,一點(diǎn)都不吝惜,竭盡全力地刻畫細(xì)節(jié)。而這其中,有很多概念和想法是從 Macintosh 時(shí)代繼承并發(fā)揚(yáng)出來,并惠及后面的 MacOSX 乃至于 macOS。

精巧的 3D 小插件,全彩高清大尺寸擬物化圖標(biāo),底部程序塢組件,以及可以購買軟件的軟件商店,甚至于著名的游戲 Doom 和 Quake 都是在 NeXTSTEP 上首發(fā)的。

無論是內(nèi)部的功能,還是外部的 UI 元素的細(xì)節(jié)控制,NeXTSTEP 都在當(dāng)時(shí)條件允許的前提下,做到了盡善盡美。比如登錄和關(guān)閉窗口中的光影細(xì)節(jié):

(注:NeXTSTEP 是操作系統(tǒng),而OpenStep 是一套 API。)

當(dāng)然,NeXT 本身并不算成功,被蘋果收購是最好的結(jié)局之一,這不僅是市場的選擇,也是蘋果的選擇,是喬布斯的選擇。

結(jié)語:自此重啟

終極對決發(fā)生在 1996年10月12日,地點(diǎn)是帕羅奧托的花園庭院酒店。

CEO Amelio、CTO Hancock ,以及另外 的 6 位董事會(huì)成員是最終決策者。加西志得意滿,沒有作任何演示,而喬布斯不僅使用了他的天賦技能「現(xiàn)實(shí)扭曲力場」,而且如同魔術(shù)師一般演示了 NeXTSTEP 的各種功能和特性。

蘋果公司,喬布斯,加西 三方的命運(yùn)在此匯聚碰撞,然后再次扭轉(zhuǎn)。當(dāng)然,這個(gè)扭轉(zhuǎn)的過程并非一帆風(fēng)順,此時(shí),距離蘋果的命運(yùn)徹底改變,還有4年時(shí)間。

在離開蘋果、創(chuàng)立 NeXT 的階段,喬布斯和蘋果曾數(shù)度交惡,其中所產(chǎn)生的糾紛與訴訟在此刻依然是障礙。

NeXT公司同意了種種限制條款:其產(chǎn)品將作為高端智能終端直接銷售給高校,而且NeXT公司不能在1987年3月之前推出產(chǎn)品。蘋果公司還堅(jiān)持,NeXT的機(jī)器「不能使用與Mac兼容的操作系統(tǒng)」。后來的情況表明,如果當(dāng)時(shí)蘋果公司的要求剛好相反,會(huì)對自身更為有利。

——《史蒂夫·喬布斯傳》

看完了這些失敗的產(chǎn)品的產(chǎn)品,我們終于要說一下成功的產(chǎn)品了。

下一篇,我們將從「水」聊起。

引用來源:

https://en.wikipedia.org/wiki/Jean-Louis_Gass%C3%A9e
https://guidebookgallery.org/articles/sortingoutfactfromfiction
http://toastytech.com/guis/guitimeline2.html
https://lowendmac.com/2005/apples-copland-project/
https://en.wikipedia.org/wiki/Appearance_Manager
https://en.wikipedia.org/wiki/Star_Trek_project
https://dl.acm.org/doi/book/10.5555/582997
https://en.wikipedia.org/wiki/System_7
https://web.archive.org/web/20070120202050/http://robinnet.net/resume/Robin_portfolio_Taligent.htm
https://web.archive.org/web/20070106224709/http://www.wildcrest.com/Potel/Portfolio/InsideTaligentTechnology/WW87.htm
https://www.operating-system.org/betriebssystem/_english/bs-aix.htm

https://www.wired.com/1993/02/taligent/


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

以動(dòng)物為靈感的 LOGO 設(shè)計(jì)欣賞

前端達(dá)人

    對于許多公司和品牌而言,使用帶有含義的動(dòng)物logo,能非常準(zhǔn)確的傳遞品牌信息!比如說豹子的敏捷,獅子的勇猛,長頸鹿的優(yōu)雅,獨(dú)角獸的神秘等等!這種品牌意識(shí)在其徽標(biāo)中使用動(dòng)物象征來策劃。根據(jù)所選動(dòng)物的類型,品牌是強(qiáng)大,快速,奢華,關(guān)懷,神秘和許多其他情感。

1.jpg2.jpg3.jpg4.jpg5.jpg6.jpg7.jpg8.jpg9.jpg10.jpg11.jpg12.jpg13.jpg14.jpg15.jpg16.jpg17.jpg18.jpg19.jpg20.jpg21.jpg22.jpg23.jpg24.jpg25.jpg26.jpg27.jpg28.jpg29.jpg30.jpg31.jpg32.jpg33.jpg34.jpg35.jpg36.jpg37.jpg38.jpg39.jpg40.jpg41.jpg42.jpg43.jpg


大數(shù)據(jù)可視化設(shè)計(jì)賞析(二)

前端達(dá)人


    隨著大數(shù)據(jù)產(chǎn)業(yè)的發(fā)展,越來越多的公司開始實(shí)現(xiàn)數(shù)據(jù)資源的管理和應(yīng)用,尤其是一些在日常生活中經(jīng)常使用大屏幕的大中型企業(yè)。此時(shí),用戶界面設(shè)計(jì)者需要呈現(xiàn)相應(yīng)的視覺效果。接下來為大家介紹大屏可視化的UI設(shè)計(jì)。


點(diǎn)擊查看原圖

 --大屏UI設(shè)計(jì)--


3.jpg

 --大屏UI設(shè)計(jì)--


4.jpg

 --大屏UI設(shè)計(jì)--


5.jpg


 --大屏UI設(shè)計(jì)--





7.jpg


 --大屏UI設(shè)計(jì)--



8.jpg


 --大屏UI設(shè)計(jì)--



9.jpg


 --大屏UI設(shè)計(jì)--



點(diǎn)擊查看原圖

 --大屏UI設(shè)計(jì)--


點(diǎn)擊查看原圖


 --大屏UI設(shè)計(jì)--




點(diǎn)擊查看原圖


 --大屏UI設(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ù)


    更多精彩文章:

       

 大數(shù)據(jù)可視化設(shè)計(jì)賞析(一)

  大數(shù)據(jù)可視化設(shè)計(jì)賞析(二)

  大數(shù)據(jù)可視化設(shè)計(jì)賞析(三)

  大數(shù)據(jù)可視化設(shè)計(jì)賞析(四)

  大數(shù)據(jù)可視化設(shè)計(jì)賞析(五)

  大數(shù)據(jù)可視化設(shè)計(jì)賞析(六)

  大數(shù)據(jù)可視化設(shè)計(jì)賞析(七)


2020年最火的設(shè)計(jì)趨勢Neumorphism

藍(lán)藍(lán)設(shè)計(jì)的小編

藍(lán)藍(lán)注:我非常喜歡這個(gè)風(fēng)格。


日前,在網(wǎng)上流行起了一種叫 Neumorphism 的新風(fēng)格,也有人稱為 Soft UI,這是一種類似于浮雕的效果。這種風(fēng)格的出現(xiàn),給目前流行的扁平化設(shè)計(jì)增加了一種新的設(shè)計(jì)形式,很多媒體甚至還將這個(gè)風(fēng)格列為 2020 的設(shè)計(jì)趨勢,三星 Galaxy 系列的發(fā)布會(huì)宣傳海報(bào)也使用了這種風(fēng)格,可見這個(gè)風(fēng)格的火熱程度。那么一開始我們不討論這個(gè)風(fēng)格好還是不好,先來了解一下這個(gè)新風(fēng)格趨勢。

什么是Neumorphism?

最開始是一位來自烏克蘭的設(shè)計(jì)師 Alexander Plyuto 在各平臺(tái)發(fā)布了新的作品「Skeuomorph Mobile Banking」。這個(gè)作品自發(fā)布以來就獲得了數(shù)十萬瀏覽量,數(shù)千點(diǎn)贊數(shù),熱度持續(xù)飆升并登上 Popular 榜首。

作者是用 Skeuomorph 來命名這個(gè)作品風(fēng)格,評論區(qū)就開始了這種風(fēng)格的討論,有的人說這是新的擬物風(fēng)格(New Skeuomorphism),也有人說這是擬物風(fēng)格 2.0 版本(Skeuomorph 2.0),而后來就有設(shè)計(jì)師創(chuàng)出一個(gè)新的虛構(gòu)名詞,把 New Skeuomorphism 兩個(gè)詞組合,Neo 諧音 New 就是 Neuomorphism。

這個(gè)名字就這么火了。大家都開始用上了這個(gè)名詞出作品,成為了設(shè)計(jì)新趨勢。甚至連作者后面的作品,也使用了這個(gè)名稱。

再后來國外知名設(shè)計(jì)師 Michal Malewicz 發(fā)布了一篇關(guān)于這個(gè)風(fēng)格的文章,將 Neuomorphism,刪減了里面的字母「O」,改成了 Neumorphism。在大神的推動(dòng)下大家又開始爭先恐后地使用這個(gè)名稱。

目前有各種對名稱的說法,Neuomorphism,Neumorphism,Skeuomorphism,Soft UI,在沒有實(shí)際確定的情況下,其實(shí)怎樣叫都無所謂,重點(diǎn)是我們要知道這種設(shè)計(jì)風(fēng)格趨勢,關(guān)注的不是名字,而是設(shè)計(jì)。

還記得擬物風(fēng)格嗎?

既然 Neumorphism 只是一個(gè)虛構(gòu)詞,也沒有任何官方認(rèn)定,那就先不糾結(jié)應(yīng)該叫什么,我們還是來說說它的前身吧,也就是 Skeuomorphism(擬物)。這是最早被 Apple 提出的設(shè)計(jì)概念,就是在界面中模仿現(xiàn)實(shí)物體紋理材質(zhì)的設(shè)計(jì),目的是讓人們在使用界面時(shí)習(xí)慣性地聯(lián)想到現(xiàn)實(shí)物體的使用方式。

擬物寫實(shí)的設(shè)計(jì)風(fēng)格曾經(jīng)風(fēng)靡全球,當(dāng)時(shí)的 UI 設(shè)計(jì)師幾乎都對擬物作品著迷。

而在 2013 年的 WWDC 大會(huì)中,蘋果公司發(fā)布的 iOS7 系統(tǒng),系統(tǒng) UI 使用更簡潔的設(shè)計(jì)風(fēng)格。這場大會(huì)也使擬物風(fēng)格逐漸過時(shí),直到現(xiàn)在扁平風(fēng)格的全面普及,擬物風(fēng)格就再?zèng)]有被廣泛應(yīng)用。

從前幾年的設(shè)計(jì)趨勢可以看到,扁平風(fēng)格作為更更簡潔的風(fēng)格被設(shè)計(jì)師推崇,再加上蘋果系統(tǒng) iOS 7 設(shè)計(jì)風(fēng)格的面世和谷歌系統(tǒng)規(guī)范 Material Design 的普及,扁平風(fēng)格在 UI 設(shè)計(jì)中一直占據(jù)重要位置。

但設(shè)計(jì)的流行趨勢也一直在改變著,在蘋果公司發(fā)布的 iOS 13 系統(tǒng)中,就有出現(xiàn)輕擬物的設(shè)計(jì)手法,接著就有一大堆設(shè)計(jì)師猜測是不是擬物風(fēng)格的回歸,但我看系統(tǒng)中大部分界面設(shè)計(jì)也還是扁平風(fēng)格,并沒有把擬物風(fēng)格作為主要設(shè)計(jì)風(fēng)格,也許只是某種程度上解決了畫筆的視覺識(shí)別問題。

擬物效果能否回歸,這個(gè)言之尚早,但是新的風(fēng)格趨勢也許可以在扁平同質(zhì)化的時(shí)候增添一點(diǎn)靈感與樂趣。

能用在實(shí)際項(xiàng)目中嗎?

1. 設(shè)計(jì)

其實(shí)要做到這個(gè)效果并不難,了解一下這個(gè)風(fēng)格的結(jié)構(gòu)。

主要有三個(gè)樣式組成,1 個(gè)背景+ 2 個(gè)投影。在這個(gè)基礎(chǔ)上,通過改變顏色和大小參數(shù)來達(dá)到不同效果。

我嘗試著使用彩色去做這個(gè)效果,使用淺色背景時(shí)還是有效果的,但使用深一點(diǎn)的顏色時(shí),問題就出現(xiàn)了,效果更像是外發(fā)光或者普通投影。這也可能是為什么大多數(shù)作品都采用比較素的顏色作為背景的原因。

2. 瀏覽

這個(gè)風(fēng)格最大的問題就是缺少對比度。在色彩使用上比較克制,沒有大面積的平鋪顏色,僅在極少的位置進(jìn)行色彩點(diǎn)綴,作用是吸引眼球。從眾多設(shè)計(jì)師的作品可以看出,整體視覺是比較平的,缺少層次。

我拿其中兩張圖進(jìn)行了 15% 強(qiáng)度的模糊處理,可以看到除了點(diǎn)綴的位置以外,界面是沒有重點(diǎn)的。

3. 操作

因?yàn)樵诮缑嬷谐宋淖忠酝?,幾乎所有元素都?yīng)用了這種效果,導(dǎo)致界面所有內(nèi)容看起來都是按鈕的錯(cuò)覺。界面中的主要操作按鈕也沒有被重點(diǎn)提亮。正常態(tài)和點(diǎn)擊態(tài)的對比度并沒有拉開,容易造成狀態(tài)混淆。點(diǎn)擊欲望比較低,不利于引導(dǎo)用戶進(jìn)行下一步操作。

4. 動(dòng)畫

跟擬物效果的動(dòng)畫有同樣的問題,元素動(dòng)畫效果很難做得輕快,更適合按鈕的使用。由于視覺層級(jí)跟背景沒有實(shí)際分離開,就像固定在了背景上一樣,所以動(dòng)畫效果只要出現(xiàn)移動(dòng),就會(huì)讓人覺得不合理,容易給人一種蟲子在皮膚底下蠕動(dòng)的感覺。

5. 開發(fā)

問題跟當(dāng)年的擬物效果的實(shí)現(xiàn)類似,要實(shí)現(xiàn)這個(gè)風(fēng)格,主要有兩個(gè)方式。

切圖:對元素的每個(gè)狀態(tài)(Normal、Hover、Pressed),設(shè)計(jì)師都需要分別提供一張切圖,這個(gè)會(huì)導(dǎo)致資源庫增加大量的圖片。 代碼實(shí)現(xiàn):這個(gè)風(fēng)格的實(shí)現(xiàn)效果是對元素增加兩個(gè)不同方向的投影,通過代碼可以實(shí)現(xiàn)。但是需要開發(fā)對每個(gè)元素添加投影,樣式代碼增多,繁瑣的工作量,開發(fā)也不會(huì)樂意。

附 CSS 實(shí)現(xiàn)新風(fēng)格的網(wǎng)站:Neumorphism 的生成器

綜合分析來看,這種設(shè)計(jì)風(fēng)格目前在項(xiàng)目中推廣和實(shí)現(xiàn)中并不合適。

總結(jié)

這個(gè)風(fēng)格的出現(xiàn)也確實(shí)給大家?guī)砹艘粋€(gè)新的思考,這個(gè)風(fēng)格會(huì)持續(xù)嗎?可用嗎?也許扁平風(fēng)格的多年流行后,設(shè)計(jì)潮流開始往回走,但并不是直接回到擬物風(fēng)格,而是在效率和視覺效果中找一個(gè)平衡點(diǎn)。不論這個(gè)風(fēng)格的對錯(cuò),起碼引起了設(shè)計(jì)師的注意,也激發(fā)了很多設(shè)計(jì)師的靈感,就像當(dāng)年擬物風(fēng)格和扁平風(fēng)格的討論一樣,不分對錯(cuò),設(shè)計(jì)師也不妨多留意一下這個(gè)風(fēng)格,試著做一下效果圖,或許會(huì)有新的發(fā)現(xiàn)。

JavaScript中的Event Loop(事件循環(huán))機(jī)制

seo達(dá)人

事件循環(huán)

JavaScript是單線程,非阻塞的

瀏覽器的事件循環(huán)


執(zhí)行棧和事件隊(duì)列

宏任務(wù)和微任務(wù)

node環(huán)境下的事件循環(huán)


和瀏覽器環(huán)境有何不同

事件循環(huán)模型

宏任務(wù)和微任務(wù)

經(jīng)典題目分析

1. JavaScript是單線程,非阻塞的

單線程:


JavaScript的主要用途是與用戶互動(dòng),以及操作DOM。如果它是多線程的會(huì)有很多復(fù)雜的問題要處理,比如有兩個(gè)線程同時(shí)操作DOM,一個(gè)線程刪除了當(dāng)前的DOM節(jié)點(diǎn),一個(gè)線程是要操作當(dāng)前的DOM階段,最后以哪個(gè)線程的操作為準(zhǔn)?為了避免這種,所以JS是單線程的。即使H5提出了web worker標(biāo)準(zhǔn),它有很多限制,受主線程控制,是主線程的子線程。


非阻塞:通過 event loop 實(shí)現(xiàn)。


2. 瀏覽器的事件循環(huán)

執(zhí)行棧和事件隊(duì)列

為了更好地理解Event Loop,請看下圖(轉(zhuǎn)引自Philip Roberts的演講 《Help, I'm stuck in an event-loop》)

Help, I'm stuck in an event-loop


執(zhí)行棧: 同步代碼的執(zhí)行,按照順序添加到執(zhí)行棧中


function a() {

   b();

   console.log('a');

}

function b() {

   console.log('b')

}

a();

我們可以通過使用 Loupe(Loupe是一種可視化工具,可以幫助您了解JavaScript的調(diào)用堆棧/事件循環(huán)/回調(diào)隊(duì)列如何相互影響)工具來了解上面代碼的執(zhí)行情況。


調(diào)用情況


執(zhí)行函數(shù) a()先入棧

a()中先執(zhí)行函數(shù) b() 函數(shù)b() 入棧

執(zhí)行函數(shù)b(), console.log('b') 入棧

輸出 b, console.log('b')出棧

函數(shù)b() 執(zhí)行完成,出棧

console.log('a') 入棧,執(zhí)行,輸出 a, 出棧

函數(shù)a 執(zhí)行完成,出棧。

事件隊(duì)列: 異步代碼的執(zhí)行,遇到異步事件不會(huì)等待它返回結(jié)果,而是將這個(gè)事件掛起,繼續(xù)執(zhí)行執(zhí)行棧中的其他任務(wù)。當(dāng)異步事件返回結(jié)果,將它放到事件隊(duì)列中,被放入事件隊(duì)列不會(huì)立刻執(zhí)行起回調(diào),而是等待當(dāng)前執(zhí)行棧中所有任務(wù)都執(zhí)行完畢,主線程空閑狀態(tài),主線程會(huì)去查找事件隊(duì)列中是否有任務(wù),如果有,則取出排在第一位的事件,并把這個(gè)事件對應(yīng)的回調(diào)放到執(zhí)行棧中,然后執(zhí)行其中的同步代碼。


我們再上面代碼的基礎(chǔ)上添加異步事件,


function a() {

   b();

   console.log('a');

}

function b() {

   console.log('b')

   setTimeout(function() {

       console.log('c');

   }, 2000)

}

a();

此時(shí)的執(zhí)行過程如下

img


我們同時(shí)再加上點(diǎn)擊事件看一下運(yùn)行的過程


$.on('button', 'click', function onClick() {

   setTimeout(function timer() {

       console.log('You clicked the button!');    

   }, 2000);

});


console.log("Hi!");


setTimeout(function timeout() {

   console.log("Click the button!");

}, 5000);


console.log("Welcome to loupe.");

img


簡單用下面的圖進(jìn)行一下總結(jié)


執(zhí)行棧和事件隊(duì)列


宏任務(wù)和微任務(wù)

為什么要引入微任務(wù),只有一種類型的任務(wù)不行么?


頁面渲染事件,各種IO的完成事件等隨時(shí)被添加到任務(wù)隊(duì)列中,一直會(huì)保持先進(jìn)先出的原則執(zhí)行,我們不能準(zhǔn)確地控制這些事件被添加到任務(wù)隊(duì)列中的位置。但是這個(gè)時(shí)候突然有高優(yōu)先級(jí)的任務(wù)需要盡快執(zhí)行,那么一種類型的任務(wù)就不合適了,所以引入了微任務(wù)隊(duì)列。


不同的異步任務(wù)被分為:宏任務(wù)和微任務(wù)

宏任務(wù):


script(整體代碼)

setTimeout()

setInterval()

postMessage

I/O

UI交互事件

微任務(wù):


new Promise().then(回調(diào))

MutationObserver(html5 新特性)

運(yùn)行機(jī)制

異步任務(wù)的返回結(jié)果會(huì)被放到一個(gè)任務(wù)隊(duì)列中,根據(jù)異步事件的類型,這個(gè)事件實(shí)際上會(huì)被放到對應(yīng)的宏任務(wù)和微任務(wù)隊(duì)列中去。


在當(dāng)前執(zhí)行棧為空時(shí),主線程會(huì)查看微任務(wù)隊(duì)列是否有事件存在


存在,依次執(zhí)行隊(duì)列中的事件對應(yīng)的回調(diào),直到微任務(wù)隊(duì)列為空,然后去宏任務(wù)隊(duì)列中取出最前面的事件,把當(dāng)前的回調(diào)加到當(dāng)前指向棧。

如果不存在,那么再去宏任務(wù)隊(duì)列中取出一個(gè)事件并把對應(yīng)的回到加入當(dāng)前執(zhí)行棧;

當(dāng)前執(zhí)行棧執(zhí)行完畢后時(shí)會(huì)立刻處理所有微任務(wù)隊(duì)列中的事件,然后再去宏任務(wù)隊(duì)列中取出一個(gè)事件。同一次事件循環(huán)中,微任務(wù)永遠(yuǎn)在宏任務(wù)之前執(zhí)行。


在事件循環(huán)中,每進(jìn)行一次循環(huán)操作稱為 tick,每一次 tick 的任務(wù)處理模型是比較復(fù)雜的,但關(guān)鍵步驟如下:


執(zhí)行一個(gè)宏任務(wù)(棧中沒有就從事件隊(duì)列中獲?。?

執(zhí)行過程中如果遇到微任務(wù),就將它添加到微任務(wù)的任務(wù)隊(duì)列中

宏任務(wù)執(zhí)行完畢后,立即執(zhí)行當(dāng)前微任務(wù)隊(duì)列中的所有微任務(wù)(依次執(zhí)行)

當(dāng)前宏任務(wù)執(zhí)行完畢,開始檢查渲染,然后GUI線程接管渲染

渲染完畢后,JS線程繼續(xù)接管,開始下一個(gè)宏任務(wù)(從事件隊(duì)列中獲取)

簡單總結(jié)一下執(zhí)行的順序:

執(zhí)行宏任務(wù),然后執(zhí)行該宏任務(wù)產(chǎn)生的微任務(wù),若微任務(wù)在執(zhí)行過程中產(chǎn)生了新的微任務(wù),則繼續(xù)執(zhí)行微任務(wù),微任務(wù)執(zhí)行完畢后,再回到宏任務(wù)中進(jìn)行下一輪循環(huán)。


宏任務(wù)和微任務(wù)


深入理解js事件循環(huán)機(jī)制(瀏覽器篇) 這邊文章中有個(gè)特別形象的動(dòng)畫,大家可以看著理解一下。


console.log('start')


setTimeout(function() {

 console.log('setTimeout')

}, 0)


Promise.resolve().then(function() {

 console.log('promise1')

}).then(function() {

 console.log('promise2')

})


console.log('end')

瀏覽器事件循環(huán)


全局代碼壓入執(zhí)行棧執(zhí)行,輸出 start

setTimeout壓入 macrotask隊(duì)列,promise.then 回調(diào)放入 microtask隊(duì)列,最后執(zhí)行 console.log('end'),輸出 end

調(diào)用棧中的代碼執(zhí)行完成(全局代碼屬于宏任務(wù)),接下來開始執(zhí)行微任務(wù)隊(duì)列中的代碼,執(zhí)行promise回調(diào),輸出 promise1, promise回調(diào)函數(shù)默認(rèn)返回 undefined, promise狀態(tài)變成 fulfilled ,觸發(fā)接下來的 then回調(diào),繼續(xù)壓入 microtask隊(duì)列,此時(shí)產(chǎn)生了新的微任務(wù),會(huì)接著把當(dāng)前的微任務(wù)隊(duì)列執(zhí)行完,此時(shí)執(zhí)行第二個(gè) promise.then回調(diào),輸出 promise2

此時(shí),microtask隊(duì)列 已清空,接下來會(huì)會(huì)執(zhí)行 UI渲染工作(如果有的話),然后開始下一輪 event loop, 執(zhí)行 setTimeout的回調(diào),輸出 setTimeout

最后的執(zhí)行結(jié)果如下


start

end

promise1

promise2

setTimeout

node環(huán)境下的事件循環(huán)

和瀏覽器環(huán)境有何不同

表現(xiàn)出的狀態(tài)與瀏覽器大致相同。不同的是 node 中有一套自己的模型。node 中事件循環(huán)的實(shí)現(xiàn)依賴 libuv 引擎。Node的事件循環(huán)存在幾個(gè)階段。


如果是node10及其之前版本,microtask會(huì)在事件循環(huán)的各個(gè)階段之間執(zhí)行,也就是一個(gè)階段執(zhí)行完畢,就會(huì)去執(zhí)行 microtask隊(duì)列中的任務(wù)。


node版本更新到11之后,Event Loop運(yùn)行原理發(fā)生了變化,一旦執(zhí)行一個(gè)階段里的一個(gè)宏任務(wù)(setTimeout,setInterval和setImmediate)就立刻執(zhí)行微任務(wù)隊(duì)列,跟瀏覽器趨于一致。下面例子中的代碼是按照的去進(jìn)行分析的。


事件循環(huán)模型

┌───────────────────────┐

┌─>│        timers         │

│  └──────────┬────────────┘

│  ┌──────────┴────────────┐

│  │     I/O callbacks     │

│  └──────────┬────────────┘

│  ┌──────────┴────────────┐

│  │     idle, prepare     │

│  └──────────┬────────────┘      ┌───────────────┐

│  ┌──────────┴────────────┐      │   incoming:   │

│  │         poll          │<──connections───     │

│  └──────────┬────────────┘      │   data, etc.  │

│  ┌──────────┴────────────┐      └───────────────┘

│  │        check          │

│  └──────────┬────────────┘

│  ┌──────────┴────────────┐

└──┤    close callbacks    │

  └───────────────────────┘

事件循環(huán)各階段詳解

node中事件循環(huán)的順序


外部輸入數(shù)據(jù) --> 輪詢階段(poll) --> 檢查階段(check) --> 關(guān)閉事件回調(diào)階段(close callback) --> 定時(shí)器檢查階段(timer) --> I/O 事件回調(diào)階段(I/O callbacks) --> 閑置階段(idle, prepare) --> 輪詢階段...


這些階段大致的功能如下:


定時(shí)器檢測階段(timers): 這個(gè)階段執(zhí)行定時(shí)器隊(duì)列中的回調(diào)如 setTimeout() 和 setInterval()。

I/O事件回調(diào)階段(I/O callbacks): 這個(gè)階段執(zhí)行幾乎所有的回調(diào)。但是不包括close事件,定時(shí)器和setImmediate()的回調(diào)。

閑置階段(idle, prepare): 這個(gè)階段僅在內(nèi)部使用,可以不必理會(huì)

輪詢階段(poll): 等待新的I/O事件,node在一些特殊情況下會(huì)阻塞在這里。

檢查階段(check): setImmediate()的回調(diào)會(huì)在這個(gè)階段執(zhí)行。

關(guān)閉事件回調(diào)階段(close callbacks): 例如socket.on('close', ...)這種close事件的回調(diào)

poll:

這個(gè)階段是輪詢時(shí)間,用于等待還未返回的 I/O 事件,比如服務(wù)器的回應(yīng)、用戶移動(dòng)鼠標(biāo)等等。

這個(gè)階段的時(shí)間會(huì)比較長。如果沒有其他異步任務(wù)要處理(比如到期的定時(shí)器),會(huì)一直停留在這個(gè)階段,等待 I/O 請求返回結(jié)果。

check:

該階段執(zhí)行setImmediate()的回調(diào)函數(shù)。


close:

該階段執(zhí)行關(guān)閉請求的回調(diào)函數(shù),比如socket.on('close', ...)。


timer階段:

這個(gè)是定時(shí)器階段,處理setTimeout()和setInterval()的回調(diào)函數(shù)。進(jìn)入這個(gè)階段后,主線程會(huì)檢查一下當(dāng)前時(shí)間,是否滿足定時(shí)器的條件。如果滿足就執(zhí)行回調(diào)函數(shù),否則就離開這個(gè)階段。


I/O callback階段:

除了以下的回調(diào)函數(shù),其他都在這個(gè)階段執(zhí)行:


setTimeout()和setInterval()的回調(diào)函數(shù)

setImmediate()的回調(diào)函數(shù)

用于關(guān)閉請求的回調(diào)函數(shù),比如socket.on('close', ...)

宏任務(wù)和微任務(wù)

宏任務(wù):


setImmediate

setTimeout

setInterval

script(整體代碼)

I/O 操作等。

微任務(wù):


process.nextTick

new Promise().then(回調(diào))

Promise.nextTick, setTimeout, setImmediate的使用場景和區(qū)別

Promise.nextTick

process.nextTick 是一個(gè)獨(dú)立于 eventLoop 的任務(wù)隊(duì)列。

在每一個(gè) eventLoop 階段完成后會(huì)去檢查 nextTick 隊(duì)列,如果里面有任務(wù),會(huì)讓這部分任務(wù)優(yōu)先于微任務(wù)執(zhí)行。

是所有異步任務(wù)中最快執(zhí)行的。


setTimeout:

setTimeout()方法是定義一個(gè)回調(diào),并且希望這個(gè)回調(diào)在我們所指定的時(shí)間間隔后第一時(shí)間去執(zhí)行。


setImmediate:

setImmediate()方法從意義上將是立刻執(zhí)行的意思,但是實(shí)際上它卻是在一個(gè)固定的階段才會(huì)執(zhí)行回調(diào),即poll階段之后。


經(jīng)典題目分析

一. 下面代碼輸出什么

async function async1() {

   console.log('async1 start');

   await async2();

   console.log('async1 end');

}

async function async2() {

   console.log('async2');

}

console.log('script start');

setTimeout(function() {

   console.log('setTimeout');

}, 0)

async1();

new Promise(function(resolve) {

   console.log('promise1');

   resolve();

}).then(function() {

   console.log('promise2');

});

console.log('script end');

先執(zhí)行宏任務(wù)(當(dāng)前代碼塊也算是宏任務(wù)),然后執(zhí)行當(dāng)前宏任務(wù)產(chǎn)生的微任務(wù),然后接著執(zhí)行宏任務(wù)


從上往下執(zhí)行代碼,先執(zhí)行同步代碼,輸出 script start

遇到setTimeout,現(xiàn)把 setTimeout 的代碼放到宏任務(wù)隊(duì)列中

執(zhí)行 async1(),輸出 async1 start, 然后執(zhí)行 async2(), 輸出 async2,把 async2() 后面的代碼 console.log('async1 end')放到微任務(wù)隊(duì)列中

接著往下執(zhí)行,輸出 promise1,把 .then()放到微任務(wù)隊(duì)列中;注意Promise本身是同步的立即執(zhí)行函數(shù),.then是異步執(zhí)行函數(shù)

接著往下執(zhí)行, 輸出 script end。同步代碼(同時(shí)也是宏任務(wù))執(zhí)行完成,接下來開始執(zhí)行剛才放到微任務(wù)中的代碼

依次執(zhí)行微任務(wù)中的代碼,依次輸出 async1 end、 promise2, 微任務(wù)中的代碼執(zhí)行完成后,開始執(zhí)行宏任務(wù)中的代碼,輸出 setTimeout

最后的執(zhí)行結(jié)果如下


script start

async1 start

async2

promise1

script end

async1 end

promise2

setTimeout

二. 下面代碼輸出什么

console.log('start');

setTimeout(() => {

   console.log('children2');

   Promise.resolve().then(() => {

       console.log('children3');

   })

}, 0);


new Promise(function(resolve, reject) {

   console.log('children4');

   setTimeout(function() {

       console.log('children5');

       resolve('children6')

   }, 0)

}).then((res) => {

   console.log('children7');

   setTimeout(() => {

       console.log(res);

   }, 0)

})

這道題跟上面題目不同之處在于,執(zhí)行代碼會(huì)產(chǎn)生很多個(gè)宏任務(wù),每個(gè)宏任務(wù)中又會(huì)產(chǎn)生微任務(wù)


從上往下執(zhí)行代碼,先執(zhí)行同步代碼,輸出 start

遇到setTimeout,先把 setTimeout 的代碼放到宏任務(wù)隊(duì)列①中

接著往下執(zhí)行,輸出 children4, 遇到setTimeout,先把 setTimeout 的代碼放到宏任務(wù)隊(duì)列②中,此時(shí).then并不會(huì)被放到微任務(wù)隊(duì)列中,因?yàn)?resolve是放到 setTimeout中執(zhí)行的

代碼執(zhí)行完成之后,會(huì)查找微任務(wù)隊(duì)列中的事件,發(fā)現(xiàn)并沒有,于是開始執(zhí)行宏任務(wù)①,即第一個(gè) setTimeout, 輸出 children2,此時(shí),會(huì)把 Promise.resolve().then放到微任務(wù)隊(duì)列中。

宏任務(wù)①中的代碼執(zhí)行完成后,會(huì)查找微任務(wù)隊(duì)列,于是輸出 children3;然后開始執(zhí)行宏任務(wù)②,即第二個(gè) setTimeout,輸出 children5,此時(shí)將.then放到微任務(wù)隊(duì)列中。

宏任務(wù)②中的代碼執(zhí)行完成后,會(huì)查找微任務(wù)隊(duì)列,于是輸出 children7,遇到 setTimeout,放到宏任務(wù)隊(duì)列中。此時(shí)微任務(wù)執(zhí)行完成,開始執(zhí)行宏任務(wù),輸出 children6;

最后的執(zhí)行結(jié)果如下


start

children4

children2

children3

children5

children7

children6

三. 下面代碼輸出什么

const p = function() {

   return new Promise((resolve, reject) => {

       const p1 = new Promise((resolve, reject) => {

           setTimeout(() => {

               resolve(1)

           }, 0)

           resolve(2)

       })

       p1.then((res) => {

           console.log(res);

       })

       console.log(3);

       resolve(4);

   })

}



p().then((res) => {

   console.log(res);

})

console.log('end');

執(zhí)行代碼,Promise本身是同步的立即執(zhí)行函數(shù),.then是異步執(zhí)行函數(shù)。遇到setTimeout,先把其放入宏任務(wù)隊(duì)列中,遇到p1.then會(huì)先放到微任務(wù)隊(duì)列中,接著往下執(zhí)行,輸出 3

遇到 p().then 會(huì)先放到微任務(wù)隊(duì)列中,接著往下執(zhí)行,輸出 end

同步代碼塊執(zhí)行完成后,開始執(zhí)行微任務(wù)隊(duì)列中的任務(wù),首先執(zhí)行 p1.then,輸出 2, 接著執(zhí)行p().then, 輸出 4

微任務(wù)執(zhí)行完成后,開始執(zhí)行宏任務(wù),setTimeout, resolve(1),但是此時(shí) p1.then已經(jīng)執(zhí)行完成,此時(shí) 1不會(huì)輸出。

最后的執(zhí)行結(jié)果如下


3

end

2

4

你可以將上述代碼中的 resolve(2)注釋掉, 此時(shí) 1才會(huì)輸出,輸出結(jié)果為 3 end 4 1。


const p = function() {

   return new Promise((resolve, reject) => {

       const p1 = new Promise((resolve, reject) => {

           setTimeout(() => {

               resolve(1)

           }, 0)

       })

       p1.then((res) => {

           console.log(res);

       })

       console.log(3);

       resolve(4);

   })

}



p().then((res) => {

   console.log(res);

})

console.log('end');

3

end

4

1

最后強(qiáng)烈推薦幾個(gè)非常好的講解 event loop 的視頻:


What the heck is the event loop anyway? | Philip Roberts | JSConf EU

Jake Archibald: In The Loop - JSConf.Asia

大屏數(shù)據(jù)可視化設(shè)計(jì)指南

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

可能是目前大屏數(shù)據(jù)可視化設(shè)計(jì)介紹最詳盡的一篇文章了,可以當(dāng)做設(shè)計(jì)手冊使用的一篇經(jīng)驗(yàn)分享

Image title


一、基礎(chǔ)概念


1、什么是數(shù)據(jù)可視化


把相對復(fù)雜、抽象的數(shù)據(jù)通過可視的方式以人們更易理解的形式展示出來的一系列手段叫做數(shù)據(jù)可視化,數(shù)據(jù)可視化是為了更形象地表達(dá)數(shù)據(jù)內(nèi)在的信息和規(guī)律,促進(jìn)數(shù)據(jù)信息的傳播和應(yīng)用。


在當(dāng)前新技術(shù)支持下,數(shù)據(jù)可視化除了“可視”,還可有可交流、可互動(dòng)的特點(diǎn)。數(shù)據(jù)可視化的本質(zhì)是數(shù)據(jù)空間到圖形空間的映射,是抽象數(shù)據(jù)的具象表達(dá)。

Image title


數(shù)據(jù)可視化作品《launchit》

作者:Shane Mielke 

作者寫了本書,地圖上顯示了世界各地讀者的分布情況及對應(yīng)人數(shù)

Image title


數(shù)據(jù)可視化作品《world-drawn-by-travelers》

作者:TripHappy

國家之間相互連通的旅游路線,顏色越相近的國家,表明兩國家的人們互動(dòng)越頻繁

Image title


2、什么是大屏數(shù)據(jù)可視化


大屏數(shù)據(jù)可視化是以大屏為主要展示載體的數(shù)據(jù)可視化設(shè)計(jì)。

“大面積、炫酷動(dòng)效、豐富色彩”,大屏易在觀感上給人留下震撼印象,便于營造某些獨(dú)特氛圍、打造儀式感。電商雙11類大屏利用此特點(diǎn)打造了熱烈、狂歡的節(jié)日氛圍,原本看不見的數(shù)據(jù)可視化后,便能調(diào)動(dòng)人的情緒、引發(fā)人的共鳴,傳遞企業(yè)文化和價(jià)值。

Image title

Image title


利用面積大、可展示信息多的特點(diǎn),通過關(guān)鍵信息大屏共享的方式可方便團(tuán)隊(duì)討論、決策,故大屏也常用來做數(shù)據(jù)分析監(jiān)測使用。大屏數(shù)據(jù)可視化目前主要有信息展示、數(shù)據(jù)分析及監(jiān)控預(yù)警三大類。


數(shù)據(jù)分析類

圖片來源:必應(yīng);圖片作者:帆軟軟件有限公司

Image title


二、大屏數(shù)據(jù)可視化設(shè)計(jì)原則:設(shè)計(jì)服務(wù)需求、先總覽后細(xì)節(jié)


設(shè)計(jì)服務(wù)需求


大屏設(shè)計(jì)要避免為了展示而展示,排版布局、圖表選用等應(yīng)服務(wù)于業(yè)務(wù),所以大屏設(shè)計(jì)是在充分了解業(yè)務(wù)需求的基礎(chǔ)上進(jìn)行的。那什么是業(yè)務(wù)需求呢?業(yè)務(wù)需求就是要解決的問題或達(dá)成的目標(biāo)。設(shè)計(jì)師通過設(shè)計(jì)的手段幫助相關(guān)人員達(dá)成這個(gè)目標(biāo),是大屏數(shù)據(jù)可視化的價(jià)值所在。


先總覽后細(xì)節(jié)


大屏因?yàn)榇?,承載數(shù)據(jù)多,為了避免觀者迷失,大屏信息呈現(xiàn)要有焦點(diǎn)、有主次。可以通過對比,先把核心數(shù)據(jù)拋給用戶,待用戶理解大屏主要內(nèi)容與展示邏輯后,再逐級(jí)瀏覽二三級(jí)內(nèi)容。部分細(xì)節(jié)數(shù)據(jù)可暫時(shí)隱藏,用戶需要時(shí)可通過鼠標(biāo)點(diǎn)擊等交互方式喚起。



三、大屏可視化設(shè)計(jì)流程


規(guī)范的流程是好結(jié)果的保證。找到一個(gè)可參考的流程,然后步步為營,就能避免很多不必要的返工,保證設(shè)計(jì)質(zhì)量和項(xiàng)目進(jìn)度。

Image title


1、根據(jù)業(yè)務(wù)場景抽取關(guān)鍵指標(biāo)


關(guān)鍵指標(biāo)是一些概括性詞語,是對一組或者一系列數(shù)據(jù)的統(tǒng)稱。一般情況下,一個(gè)指標(biāo)在大屏上獨(dú)占一塊區(qū)域,所以通過關(guān)鍵指標(biāo)定義,我們就知道大屏上大概會(huì)顯示哪些內(nèi)容以及大屏?xí)环譃閹讐K。以共享單車電子圍欄監(jiān)控系統(tǒng)為例,這里的關(guān)鍵指標(biāo)有:企業(yè)停車時(shí)長、企業(yè)違停量、熱點(diǎn)違停區(qū)域、車輛入欄率等。


確定關(guān)鍵指標(biāo)后,根據(jù)業(yè)務(wù)需求擬定各個(gè)指標(biāo)展示的優(yōu)先級(jí)(主、次、輔)。

Image title



2、確立指標(biāo)分析維度


“橫看成嶺側(cè)成峰”。同一個(gè)指標(biāo)的數(shù)據(jù),從不同維度分析就有不同結(jié)果。很多小伙伴做完可視化設(shè)計(jì),發(fā)現(xiàn)可視化圖形并沒有準(zhǔn)確表達(dá)自己的意圖,也沒能向觀者傳達(dá)出應(yīng)有的信息,可視化圖形讓人困惑或看不懂。出現(xiàn)這種情況很大程度就是因?yàn)榉治龅木S度沒有找準(zhǔn)或定義的比較混亂。

Image title

上圖向大家展示了數(shù)據(jù)分析常用的4個(gè)維度,我們在選定指標(biāo)后,就需要跟項(xiàng)目組其他小伙伴討論:我們的各個(gè)指標(biāo)主要想給大家展示什么,更進(jìn)一步的講,是我們想通過可視化表達(dá)什么樣的規(guī)律和信息。而上圖,可以引導(dǎo)我們從“聯(lián)系、分布、比較、構(gòu)成”四個(gè)維度更有邏輯的思考這個(gè)問題。


聯(lián)系:數(shù)據(jù)之間的相關(guān)性

分布:指標(biāo)里的數(shù)據(jù)主要集中在什么范圍、表現(xiàn)出怎樣的規(guī)律

比較:數(shù)據(jù)之間存在何種差異、差異主要體現(xiàn)在哪些方面

構(gòu)成:指標(biāo)里的數(shù)據(jù)都由哪幾部分組成、每部分占比如何


當(dāng)然,上圖例舉的示例圖表都比較傳統(tǒng),在大屏數(shù)據(jù)可視化中常還有另一類地理信息(常以2/3D地圖、地球呈現(xiàn))出現(xiàn)。上圖雖未包含這類圖形,但它提供給我們的確定數(shù)據(jù)分析維度的思路和方法是相通的,可借鑒。


3、選定可視化圖表類型


當(dāng)確定好分析維度后,事實(shí)上我們所能選用的圖表類型也就基本確定了。接下來我們只需要從少數(shù)幾個(gè)圖表里篩選出最能體現(xiàn)我們設(shè)計(jì)意圖的那個(gè)就好了。


選定圖表注意事項(xiàng):易理解、可實(shí)現(xiàn);


易理解就是可視化設(shè)計(jì)要考慮大屏最終用戶,可視化結(jié)果應(yīng)該是一看就懂,不需要思考和過度理解,因而選定圖表時(shí)要理性,避免為了視覺上的效果而選擇一些對用戶不太友好的圖形。

Image title


可實(shí)現(xiàn)


1、我們需要了解現(xiàn)有數(shù)據(jù)的信息、規(guī)模、特征、聯(lián)系等,然后評估數(shù)據(jù)是否能夠支撐相應(yīng)的可視化表現(xiàn)

2、我們設(shè)計(jì)的圖形圖表,要開發(fā)能夠?qū)崿F(xiàn)。實(shí)際工作中,一些可視化效果開發(fā)用代碼寫很容易實(shí)現(xiàn),效果也不錯(cuò),但這些效果設(shè)計(jì)師用Ps/Ai/Ae這些工具模擬時(shí)會(huì)發(fā)現(xiàn)比較困難;同樣的,某些效果設(shè)計(jì)師用設(shè)計(jì)工具可以輕易實(shí)現(xiàn),但開發(fā)要用代碼落地卻非常困難,所以大屏設(shè)計(jì)中跟開發(fā)常溝通非常重要,我們需要明確哪些地方設(shè)計(jì)師可以盡情發(fā)揮,哪些地方需要謹(jǐn)慎設(shè)計(jì)!一個(gè)項(xiàng)目總有周期與預(yù)算限制,不會(huì)無限期的修改迭代,所以設(shè)計(jì)師在這里需要抓住重點(diǎn),有取舍,不鉆牛角尖、死磕不放。

Image title


4、了解物理大屏,確定設(shè)計(jì)稿尺寸

多數(shù)情況下設(shè)計(jì)稿分辨率即被投大屏的信號(hào)源電腦屏幕的分辨率。有多個(gè)信號(hào)源時(shí),就會(huì)有多個(gè)設(shè)計(jì)稿,此時(shí)每個(gè)設(shè)計(jì)稿的尺寸即對應(yīng)信號(hào)源電腦屏幕的分辨率

Image title

一般情況下設(shè)計(jì)稿的分辨率就是電腦的分辨率,當(dāng)有多個(gè)信號(hào)源時(shí),有時(shí)會(huì)通過顯卡自定義電腦屏幕分辨率,從而使電腦顯示分辨率不等于其物理分辨率,此時(shí),對應(yīng)設(shè)計(jì)稿的分辨率也就變成了設(shè)置后的分辨率;此外,當(dāng)被投電腦分辨率長寬比與大屏物理長寬比不一致時(shí)(單信號(hào)源),也會(huì)對被投電腦屏幕分辨率做自定義調(diào)整,這種情況設(shè)計(jì)稿分辨率也會(huì)發(fā)生變化。所以設(shè)計(jì)開始前了解物理大屏長寬比很重要。



5、頁面布局、劃分


尺寸確立后,接下來要對設(shè)計(jì)稿進(jìn)行布局和頁面的劃分。這里的劃分,主要根據(jù)我們之前定好的業(yè)務(wù)指標(biāo)進(jìn)行,核心業(yè)務(wù)指標(biāo)安排在中間位置、占較大面積;其余的指標(biāo)按優(yōu)先級(jí)依次在核心指標(biāo)周圍展開。一般把有關(guān)聯(lián)的指標(biāo)讓其相鄰或靠近,把圖表類型相近的指標(biāo)放一起,這樣能減少觀者認(rèn)知上的負(fù)擔(dān)并提高信息傳遞的效率。

Image title


6、定義設(shè)計(jì)風(fēng)格


很多小伙伴也許沒接觸過大屏設(shè)計(jì)工作,但大多數(shù)人都應(yīng)該有APP或者Web風(fēng)格定義的經(jīng)驗(yàn)。我們在定義一款A(yù)PP或者Web頁面設(shè)計(jì)風(fēng)格時(shí)常用的方法是什么呢?情緒版!

大屏雖酷炫,但實(shí)際上也是運(yùn)行在瀏覽器里的Web頁面,所以大屏設(shè)計(jì)風(fēng)格定義方法也同樣可以是用情緒版來做,這種方法也是目前比較科學(xué)的風(fēng)格定義手段

Image title

上圖提供了情緒版應(yīng)用的腦圖,具體操作細(xì)節(jié)不做介紹,不太了解的小伙伴可以自己找找資料哈。

情緒版的一套流程下來,我們定義的風(fēng)格基本是科學(xué)準(zhǔn)確的,可以指導(dǎo)我們執(zhí)行設(shè)計(jì)。如果是給甲方爸爸做大屏,這個(gè)流程也可以讓我們提出的方案更有說服力



7、可視化設(shè)計(jì)


根據(jù)定義好的設(shè)計(jì)風(fēng)格與選定的圖表類型進(jìn)行合理的可視化設(shè)計(jì)。目前來講大屏可視化主要有指標(biāo)類信息點(diǎn)和地理類信息點(diǎn)兩大可視化數(shù)據(jù)。指標(biāo)類信息點(diǎn)可視化效果相對簡單易實(shí)現(xiàn),而地理類信息點(diǎn)一般可視化效果酷炫,但是開發(fā)相對困難,需要設(shè)計(jì)師跟開發(fā)多溝通的。地理類信息一般具有很強(qiáng)的空間感、豐富的粒子、流光等動(dòng)效、高精度的模型和材質(zhì)以及可交互實(shí)時(shí)演算等特點(diǎn),所以對于被投電腦、大屏拼接器等硬件設(shè)備的性能會(huì)有要求,硬件配置不夠的情況下可能出現(xiàn)卡頓甚至崩潰的情況,所以這點(diǎn)也是需要提前溝通評估的。

Image title


8、樣圖溝通確認(rèn)


這里的溝通分三個(gè)層面:設(shè)計(jì)師對內(nèi)溝通、設(shè)計(jì)師對外溝通、設(shè)計(jì)師與大屏的“溝通”。

Image title

樣圖溝通環(huán)節(jié),最初的樣圖不需要十分精致,我們可以把它理解為一個(gè)“低保真”原型,然后通過不斷溝通修改,讓它逐步完善精致起來,也就是小步快跑,避免那種一下子走到終點(diǎn),然后又大修大改的情況。


因?yàn)槲覀冊谇皫撞揭呀?jīng)分別確定了頁面布局、圖表類型、頁面風(fēng)格特點(diǎn),所以這一步我們需要用盡可能簡單的方法 ,把之前幾步的成果在頁面上快速體現(xiàn)出來,然后根據(jù)樣圖效果嘗試確定五方面內(nèi)容:

1、之前確立的布局在放入設(shè)計(jì)內(nèi)容后是否依然合適

2、確立的圖表類型帶入數(shù)據(jù)后是否仍然客觀準(zhǔn)確

3、根據(jù)關(guān)鍵元素、色彩、結(jié)構(gòu)、質(zhì)感打造出的頁面風(fēng)格是否基本傳達(dá)出了預(yù)期的氛圍和感受

4、已有的樣式、數(shù)據(jù)內(nèi)容、動(dòng)效等在開發(fā)實(shí)現(xiàn)方面是否存在問題

5、大屏是否存在色差、文字內(nèi)容是否清晰可見、頁面是否存在變形拉伸等現(xiàn)象


跟大屏“溝通”是比較重要也是個(gè)特殊的環(huán)節(jié),這也是我覺得大屏設(shè)計(jì)跟其它設(shè)計(jì)不一樣的地方,大屏有它自己獨(dú)特的分辨率、屏幕組成、色彩顯示以及運(yùn)行、展示環(huán)境,這里的很多問題只有設(shè)計(jì)稿投到大屏上才能夠被發(fā)現(xiàn),所以這一步在樣圖溝通確認(rèn)環(huán)節(jié)非常重要,有時(shí)候需要開發(fā)出demo,反復(fù)測試多次。



9、頁面定稿、開發(fā)


事實(shí)上頁面開發(fā)階段并不是到了這一步才進(jìn)行,這里說的頁面開發(fā)僅指前端樣式的實(shí)現(xiàn),實(shí)際上后臺(tái)數(shù)據(jù)準(zhǔn)備工作在定義好分析指標(biāo)后就已經(jīng)開始進(jìn)行了,而我們當(dāng)前的工作是把數(shù)據(jù)接入到前端,然后用設(shè)計(jì)的樣式呈現(xiàn)出來。

Image title

切圖與標(biāo)注

由于大屏實(shí)際就是一個(gè)web頁面,所以開發(fā)階段的切圖與標(biāo)注是少不了的。


切圖:哪些元素需要切圖,怎么切?

一般開發(fā)用代碼寫不出的樣式或動(dòng)效,都需要設(shè)計(jì)師切圖作支持:比如數(shù)據(jù)容器的邊框、小的動(dòng)效、頁面整體大背景、部分圖標(biāo)等。切圖按正常網(wǎng)頁設(shè)計(jì)標(biāo)準(zhǔn)切就可以了。


標(biāo)注

Web頁面用什么插件做標(biāo)注這個(gè)大家都很熟悉,我就不多說了。需要注意的是,如果大屏頁面需要在不同比例的終端展示,那么此時(shí)的標(biāo)注與開發(fā)可以使用rem作為基本單位來實(shí)現(xiàn),這樣實(shí)現(xiàn)的大屏頁面在后期會(huì)有更好的擴(kuò)展性與適應(yīng)性。



10、整體細(xì)節(jié)調(diào)優(yōu)與測試


這部分是指頁面開發(fā)完成后,將真實(shí)頁面投放到大屏進(jìn)行的測試與優(yōu)化。這里主要有兩部分工作。


視覺方面的測試(有點(diǎn)像APP的UI走查):關(guān)鍵視覺元素、字體字號(hào)、頁面動(dòng)效、圖形圖表等是否按預(yù)期顯示、有無變形、錯(cuò)位等情況。


性能與數(shù)據(jù)方面的測試:圖形圖表動(dòng)畫是否流暢、數(shù)據(jù)加載、刷新有無異常;頁面長時(shí)間展示是否存在奔潰、卡死等情況;后臺(tái)控制系統(tǒng)能否正常切換前端頁面顯示。



四、大屏設(shè)計(jì)的注意事項(xiàng)


1、字體使用


字體優(yōu)先使用系統(tǒng)默認(rèn)字體,需要嵌入字體時(shí)考慮字體的可識(shí)別性、與當(dāng)前設(shè)計(jì)風(fēng)格是否融合、是否可免費(fèi)商用。

Image title

如果頁面是云端部署,需要嵌入字體包時(shí),我們可以使用FontCreator這類的軟件把那些用不到的字符從字體包中刪掉,然后重新打包上傳,減小字體包大小,可以優(yōu)化頁面加載體驗(yàn),避免在替換默認(rèn)字體的過程中出現(xiàn)頁面文字跳動(dòng)等現(xiàn)象。(一般來講一套字體文件包含了阿拉伯文、符號(hào)、拉丁文、日文、西里爾文、希臘文、拼音、注音符號(hào)等多種字符,對于大屏這個(gè)明確的場景,我們可以刪掉其它使用不到的字符,僅保留中文、拼音和數(shù)字)

Image title

關(guān)于字體版權(quán)獲取相關(guān)問題,公眾號(hào)回復(fù)“可視化”獲取



2、顏色搭配


 1、色彩明度與飽和度差異顯著、對比鮮明, 盡量避免使用鄰近色配色

Image title

2、使用深色暗色背景:深色暗色背景可減少拼縫帶來的不適感。由于背景面積大,使用暗色背景還能夠減少屏幕色差對整體表現(xiàn)的影響;同時(shí)暗色背景更能聚焦視覺,也方便突出內(nèi)容、做出一些流光、粒子等酷炫的效果,


3、漸變色慎重使用:大屏普遍色域有偏差,顯示偏色,因而使用漸變色需要根據(jù)大屏反饋確定是否調(diào)整,純色最佳。



3、頁面布局

主次分明、條理清晰、注意留白,合理利用大屏上各小的顯示單元,并盡量避免關(guān)鍵數(shù)據(jù)被拼縫分割

Image title



五、Q&A


1、設(shè)計(jì)稿投到大屏上顯示效果不佳怎么辦?

大屏的分辨率、比例、使用環(huán)境、投射方式等均會(huì)對設(shè)計(jì)造成影響。理想情況下,我們應(yīng)該在設(shè)計(jì)開始前,就能打開大屏系統(tǒng)做一些簡單測試。我們可以從網(wǎng)上收集不同設(shè)計(jì)師不同風(fēng)格的大屏設(shè)計(jì)作品,然后投上去查看實(shí)際效果。因?yàn)榇蠖鄶?shù)時(shí)候大屏都會(huì)存在色彩偏差,這時(shí)通過測試我們就能發(fā)現(xiàn)漸變色、鄰近色等不同類型的色彩搭配是否可以在目標(biāo)大屏上良好呈現(xiàn),如果不可以,那我們設(shè)計(jì)進(jìn)行時(shí)就不要使用顯示效果不佳的色彩搭配。另一方面,樣圖溝通環(huán)節(jié)及時(shí)測試也很重要。



2、大屏設(shè)計(jì)定稿后,切圖切幾倍圖?

由于是將我們電腦屏幕投射到了大屏,大屏上的內(nèi)容是運(yùn)行在我們電腦瀏覽器上的頁面。所以切圖根據(jù)我們電腦的分辨率,正常切1倍圖就可以



3、1920*1080的設(shè)計(jì)稿,投到9000*4320的屏幕上,文字圖片會(huì)發(fā)虛么?

看情況,視大屏系統(tǒng)硬件規(guī)格與觀看距離來定。這塊有四個(gè)概念需要跟大家交流下。

大屏邏輯分辨率(設(shè)計(jì)稿尺寸)——顯卡輸出分辨率——視頻矩陣切換器(DVI)支持分辨率——大屏實(shí)際物理分辨率。


一般后兩個(gè)是沒問題的,大屏跟矩陣切換器是由大屏廠商提供,一般剛好配套大屏。容易問題的是顯卡輸出分辨率,我們電腦屏幕分辨率并不是最終顯卡傳遞到DVI接口的分辨率,傳遞到DVI接口的分辨率是電腦顯卡所能輸出的最大分辨率(部分電腦可設(shè)置或自定義輸出分辨率)。輸出分辨率等于DVI支持分辨率時(shí)顯示效果最佳。輸出分辨率低于DVI支持分辨率,DVI會(huì)將信號(hào)放大后傳遞到大屏,放大的過程中就有圖像信息丟失,雖然此過程中有各種算法支持去保證圖像盡可能清晰,但算法再好,跟真實(shí)圖形還是有差距的。此外,多信號(hào)源投射效果優(yōu)于單個(gè)信號(hào)源投射。對于現(xiàn)場直播數(shù)據(jù)大屏,一般至少有兩個(gè)信號(hào)源,一個(gè)投屏,另一個(gè)也投屏但是處于備用狀態(tài)。


離大屏的距離也影響觀感,一般離得近,顆粒感明顯,距離稍遠(yuǎn),會(huì)顯的較為清晰



4、設(shè)計(jì)稿完成開發(fā)后,發(fā)現(xiàn)在大屏上頁面有被拉伸或者壓縮的情況,怎么補(bǔ)救?

一般來講,開發(fā)只需要對設(shè)計(jì)圖做還原即可。但特殊情況下,比如顯示器擴(kuò)展不正確導(dǎo)致頁面被拉伸或壓縮,這時(shí)就需做處理:我們可以先得到被拉伸/壓縮的比例,然后對整體視圖做壓縮/拉伸處理,再由其拉伸/壓縮,這樣被拉伸/壓縮的瑕疵就可以得到一定程度上的矯正。另外,了解被投電腦硬件特點(diǎn),有的電腦可以通過自定義分辨率解決這部分問題。



5、除自行開發(fā)可視化大屏外,還可以通過哪些第三方服務(wù)來快速實(shí)現(xiàn)?

阿里云DataV、騰訊云圖、百度Sugar等



6、數(shù)據(jù)可視化的圖表樣式可以在那些地方找到參考?

圖表部分的二個(gè)庫是我們設(shè)計(jì)師可以打開瀏覽產(chǎn)看的,這里面所有的圖表樣式都是基于代碼實(shí)現(xiàn)的,可以作為我們設(shè)計(jì)圖表的參考,也可以讓開發(fā)拿代碼去用,或者在這些圖表的基礎(chǔ)修改

工具類的需要有一定的代碼基礎(chǔ),里面同樣有豐富的圖表,所以跟開發(fā)的溝通也很重要,因?yàn)樗麄兛赡軙?huì)了解多一些更新的前沿的圖表形式是我們設(shè)計(jì)師不知道的,所以彼此多溝通交流是在太重要了

Image title


總結(jié):數(shù)據(jù)可視化是一門龐大系統(tǒng)的科學(xué),本文所有討論僅針對大屏數(shù)據(jù)可視化這一特定領(lǐng)域,管中窺豹,如有遺漏或不足之處歡迎大家討論交流

轉(zhuǎn)自UI中國-BYMD


日歷

鏈接

個(gè)人資料

存檔