Hi,我是彩云。畫面平衡是一個很基本的設計理念,但很多朋友在平時的作品中容易忽視這個點。彩云在星球中幫不少朋友看過作品集,發現最多的問題之一就是畫面平衡沒做好,我覺得只要把這個基本問題解決了,作品就能提升一個檔次。
用戶本能地會對不平衡的設計感到厭煩,如何在畫面中創造一個有吸引力的平衡?是本篇文章要分享的內容。
Illustration: Outcrowd
平衡是一個作品中最重要的元素之一。平衡中的對稱關系能夠創造平衡與和諧,這種平衡狀態直觀上能夠讓用戶感到舒適。
人體是垂直對稱的,我們的視覺接收也與之相對應。我們喜歡物體在垂直軸上保持平衡,直覺上總是傾向于平衡一種力量與另一種力量。
Illustration: Outcrowd
在設計環境中,平衡是基于元素的視覺重量,而視覺重量是用戶對圖像的注意力范圍。如果畫面是平衡的,用戶會下意識地感到舒適。畫面平衡被認為是其元素在視覺上的比例安排。
如何讓一個頁面看起來平衡?
最常見的平衡例子就是使用對稱。
在潛意識層面上,對稱的視覺能讓人愉悅,能讓畫面看起來和諧有條理。對稱的平衡是通過在水平或垂直的中軸兩側均勻放置元素來創造的。也就是說,畫面中間假想線的兩邊實際上是彼此的鏡像。有些人認為對稱的平衡是無聊和可預測的,但它經受住了時間的考驗,到現在仍然是在頁面上創造舒適和穩健感覺的最好方法之一。
Illustration: Outcrowd
兩側重量不相同的元素構成具有不對稱平衡。
動態平衡通常會比靜態平衡更有設計感,讓畫面不至于呆板。在缺乏平衡的情況下,我們的目光會條件反射性地開始尋找平衡點,這是一個很好的機會,可以將注意力吸引到頁面上可能還沒被注意到的部分。頁面重點就應該放在這里——抓住用戶的注意力,就像產品的生命線一樣。
Landing page — Asian Cuisine
比如一般這樣去“配重”的元素會是一個按鈕或者標題。
重要信息(或者是行動按鈕)就是我們需要去配重的價值元素。
不對稱的現象越嚴重,用戶就越想找出其中的原因(檢查配重)。人們本能地比平時更仔細地研究這樣的畫面。然而,這里需要注意分寸,過于古怪的構圖并不總是能被很好的感知。
Illustration: Outcrowd
平衡中的另一種類型,特點是視覺元素從一個共同的中心點放射出來。徑向平衡在設計中不常用。它的優點是,注意力很容易找到并保持一個焦點——恰好就在它的中心,這通常是構圖中最引人注目的部分。
這是一種平衡中的混亂,就像 Jackson Pollock的畫作一樣。這樣的組成沒有突出的焦點,所有的元素都有同樣的視覺重量。沒有層次,乍一看,畫面就像視覺噪音,但所有元素又相互匹配,形成一個連貫的整體。
(彩云注:這是一種比較高階的設計平衡處理手法,用的好可以讓畫面非常具有設計感,但把握不好的話,就會非常凌亂。所以,我們平時能看到很多大師的作品看似一些簡單圖形的使用,但就是好看,輪到自己設計的時候就會發現,越簡單的設計似乎越難設計好。)
Illustration: Outcrowd
當談到構圖中的重量平衡時,他們經常將其與物理世界中的重量進行比較:重力、杠桿、重量和支點。我們的大腦和眼睛感知平衡的方式非常類似于力學定律。我們很容易把一幅畫想象成一個在某一點上平衡的平面,就像一個天平。如果我們在圖像的邊緣添加一個元素,它就會失去平衡,有必要修復它。元素是否是一組色調、顏色還是點并不重要,目標是找到圖像的視覺“重心”,即圖像的重心。
不幸的是,沒有精確的方法來確定一個物體的視覺質量。一般來說,設計師依賴于他們的直覺。不過,下面這些有用的觀察可能會有所幫助:
大小
大的物體總是更重
形狀
不規則形狀比規則形狀的元素輕
顏色
暖色比冷色重
色調
深色物體比淺色物體重
圖案
帶有圖案的元素顯得更重
3D
帶有紋理貼圖的元素顯得更重
內部復雜性
物體內部越復雜,視覺重量更大
填充空間關系
正形空間比負形空間更重
對重量的感知
照片中的啞鈴看起來會比一只鋼筆更重
當使用對稱時,作品看起來可以更加的專業和有科學性。其中,靜態對稱的作品顯得更加有專業精神和嚴肅的;而動態對稱的設計方法則能吸引用戶的興趣,表達出個性和創造力,能讓用戶集中注意力。
作者:彩云Sky 來源:站酷網
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。
圖標是任何設計系統不可或缺的一部分。使用圖標的主要原因是幫助用戶快速理解想法,實現快速導航,解決語言障礙,最終提升用戶體驗。
圖標作為一種設計工具,在UI/UX和平面設計師中最受歡迎。這些微小的設計元素對每個人來說都是簡單易懂的,這些特征賦予了它們通用數字語言的地位。
在這篇文章中,我整理了10個簡單又重要的技巧幫你設計出更專業的圖標。
最小的圖標大小通常是12 x 12px。以這個尺寸為基礎,行業標準中大多數其他尺寸只是通過將之前的尺寸翻倍而產生的。
重要提示:當你設計圖標時,重要的是要按100%顯示的比例去設計,使圖標完美像素并放大像素塊查看準確性。
完美像素圖標在屏幕上能呈現尖銳和清晰的線條和形狀。如今,高分辨率顯示器和視網膜顯示器正變得越來越好,所以在不久的將來,對像素完美圖標的需求可能會減少。但就目前而言,讓你的圖標具有可伸縮性、響應性和適配更多設備是非常重要的。
1) 像素網格對齊.
使直線部分完全清晰,并增加曲線和邊角的清晰度。(彩云注:盡可能的使線條實心)
2)完美角度
有角度的線更模糊。創建圖標的最佳角度是45°,因為形成一個角的像素彼此對稱。
3)邊緣清晰
直線必須占據其邊緣上最暗的4個像素。這樣線的邊緣看起來更清晰。
為了讓圖標看起來整潔一致,重要的是要記住線條寬度和間隙大小。這條規則我認為是必須遵循的:所有線條的寬度都是相同的。
理想情況下,線寬和間隙大小也應該相等。
然而,有時候你必須打破這個規則。當你需要解釋我們在日常生活中面對的一個具有非對稱模式的物體時,它就會發生。比如條形碼這個例子來說,我故意使圖標內的線寬和間隙大小不均勻,以表示條碼的特征。
在UI設計中,對象(包括圖標)的角半徑定義了項目的外觀和感覺。當我們說到一個集合中的多個對象時,規則很簡單:在正方形和圓角之間進行選擇,并對所有的圖標應用相同的屬性。
為什么它如此重要?一致性是UI/UX設計的關鍵原則。一個可用和用戶友好的設計總是提供一致的體驗。在下面的例子中,你可以看到打破這個原則是如何影響視覺感知的。
在電腦上看起來完美對齊和平衡的東西,在你的眼睛看來可能并不一樣。
當我們把大小相等的正方形和圓放在一起時,我們會有一種不對勁的感覺,圓似乎比正方形小。為了使我們的形狀在尺寸上看起來相同,我們應該使圓更大(或減少正方形的尺寸)。
這個原則也適用于圖標的設計和使用。有些圖標的一側可能較重。試著調整它們一兩個點,直到整體對齊看起來正確。在下面的例子中,你可以看到突出顯示的圖標看起來很大,盡管它與其他部分的大小相同。為了平衡這個集合,我們需要通過縮小圖標的大小來調整突出顯示的圖標。
(彩云注:這個原則很多人應該都知道,但我發現也是在整套圖標的設計中最容易出現的問題,當把圖標匯總在一起的時候,這個問題尤其需要重視。)
我們經常在設計軟件中使用中心對齊,這種方法沒有錯。但當涉及到細節時,比如圖標設計,我們需要相信自己的眼睛,打破數學法則,以增強元素的平衡。
讓我們以播放按鈕作為展示。這個例子很簡單,但非常能說明問題,因為形狀越不對稱,需要改進的缺陷就越明顯。
我打賭你已經猜到我們指的是KISS原則。這一原則背后的思想是,大多數系統在保持簡單的情況下工作得最好。用戶越容易理解某樣東西并與之互動,它就越具有通用性。
(彩云注:KISS原則是“Keep It Stupid Simple”或者“Keep It Simple, Stupid”的縮寫。篇幅有限,彩云幫大家找了一篇參考文獻https://www.jianshu.com/p/7d58b96d0185#comments ,感興趣的可以去學習下。)
它如何適用于圖標設計?
1)別使用文字
文本和圖標的綁定減少了圖標的通用性。此外,小尺寸的文本是可讀性很差。如果一定要文本作為支持元素,使用工具提示和圖標旁邊的標簽。
2)不要過度設計
不必要的復雜性阻礙了合理的表達,應該避免。過載的設計會將用戶體驗變成一場噩夢。
3)避免不必要的元素
只要確保每個圖標在整體環境中是可理解和清晰的就行。(彩云注:比如已經是在郵件客戶端中,就不需要再額外增加表示郵件的圖標部分)
重要提示:在圖標設計中合理地使用KISS原則,也不要把事情做得太簡單,否則會影響功能。一個優秀的圖標應清晰易懂。
圖標規范框架通常是指組合在一起的圓形、正方形、縱向和橫向矩形。它們創建了一個框架來設計圖標。但是,這個規則非常靈活,只是作為參考,方便圖標的設計在視覺上平衡。所以,如果你覺得你的圖標不完全匹配這個框框,但看起來完全正確——相信你的眼睛!
框架是設計的“容器”??蚣芤幏读艘粋€統一的范圍來設計圖標,這背后有一些原因:
1) 大小
由于其幾何形狀,所有圖標都具有不同的高度和寬度。為了在我們的設計中統一圖標尺寸,我們應該將它們放置在大小始終相同的框架中。
2)輸出
框架內的圖標與視覺中心對齊,這經常被開發人員忽略,因為他們經常根據實際的中心來調整圖標,而沒有注意到差異。這就是為什么用框架輸出圖標是至關重要的,當你按這個框架輸出圖標時,能保證視覺設計時想要的視覺中心。
3)效率
如果使用Figma,可以通過創建組件來節省時間??梢允褂脤嵗焖俚貙⒁粋€圖標替換為另一個圖標。
如果你要打算做圖標資源庫的話。要想到當設計師在庫中搜索圖標時,會遇到哪些挑戰?他們的痛點是什么?他們的需求是什么?要回答這些問題,請設身處地為用戶著想。
1)不要讓用戶思考
例如,如果他們不知道自己想要找到哪種花卉圖標,那么就讓他們看到一系列選擇:鮮花項鏈,室內花卉,植物商店等。
2)展示關聯圖標
例如,如果用戶想在相同的主題或類別中找到圖標,他們可以快速地檢查包含這個特定圖標的完整集合。
3)使用標簽
用戶可能很難找到合適的詞進行搜索,或者可能希望看到所有類似的補充選項,從中選擇最合適的。例如,當一個圖標的實際名稱是“蘭花花瓣”,你仍然可以找到它與以下關鍵詞: #蘭花#花瓣#花瓣#花#裝飾#花#植物#花園#開花#植物#自然#熱帶#樹枝#美麗#植物#美麗#自然#葉子#優雅#浪漫
最終應該導出SVG或PNG格式?這是一個關鍵問題。讓我們來比較一下格式:
我個人的選擇是使用SVG圖標,因為它可以節省很多時間。但是,一定要小心縮小復雜的形狀,并記住舊的瀏覽器可能不支持SVG格式。
到這里你應該已經學會了這10個圖標設計要點,在你的圖標設計中使用這些規則,相信會讓你的圖標變得更加專業!
彩云注:圖標設計是一個設計師的基礎能力,在彩云看過的無數份作品集中最普遍的問題也就是圖標設計。今天這篇文章雖然非?;A,但千萬別小看它,用這10條技巧重新審視自己的圖標作品,相信會有新的收獲!
作者:彩云Sky 來源:站酷網
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。
Hi,我是彩云。界面是用戶在與任何產品、APP或平臺交互時看到的內容,用戶體驗就是建立在堅實的界面設計基礎之上的。所以,如果你想要在UI設計上提升能力,應該多去思考界面設計背后的原因。
今天會跟大家分享一些被廣泛運用的界面設計規則,它們能快速使得你的界面設計更干凈、高效。
用更容易讓用戶理解(說人話)的引導文案,提升使用體驗。
(彩云注:下面2個案例中,左側的“購物車”和“庫存2”太過于術語化,右側的“僅剩2”和“加入購物車”更加貼近用戶的日常理解。大家平時工作的時候,也一定要注意界面中的文案,尤其是說明文字,控件文字等等,這個點經常容易被忽略。)
良好的對齊方式,可以增強內容的可讀性,讓用戶的視線更容易掃描。
(彩云注:左側的“之”字形視動線比較難閱讀,且不夠專業;右側的垂直對齊增強了可讀性,也讓設計看起來更加統一,能夠快速的提升設計細節。)
使用圖標、動畫作為標簽,有助于更輕松地理解內容,它使界面看起來更加理性和豐富,能瞬間抓住用戶的眼球。
(彩云注:左側的導航相較于右邊,很難第一時間準確識別它的意思,增加圖標后不僅更快看清,視覺上也更加美觀。)
大段的長句會讓內容變得難以閱讀。
為了獲得好的體驗和UI,應該注意拆分內容,并使用項目符號突出關鍵點,利用拆分好的內容塊讓用戶更快抓住重點。特別是在“功能說明和條款條件”或任何聲明時,提煉要點有助于提升用戶體驗,這樣也不至于讓用戶直接忽略。
(彩云注:左側的大段文字我想應該沒多少人會去閱讀,右邊的至少還能在短時間內快速看看幾個關鍵詞。)
進度條幫助用戶追蹤流程,它也能使查看上下步驟更加容易。線上購物,表單填寫,申請流程等場景使用這種格式能很好的簡化流程。
(彩云注:左邊的表單UI不方便跟蹤進度和流程,右邊的表單把進度放在頂部能幫助用戶清楚的知道流程進度。)
錯誤提示一定要明確,易于理解,方便用戶進行下一步的操作。如果用戶不理解界面上出現的錯誤,用戶就會感到很失望,可能會放棄接下來的流程。在UI設計時,在正確的地方用通俗的語言說明問題,以避免歧義,這一點非常重要。
(彩云注:我常常遇到各種出錯,但出現的提示太過于術語化,也沒有提示在正確的地方讓我非常苦惱。)
從菲茨定律(Fitt's Law)中我們應該知道,目標區域的距離和外觀與所采取的行動成正比。因此,為了將注意力集中在轉化按鈕上,按鈕應該準確放置在合理位置上。此外,按鈕的大小應該易于點擊,避免用戶因嘗試點擊時不方便而流失。
(彩云注:左側的按鈕不在正確的決策位置以及按鈕太小,右側的按鈕簡潔明了并且符合用戶的心理預期,能夠讓用戶更快決策并點擊。)
顏色是UI中不可缺少的部分,它能影響用戶使用應用時的情緒。正確地使用顏色將使UI看起來更加豐富合理。
(彩云注:左側的藍色按鈕顏色并不符合用戶對于刪除的心理預期,右側的紅色按鈕對用戶的心理預期有危險和警告,用紅色代表刪除能夠讓用戶集中注意力關注這一特殊的操作。)
用單列展示內容,能更好地幫助用戶掃描。當你的應用和網站上要展示大量信息時,將所有信息垂直對齊時,能更好的保持用戶關注度。
用戶準備登錄或注冊你平臺的時候,把所有可用的社交媒體登錄盡量放在首位。這將避免用戶填寫表格時付出額外的認知負擔和時間消耗而流失。首先使用社交媒體賬號,能很好地增加點擊率。
在用戶做選擇的時候,需要清晰地告訴用戶選中的到底是哪一個選項。模棱兩可的顏色會增加用戶的認知負擔。更少的顏色和清晰的選中狀態能讓用戶獲得更好的體驗。
(彩云注:左側的問題在于選中狀態不清晰且選項的顏色過于豐富,右側的選中狀態清晰且選項顏色只有2種,選中和非選中,體驗會更好。)
如果想給信息分組,使用留白是最好的方式。加條線作為分組符號會在界面中增加了一個額外元素,空白能讓UI看起來更加干凈和優雅。用線分組的情況適用于類似Twitter、Medium之類的重內容平臺等場景。
保持設計的一致性,能夠降低功能復雜度并讓用戶更快決策,一致性設計讓用戶更快熟悉操作而不需要太多思考。
(彩云注:左側的選項圓角不一致,會讓用戶思考為什么這里會有不同,而右側的一致性選項設計,能讓用戶忽略內容外的干擾。)
14. 搜索中的占位符要用好
在搜索輸入欄添加適當的占位符,提示用戶可以在平臺上搜索和找到的內容,這樣可以提供用戶參考并帶來更好的用戶體驗。
高飽和度的顏色能形成強烈的對比。在暗黑模式下使用高飽和度會很刺眼,給用戶很不好的體驗。暗黑模式一般在晚上使用,因此對設計師來說,需要做的是讓整個配色相對柔和,讓用戶感到放松?;诖?,在設計的時候應該將飽和度限制在200-500之間。
(彩云注:這里的200-500彩云去查了不少資料,但沒有找到最好的答案,這里引用的是Material Design中的顏色規范,感興趣的同學可以自行查找)
在同一個界面,最理想的狀態是只有一個最主要的關鍵按鈕和緊跟著的次要按鈕。這是因為如果一個界面上有太多這種行動按鈕(CTA)按鈕,會讓關鍵操作淹沒在這些按鈕中,讓用戶不知所措。
17. 簡化不必要的動詞
沒必要在菜單上增加動詞和短語,用最少的信息寫清楚功能就足夠讓用戶理解了。所以,在菜單設計上要盡量避免增加無關緊要的詞,這樣才不會影響用戶體驗。
你可能注意到,很少有表單的字體大小不平衡,字體之間的類別盡量少一些看起來會更加平衡。在決定字體大小時,盡量規范字號的標準。比如標題(16px),副標題(12px),正文(10px),說明文字(8px),這些尺寸都是以2為倍數的。
盡管我知道要做好圖標一致性,但在實際工作中依然經常犯錯。很多設計師經常用不同風格的圖標混在一起,這樣會讓整個UI界面的設計顯得很不成熟。圖標是為了讓用戶更有效率地理解事物。在使用圖標的時候一定要注意圖標的一致性,尤其是一些是一些風格細節。
這里也跟大家分享2個我自己常用的figma圖標庫:
1)Unicorn (https://www.figma.com/community/file/931512007012650048)
2)Basil Icons (https://www.figma.com/community/file/931906394678748246)
通常情況下,我們會認為一個顏色在深色模式和亮色模式下是用的同一個顏色值,但這其實是錯誤的。一個顏色在亮色模式下看起來非常漂亮,但在深色模式看可能就太暗了,反之亦然。解決這個問題最好辦法是使用2套不同飽和度的顏色。
App的新手引導決定了用戶第一次體驗產品時的感受。在設計的時候,試著公開需要哪些具體步驟,增加”跳過“和前后移動查看的能力對新用戶來說非常重要。
許多網站和App都是用圖片驅動的,但在圖片上直接增加文字內容有時候會被淹沒掉。在圖片上增加一個疊加層可以提升內容的可讀性。
23. 信息部分露出
對于一些大屏設備來說,像筆記本電腦,平板電腦和智能電視,它們都有非常多閑置的空間。對于這些閑置的空間來說,盡量通過設計告訴它底部還有更多內容。這對UI和UX方面都有好處,因為空間的使用方式能夠讓用戶清晰的知道所有內容。
為了讓用戶聚焦閱讀,應盡量避免使用大段的長/寬行。保持短句和簡潔能夠增加內容的可讀性。
(彩云注:這點用在你的作品集里也是很合適的,有些人經常使用大段的文字內容來描述,很可能直接勸退面試官)
Z字形原理,也就是大眾所熟知的”古騰堡原理“,它描述了當人們看到一個均勻分布元素的設計時,眼睛的總體運動情況。通過這個原理我們知道,用戶在內容上的視線是沿著Z字形來閱讀的,所以遵循這一原理設計你想要核心表達的內容。
擴大點擊區域,維護像按鈕、單選、多選等控件的響應尺寸,如果你設計的點擊區域太小會讓用戶點擊困難,造成流失。
避免使用花俏和俗氣的圖標,它們會讓整個設計顯得非常不成熟,同時也是很難理解的。用上更簡單的圖標形式,會讓界面更高級。
(彩云注:當然越簡單的圖標其實想畫出彩會更難,另外也需要區分不同的場景,像一些運營類的圖標可能會為了活動氛圍做的相對風格化一些。)
選錯文案,會讓人們對于任務缺乏興趣,根據上下文使用更合適的詞組。
輕敲和點擊有時候很累人,可能不如使用滑動、拖拽等手勢操作,這些操作會讓界面更簡潔并且也能順利地完成既定任務。
在探索酒店、目的地甚至是閱讀任何文章時,用戶經常都需要點擊卡片。為了使得探索更加吸引人注目和干脆,避免使用長文本導致的滾動。相反,可以加一個閱讀更多的按鈕方便想看全所有內容的用戶。
”鄰近的物體往往被視為是同一組內容“。有時候為了把內容區分開的更清晰,嘗試用線對相關內容進行分組。
(彩云注:其實有留白和不同顏色做區分也是可以的,建議根據自己的設計風格和具體內容來定)
在設計控件時,如果可以用圖形可視化的地方就優先嘗試把控件圖形化,除了非常需要很精確的設置參數。對于價格范圍這種,很容易將它可視化為滑塊控件。
對一些人來說容易理解的東西,對某些人來說可能不是。因此,最好使用示例占位符來解釋輸入字段,這可以防止用戶在填寫內容時出錯。
根據”系列位置效應“,心理傾向于記住列表的第一項和最后一項,而不是中間項。因此,在任何App中設計導航時,根據應用的上下文保持最左和最右的選項。例如instagram,最左邊是”首頁“,而最右邊是”用戶“。
(彩云注:這是一個心理學上的理論,人們對于一系列的材料更容易記住開頭的內容,也叫做首因效應或者首位效應;更容易記住末尾的內容,就叫近因效應。)
在設計任何體驗時,點擊次數都是非常重要的指標。統計用戶需要點擊多少次才能完成他的目標,額外的點擊會減慢整個操作過程。簡化過程,自然體驗就會更好,所以盡可能的減少點擊次數。
(彩云注:下面的案例,增加可點擊符號也可以減少用戶思考的時間。)
為了使內容突出,沒有必要使用多種字體類型,包括加粗、改色等等。只在最需要的位置使用增強的的文字層次結構、字體重量,同時只使用一種字體足以吸引用戶對內容的注意力。
留白在設計中非常重要,太少或者沒有留白會使得設計非?;靵y。明智地使用留白可以明確地強調內容。
根據多爾蒂閾值(Doherty Threshold)這個理論:”系統需要在 400ms 內對使用者的操作做出響應,這樣才能夠讓使用者保持專注,并提高生產效率。“。因此,我們可以使用動畫、圖像甚至文本來保持用戶的注意力。(彩云注:給用戶的提示可以先快速加載信息框架,讓用戶有事可做,而不是什么都看不到)
作者:彩云Sky 來源:站酷網
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。
Hi,我是彩云。設計趨勢年年在變,設計技能也在不斷更新,但回到本源,底層的理論知識是不會變的。我自己幾乎每年還會翻看一些講設計基礎的書,比如《寫給大家看的設計書》之類的,會發現這些原理每次看都會有新的收獲。隨著工作年數增加,對底層知識的價值認識也越來越深刻,不知道你會不會有這種感覺?
在Medium上看到一位工作超過17年的國外設計leader寫的一篇關于設計原理的文章,講設計如何變得有效?總結得很好。
當沒有認知緊張時,用戶心流才會發生。當一個設計有效時,你才能體驗到認知上的輕松。如果沒有,你的“心流狀態”就會中斷(稍后會詳細討論),讓我們陷入認知緊張,于是“設計失敗了”。
當基本設計原則被忽略時,這種情況很容易發生,導致設計無法“整合”。這些基本原則包括:平衡性、一致性和視覺層次、負空間、接近性、對比、統一、一致性、配色方案和排版層次等方面。(彩云注:很多人看到這些以為自己都懂,但實際設計時犯錯最多的也是這些問題)
從神經科學的角度來說,當一個設計起作用時,我們會“感受到它”。其影響立竿見影。它發生在潛意識里,在一瞬間完成,是人的本能反應。我們不需要把它放在顯微鏡下分析它。
優秀設計以簡潔和優雅而引人注目。喬納森·伊夫(Jonathan Ive)和迪特爾·拉姆斯(Dieter Rams)都可以算作這種設計思想的擁躉。
人們常說,優秀設計背后的工藝是無形的。然而,這不是隨機發生的。不管人們是否注意到,設計的背后是遵循著大量而嚴格的原理去執行的。偉大的設計師不會在畫板上隨意地將各種元素組合在一起,這是有方法的。
為什么有些設計具有美的感受,而有些卻沒有
相反地,當一項設計被認為“有些地方不對勁”時,人們就會下意識地覺得這個設計是有問題的。這樣的結果會給品牌或產品帶來不好的影響。當一個高端或奢侈品品牌受到高度關注時,這種影響尤其有害。這就是為什么你永遠不會遇到設計不完美的香奈兒(Chanel)商店的原因。
“你對一件事的第一印象會建立起你隨后的觀念,如果一家公司在你看來不專業,你可能會認為他們做的其他事情都不專業。——Daniel Kahneman,普林斯頓大學心理學教授。
這不是一個精心制作的設計,會導致認知緊張。你會在這個網站上預訂你的行程嗎?
我們都同意上面是糟糕的設計,就像建在沙子上的房子,一個忽視基本設計原則的設計將會崩潰。潛意識里,它會立即被認為是破碎的,無論是視覺上、精神上和情感上。
人類的大腦是懶惰的、有偏見的,喜歡走捷徑。Daniel Kahneman稱之為“低維思維”。當人們看到某種設計時,它的“美學完整性”、視覺感知和神經科學之間存在著相互關聯。
當一個設計是合理的,換句話說,它是令人愉快的、有效的,我們會迅速、直觀的判斷它是合理的。我們的心率降低,多巴胺水平增加,會有一種幸福和平靜的感覺。這就像我們聽到舒緩的音樂,會沉浸在一種每時每刻的“心流狀態” 中。“在這種狀態下,人們會專注于一項活動,其他一切似乎都不重要”——來自于一個心理學概念,由 Mihaly Csikszentmihalyi在他的暢銷書《心流:最佳體驗的心理學》中寫道。
你更愿意住進哪個房間?
蘋果的人機界面指南(Apple’s Human Interface Guidelines)幾十年來一直在談論“美學完整性”。它也可以被稱為“設計完整性”或“審美凝聚力”。
蘋果對美學完整性的定義是“當一個設計的外觀和行為與其功能完美匹配時”(彩云注:我的理解就是所見即所得,符合用戶的心理預期)。換句話說,設計的構成是產品的一個組成部分。我們將研究決定設計組合成敗的設計原則——更多的是關于 UI,而不是關于 UX。
美學完整性不僅僅是關于設計有多好看。它指的是具有明顯連貫性的設計:有效的結構和布局,是什么讓它產生效果。換句話說,它的元素在視覺層次、對齊、間距、平衡、對稱、重復、比例、強調、接近、對比、統一、一致性、配色、排版、負空間等方面都有出色的運用,這里僅舉幾個例子。
這與“黃金比例”無關,黃金分割不能解決問題。斐波那契數列螺旋沒那么玄乎,給設計師帶不來驚人的設計。
設計師們在安吉麗娜·朱莉或蒙娜麗莎的臉上畫出金色螺旋形時驚呼道:”果然是”黃金比例“(彩云注:但事實上有點故弄玄虛了)。當然,自然界中確實有神圣幾何學(黃金比例,又稱斐波那契螺旋,是基于此),但依賴“黃金螺旋”作為設計原則是一種謬論,它已被多次暴露在其赤裸裸的荒謬中。
這是我的洗衣機,上面疊加了斐波那契螺旋。
“審美的完整性”不是沒道理的。這個概念是基于基本的設計原則,是有成就的設計師實踐他們的藝術作品的經驗總結。
讓我們來看看一些設計原則,以及它們為什么會使得你的設計更能更加有效。通常情況下,真正優秀的設計會結合這些設計原則。
我們將探討以下這些最底層的設計原理:
視覺感知的基本規則對任何視覺設計都是至關重要的,因為它們指導著如何盡可能快地傳達信息。視覺層次是設計中信息的結構和優先級。它決定了人們接受和處理信息的順序,因為它以一種視覺方式引導他們。
視覺層次感重在打造視覺優先級。通過巧妙地使用顏色、形狀、大小、間距、比例和方向,創造性地使用決定層次的視覺元素來傳達構圖的意義、概念和情緒。
核心關注點是什么,你希望用戶首先注意到或開始閱讀的設計中最重要的元素是什么?我們想讓它成為焦點,然后其他部分的設計從這里展開。
一個具有良好視覺層次的網站會引導用戶關注重要的部分
視覺層次對于每一種視覺設計都是至關重要的,無論是需要引導訪客眼球的首頁還是移動端UI的導航入口。用戶對每個元素的理解取決于組合中的其他元素及其上下文。
建立視覺層次的一些技術是:位置、大小和比例、顏色和對比、間距和親密性、負空間、紋理、引導線和高度。在一個元素周圍使用豐富的負空間可以使它看起來更有意義。使用引導線可以創造移動,就像一個人的眼睛在設計上移動一樣。排版的層次結構也扮演著重要的角色,通過不同的大小和權重,我們可以讓更重要的文本元素脫穎而出并建立秩序。
加分技巧
沒有視覺層次的網站沒有明顯的興趣點。
設計中的對齊和間距通過空間上的連接傳達出一種秩序和組織感,這兩個原則都在設計背后發揮重要價值。設計師早期學到的基本知識之一是在網格上編排設計,然后對齊和分隔這些元素。
左對齊、居中對齊、右對齊都沒錯,但你必須對齊,否則當元素沒有對齊時,設計就會給人崩潰的感覺。它給人一種不安的感覺。
沒對齊的話,眼睛看著很難受
網格有很多不同的類型:列網格、基線網格、模塊網格、層次網格、像素網格等。不同設計使用不同網格,但最基本的是設計元素的對齊和間距。(彩云注:關于網格方面的知識,彩云以前也寫過不少,感興趣的也可以在公眾號的歷史發文中翻翻看)比如:
(Illustration courtesy UX Engineer)
網格可以被打破。一個死板的構圖可能會在視覺上無趣,除非一個元素從網格中脫穎而出。錯位或“打破網格”是賦予元素更多視覺權重的一個機會。當在設計中設置視覺層次結構時,它可以用來強調某些東西。
有時打破網格可以創造強調和移動
設計上有兩種平衡:對稱和不對稱。所有的構成元素:排版、顏色、圖像、形狀、圖案、留白等,都具有一定的視覺重量。有些元素很重,很吸引眼球,而有些元素很輕,感覺不那么重要。
這些元素的放置方式能夠在對稱設計中創造出一種平等的順序感,或者一種稍微偏離平衡能夠創造出一種不對稱的設計。無論對稱還是不對稱,我們的大腦都被某種平衡感所吸引,因為它創造了和諧、秩序和美學上令人愉悅的結果。
多重原則:平衡、對齊和對稱在網站上發揮作用
“對比”指的是使設計中不同的元素更容易區別開。強烈的對比可以在設計中強調一個區域,而微弱的對比可以弱化它,創造一個視覺層次。對比在設計中也扮演著重要的角色。對比不足會使文字特別難以閱讀,尤其是對視力有障礙的人來說。
在左邊的設計中,一些文字和背景之間的對比不夠。
Web內容可訪問性指南 (WCAG)呼吁“文本的視覺呈現應該有至少4.5:1的對比度”,除了大規模文本,它應該有至少3:1的對比度。因此,設計師需要確保內容保持舒適易讀。(彩云注:具體可用性配色工具,彩云之前的文章中有分享過,現在這種可用性顏色已經越來越被重視了,你也要用起來?。?之前寫的文章,推薦大家可以看看:
《以前我經常為配色發愁,自從知道這3個配色神器后,配色變得容易多了!》
其他UI元素(如各種顯示器和設備上的卡片、按鈕、文字和圖標)之間的適當對比也是必須的。如果UI元素之間沒有明顯的區分度,設計就容易產生混亂。
在格式塔原理中,對稱和秩序的法則也被稱為pr?gnanz,德語單詞“好身材”的意思。這個原理說的是,大腦會以盡可能簡單的方式感知模糊的形狀,這都是為了節省大腦能量。
我們傾向于尋找一切事物的對稱性。幾項研究發現,面部對稱能提高人們對人臉吸引力的評價(盡管完全對稱的臉其實并不一定那么有吸引力)。該理論認為,這種偏好與選擇DNA最好的伴侶的進化優勢。
對稱在自然界中也無處不在??纯匆恢缓欢浠?,或者一只海星。
對稱
同樣的原理也適用于數字領域,平衡對稱的設計更令人愉悅。
對稱性在應用中發揮作用。Uber Eats、Booking.com和Behance。
重復是一致性的近親,是優秀可用性的標志。在設計中利用重復是件好事,因為我們的大腦總是在尋找模式、相似性和一致性。為什么?因為重復相同性質的元素需要更少的認知努力。
我們更容易識別重復的模式,而不是每次看到新模式都要重新校準大腦。正如前面提到的,大腦作為一種生存機制是懶惰的,模式識別和認知捷徑意味著有意識地處理視覺信息所需的能量更少。
例如,重復元素的形狀和大小、填充、留白、類型和顏色,也有助于更對稱、更好地平衡,做出美觀的設計。
The Athletic這個軟件就是用重復元素做設計的好例子
奇數法則意思是說,在設計作品中奇數元素比偶數元素更有趣。偶數元素在圖像中產生了對稱,這可能會顯得過于正式和不自然。比如,在一行中排列三個或五個卡片會比2個或4個效果更好,作品會更加讓用戶感到舒服和自然。
Iskos Design 就是用的奇數原則做的網頁設計
三分法構圖(也被稱之為黃金網格規則),在畫面中以水平和豎直方向分成3x3的網格和4個交叉點。這個規則能很好的協助設計師將最重要的元素放在網格的交叉點上,這樣可以很容易的設計出滿意的構圖。
為什么會這樣?因為三分法構圖創造了類似斐波那契數列(黃金比例)那種不對稱的美,產生了更有吸引力的構圖。
你希望用戶關注哪些地方?高級設計師非常擅長引導用戶的視覺焦點,這種引導可以通過可見和不可見的引導線來完成。這些線條在構圖中也可以打造一種動感,也能為畫面增添視覺沖擊力。
達到這種效果通常用特定的形狀和線條,或者是它們的組合形成難以察覺的引導線來實現。利用透視、顏色、對比度和正負空間同樣可以幫助達到這種想要的效果。
從左到右的不易察覺的曲線將用戶的視線引導到頁面文字上
大?。╯cale)是設計中一個元素與另一個元素的相對大小。元素通過大小不同創建視覺層次,其中最大的元素首先會吸引用戶的注意力,因此看起來是最重要的。常規的設計策略就是將最重要的元素做成最大的,然后逐級遞減。
比例(Proportion)不同于大小,類似但有區別。比例原則是指一個整體設計中各部分的尺寸關系。設計中的元素可以有各種大小,但它們之間的大小差異,整體來看就是比例。
熟練地使用大小和比例是實現設計統一的關鍵。當一些元素的大小過大或過小,或者比例失調時,設計組合就會失去統一性。這種錯誤可能發生在排版和其他元素上。例如,標題與子標題和正文相比顯得過大。當設計元素失衡時,設計就會“感覺不平衡”。
大小和比例都沒做好時(左圖),看起來處理的比較細致了,但依然沒有做到很好,在大小上正文和標題分不清(右圖)
強調原則用于使設計的某些元素突出(使用對比、接近、比例、留白等)或不突出,即弱化強調(例如在頁面底部有一個幾乎看不見的“小字”)。強調是層級之母,因為沒有強調就沒有層級。
與其他一些設計原則一樣,“強調”是用來引導人們關注設計,并強調需要重點關注的第一、第二和第三點。首頁面和電商轉化頁面在99%的情況下都使用這種原則。
使用這個原則,在購物網站上強調了標語和產品,轉化效果非常好
統一是指設計元素如何很好地結合在一起,形成“視覺凝聚力”。它指的是設計中的連貫性,讓人們覺得所有部分都是一起的。每個元素都應該具有清晰的視覺關系,以幫助傳達清晰、簡潔的信息。整體性好的設計比整體性差的設計更有條理,質量也更高。
運用統一的配色,重復、平衡和對稱之類的原則將有助于在設計中形成一種和諧感,也就是一致性。設計中良好的一致性就好比歌曲中一首歌被和諧地唱出來,形成一個完美的整體。
一致的顏色、重復的圖案、平衡和對稱在蒂芙尼的網站上創造了一種統一的感覺。
格式塔的接近原則讓設計師將同類型的相關元素進行分組。把它們分開得更遠,元素就顯得越不相關,它們之間的關系就會減弱。一般來說,人們會認為遠離的元素是不相關的。
不應該讓用戶在設計中分辨哪些元素是相互關聯的,正如美國郵政服務的例子所顯示的那樣,缺乏對鄰近性的關注會導致直接的認知緊張,損害用戶體驗。
接近原則沒做好的案例。由于字段標簽離它們下面的字段更近,人們可能會搞混。
下面是一個鄰近性原則做的好的案例,我們可以看到相關元素是如何通過鄰近性關聯起來的(分組的元素用紫色表示)
一個把接近原則用好的網頁設計案例
一致性原則使數字產品的使用更加可預測,符合用戶的期望。設計中的一致性可以培養熟悉度,它可以提高用戶體驗、可用性和用戶使用效率。另一方面,不一致的設計將產生更多的認知負荷/腦力勞動,并導致困惑和挫折。這就相當于在用戶的路徑上設置障礙。讓用戶的心流嘎然而止!
做好一致性可以增強“審美凝聚力”。“我們都知道,當我們使用應用時,應用的導航位置如果經常變化,或者像“加入購物車”這樣的主按鈕在不同屏幕上從紅色變成綠色,這是多么令人沮喪。
除了視覺一致性和易用性,品牌一致性在產品設計中也發揮著重要作用。如果沒有一致的元素呈現,如排版、配色和圖案,高質量的品牌體驗將無法傳遞。
在用戶體驗方面,一致性意味著在設計中使用相似的UI元素來完成相似的任務,即在整個產品中擁有相似的功能和行為。因為可用性是一種評估用戶界面易用性的質量屬性,所以一致性對用戶體驗的可用性有很大的貢獻。
一致性是通過使用相同的配色、排版、間距、模式和交互來實現的。
色彩心理學也不容忽視。色彩承載著意義和情感,可以向人的潛意識傳遞信息。在品牌方面,人們對顏色做了大量的心理學研究,因為在人們與品牌進行任何互動之前,顏色會讓他們產生一種本能的反應。例如,藍色通常被認為是可靠的、安全的和平靜的,想想銀行;而紅色是刺激的,被認為是增加人們的心率,想想飲料包裝。
一個極簡主義的暗色主題設計傳達了一個特定的品牌氣質,并使用了少量的顏色。
排版在設計中扮演著非常重要的角色,它的重要性再怎么強調都不為過。在構圖中,字體樣式對人們感知設計的影響比任何其他元素都大,可能除了顏色。
因為我們的大腦以閃電般的速度運轉,一個字體會對一個設計產生影響,以至于它可能在不到一眨眼的時間內改變用戶的印象。與顏色一樣,字體甚至會影響我們的情緒,資深設計師可以通過字體傳達情緒和風格。通過選擇合適的字體,我們可以傳達出穩定、優雅、舒適、可靠、有力等信息。
排版層次結構可以快速建立視覺層次結構,并且通常在其中扮演重要角色。因此,在設計中經常使用不同的字體和字體大小來表示層次結構,例如標題、副標題、正文和引用。
“除了確保文本清晰易讀,排版可以幫助你理清信息層次,傳達重要內容,并表達你的品牌?!?——蘋果的人機界面指南
蘭博基尼的網站巧妙地使用了排版風格和比例來賦予其設計力量
Claude Debussy 曾說過,“音樂是音符之間的空間“。同樣的觀點也適用于設計,元素之間的負空間給予設計強調、平衡和統一。
元素周圍適當的負空間將焦點集中在元素本身。它強調了內容,并提供了必要的喘息空間,以確保布局不顯得雜亂。沒有了呼吸空間,人腦就不太可能掃描興趣點,更容易感到困惑。
蘋果官網提供了一個利用負空間創造強烈焦點的杰出例子。
人們已經開始期待所有平臺和設備上的優化、無阻礙的用戶體驗。理解設計原則及其交互方式對所有設計師來說都是至關重要的。使用專業技能設計它們是創造具有視覺吸引力的功能性設計的關鍵。我們不要忘記,美學的完整性會嚴重影響用戶體驗。
基于原則的設計是設計師在感覺有點迷失或用盡創意時可以依賴的黃金標準方法。在沒有理解和實現設計原則的情況下,也可能實現可接受的設計。然而,這可能需要大量的嘗試和錯誤才能創造出看起來不錯的內容,并創造出最佳的用戶體驗。
產品的美學質量與它的實用性密不可分,因為我們每天使用的產品影響著我們和我們的幸福。”但只有精心制作的物品才會美麗?!?Dieter Rams(迪特爾·拉姆斯)
當我們不關注由設計原則驅動的設計質量時,我們可能會忽視品牌質量及其所代表的一切。當某些東西設計不好時,品牌就會受到傷害,產品也會受到影響。這就是為什么偉大的設計師在他們的工作中極其嚴謹, 他們知道“你永遠不會有第二次機會給人留下良好的第一印象?!?/strong>
設計的細節成就了設計本身?!?查爾斯 伊姆斯(Charles Eames)
作者:彩云Sky 來源:站酷網
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。
去年在博客中發了兩篇關于GIF動態生成的博客,GIF圖像動態生成-JAVA后臺生成和基于FFmpeg的Java視頻Mp4轉GIF初探,在這兩篇博客中都是采用JAVA語言在后臺進行轉換。使用JAVA的同學經過自己的改造和開發也可以應用在項目上。前段時間有朋友私下問,有沒有不使用Java,甚至不依賴于后臺的,直接基于前端的GIF動圖生成,有沒有這種技術方案。博主個人對前端不是很擅長,后來也是在github上自習搜索了一番,發現了一個比較有意思的,可以直接在前端使用的gif動態圖生成組件。本文重點聊聊gif.js組件,介紹一下gif這個組件的基本原理,在生產中如何進行使用。
gif.js在github的地址是:gif.js,打開它的官方網站,可以看到如下的介紹:
作為一款成熟的插件,在github上有4.5k的star,足以說明它的受歡迎程度。而且gif.js采用的是寬松的MIT協議,您可以隨意下載這個插件,再此基礎之上改造成自己的工具供別人使用。使用git clone將工程下載到本地后,可以看到gif.js的初始目錄。
打開工程目錄的package.json文件,這里定義了文件基礎依賴。打開后可以看到如下的定義信息:
{ "name": "gif.js", "version": "0.2.0", "description": "JavaScript GIF encoding library", "author": "Johan Nordberg <code@johan-nordberg.com>", "main": "index.js", "repository": "https://github.com/jnordberg/gif.js.git", "devDependencies": { "browserify": "^13.1.1", "coffeeify": "^2.1.0", "exorcist": "^0.4.0", "uglify-js": "^2.7.5" }, "scripts": { "prepublish": "./bin/build" }, "browser": "./dist/gif.js", "keywords": [ "gif", "animation", "encoder" ], "license": "MIT", "readmeFilename": "README.md" }![]()
在GIFEncoder.js文件中定義了gif.js對象了基本一些屬性,在上面的目錄中打開目標文件后,可以看到屬性定義方法:
核心方法API說明:您可以使用構造方法或者使用setOptions()方法類設置相關的屬性。詳情可以看下面的說明:
Name |
Default |
Description |
repeat |
0 |
repeat count, -1 = no repeat, 0 = forever |
quality |
10 |
pixel sample interval, lower is better |
workers |
2 |
number of web workers to spawn |
workerScript |
gif.worker.js |
url to load worker script from |
background |
#fff |
background color where source image is transparent |
width |
null |
output image width |
height |
null |
output image height |
transparent |
null |
transparent hex color, 0x00FF00 = green |
dither |
false |
dithering method, e.g. FloydSteinberg-serpentine |
debug |
false |
whether to print debug information to console |
下面采用具體的代碼進行一個實際例子的實踐。
這里以video2.html為例,在這個工程中引入了gif.js和gif.worker.js。工程目錄如下,Jquery.js作為非必須依賴。
-
<head>
-
<meta charset="utf-8">
-
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-
<title>視頻轉GIF</title>
-
<meta name="description" content="Full-featured JavaScript GIF encoder that runs in your browser.">
-
<meta name="keywords" content="gif, encoder, animation, browser, unicorn">
-
<meta name="viewport" content="width=device-width">
-
<meta property="og:title" content="gif.js">
-
<meta property="og:url" content="http://jnordberg.github.io/gif.js">
-
<meta property="og:description" content="Full-featured JavaScript GIF encoder that runs in your browser.">
-
<meta property="og:type" content="website">
-
<link rel="stylesheet" href="main.css">
-
<script src="gif.js?v=3"></script>
-
<script src="video.js?v=3"></script>
-
</head>
-
gif = new GIF({
-
workers: 4,
-
workerScript: 'gif.worker.js',
-
width: 600,
-
height: 337
-
});
定義好了gif對象之后,還需要定義相應的響應事件,如下代碼所示:
-
sample.addEvent('change', sampleUpdate);
-
-
button.addEvent('click', function() {
-
video.pause();
-
video.currentTime = 0;
-
gif.abort();
-
gif.frames = [];
-
return video.play();
-
});
-
-
gif.on('start', function() {
-
return startTime = now();
-
});
-
-
gif.on('progress', function(p) {
-
return info.set('text', "rendering: " + (Math.round(p * 100)) + "%");
-
});
-
-
gif.on('finished', function(blob) {
-
var delta, img;
-
img = document.id('result');
-
img.src = URL.createObjectURL(blob);
-
delta = now() - startTime;
-
console.log("done in\n" + ((delta / 1000).toFixed(2)) + "sec,\nsize " + ((blob.size / 1000).toFixed(2)) + "kb");
-
return info.set('text', "done in\n" + ((delta / 1000).toFixed(2)) + "sec,\nsize " + ((blob.size / 1000).toFixed(2)) + "kb");
-
});
代碼有點長,這里不一一列出,需要源代碼的可以私信。
使用nginx進行靜態發布后,可以看到如下的效果:
點擊執行按鈕后,在網頁下面生成gif動態圖,如下所示:
實際生成的動態圖會根據原始視頻的大小,畫質質量,清晰度等因素影響,執行時間也會有影響。在實際項目中需要根據需要調整相應的參數才可以。
以完成后渲染動圖為例講解合成過程,
可以在變量區看到客戶端開啟了多個Worker進行并行處理。
在這里進行數據合并處理,如下:
最終合成gif圖片,在html中進行dom渲染。
以上就是本文的主要內容,本文重點介紹了一款前端基于Javascript的gif.js生成插件,分析了它的源碼結構,最后通過一個實例進行了案例講解,幫您快速的了解和掌握這個組件,文章行文倉促,如有錯誤,請留言交流。
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。
卡片是一個UI組件,包含了某一個內容的信息和操作??ㄆ梢园鞣N元素,但它們都應該屬于同一個主題。
這樣做的目的是為了避免冗長的文字,并呈現更多的內容。即使從設計的角度來看,用戶可能不熟悉卡片的概念,但他們馬上就知道如何使用它們,因為它們與實體卡片是一樣的。(彩云注:這個就是用戶心理學中隱喻的運用)
卡片之所以流行,是因為它們能更好的把控內容。卡片是模塊化的,所以不同的內容可以堆疊在一起,而不需要注意它們的差異。
卡片通過強制內容適應卡片邊界和卡片布局上的限制來聚焦內容。設計師喜歡通過卡片混排大量內容,而無需擔心設計會變得雜亂無章。
卡片可以將內容分解成易于理解的小塊,以便用戶與之互動。通過給內容一個容器,卡片向用戶表明內容是真實和感性的。
卡片 UI 設計流行的原因還有很多:
直觀:卡片在界面中看起來與現實世界中的卡片相同,它們對用戶來說似乎很常見。在卡片成為移動和網絡應用中的流行元素之前,它們在現實生活中無處不在:名片、棒球卡、便簽??ㄆ砹艘环N有益的視覺類比,它允許我們的大腦直觀地將卡片與其所代表的內容聯系起來,就像在現實生活中一樣。
易于閱讀:卡片不占用太多空間,并敦促設計師優先考慮其內容。不同的是,每張卡片都變成了易于閱讀的內容??ㄆ層脩舾菀渍业剿麄兏信d趣的內容。
有吸引力且對用戶更友好:基于卡片的設計通常非常依賴視覺效果(尤其是圖片);就信息架構而言,視覺層次會更加清晰。使用圖片有助于使基于卡片的設計比不在卡片中排列的相同內容對用戶更具吸引力。
有利于響應式設計:卡片是矩形的,可以平滑地調整大小,以適應不同屏幕的水平和垂直正面,這意味著用戶可以在所有設備上獲得統一的體驗。
便于分享:卡片可以鼓勵用戶在社交媒體上分享內容,因為它允許用戶只分享特定的內容,而不是整個頁面。
什么時候應用卡片設計?
這通常是當你有:
基于搜索的界面: 卡片能通過模塊的內容快速顯示合適的內容,這使得用戶可以深入了解自己的興趣。基于卡片的設計是一種非常適合呈現這類內容的方式。
信息瀏覽:當用戶瀏覽信息時,卡片的兼容性更好。
任務管理:當可以將流程中的單個任務作為卡片進行說明時, 可以輕松組織卡片以獲取任務列表。任務管理應用在使用卡片式界面為用戶創建儀表板方面做得很好,其中每張卡片代表一個單獨的任務。
類似項目:卡片最適合于異構項目的集合(當并非所有內容都是相同的基本類型時)。
可視化分析: 儀表板通常在同一頁上同時顯示各種內容樣本。在這種情況下,卡片類比可以幫助在不同物品之間創造出更明顯的差異,其中每張卡片可以適應不同的角色。
卡片的布局可以不同,以支持它們包含的內容類別。下面的組件通??梢栽诙喾N卡片樣式中找到。
(1)富媒體: 卡片可以包含縮略圖,以顯示圖片,插圖,頭像,Logo,圖標或圖形。
(2) 標題: 標題文本可以包含相冊或文章的名稱或標題。
(3) 描述: 支持文本,如文章摘要或簡短的描述。
(4) 行動按鈕: 卡片可以包含用于操作的按鈕。
(5) 副標題: 副標題文本可以包含詳細介紹,如文章的署名或標記的位置。
(6) 圖標: 卡片可以包含操作圖標。
有一些小的技巧可以快速提高卡片設計細節。
1. 使用相關主題的圖片
圖片是卡片設計的主角,你需要一個高級的圖片來吸引用戶對每張卡片的注意。不僅是圖像,卡片還可以包含插圖、帶有淺色背景框的圖標或任何其他類型的富媒體,但需要與內容主題相關。
2. 增加視覺層次
卡片內的層次結構有助于引導用戶對重要信息的閱讀。將主要內容放在卡片的頂部,并使用排版來強化主要內容。使用空白和對比來分隔需要更多視覺分隔的內容區域。(彩云注:視覺層級對于信息表達至關重要?。?nbsp;
3. 限制內容長度
一張卡片應該只包含重要的信息,并提出一個相關的觀點,以獲取額外的細節,而不是完整的細節本身。當我們試圖在一張卡片中放入太多內容時,卡片可能會變得很冗長,并失去與卡片類比的實際聯系,因為它不再像一張卡片了。
4. 避免嵌入鏈接
不要包含內聯鏈接,卡片應該自己鏈接。嵌入文字鏈接會讓用戶誤操作。
5. 區分操作主次
包含不同操作的卡片應該在視覺上形成對比。在下面的例子中,我通過使用一種較輕的色調而不是主要的按鈕風格來降低后續操作的視覺強度。
6. 去掉分割線
對于新手設計師來說,用分割線來區分內容是一種常見的方式,以此定義不同的組。這些邊框會造成不必要的視覺干擾,從而影響內容。
APP中的卡片并不是純粹的擬物概念,但通常情況下,使用一致的類比和物理原理能幫助用戶理解界面并分析內容中的視覺層次。在卡片的情況下,你可以做幾件事:
1. 使用圓角
在形態上與真實世界的卡片進行視覺對比。圓角更有效,因為它們讓我們的眼睛容易跟隨視覺動線,“因為它更適合頭部和眼睛的自然運動”。
2. 增加一個輕微的外邊框或者投影
增加一條淡淡的描邊框或者增加一個淡淡的投影都是很好的做法。陰影在界面中創造了一個層次,這有助于我們區分UI元素。
然而,在設計中添加陰影并不像聽起來那么簡單。有時候設計師會過分強化投影效果,讓原本看起來不錯的設計看起來很廉價。避免使用純黑色的陰影。
3.注意字體和留白
重要的是要讓每一張卡片都能被人看到、閱讀和理解。在每個塊周圍添加大量的空白,讓用戶有時間處理并進行視覺重置,有精力看完一張卡再到下一張。
選擇簡單和基本的字體,因為基本的排版最大限度地提高了可讀性,并有助于瀏覽。
讓我們看看一些真實項目中的卡片設計案例:
信息流中的卡片設計
保持信息流卡片簡單是很重要的。它們應該有一個一致的、重復的結構,但是使用不同的圖片和字體大小來代表卡片中最重要的和最不重要的元素,以使讀卡片的人更容易理解它們。
由Diseno Constructivo和Webpixels設計
他們突出特色圖片和標題作為最突出的元素,這能幫助用戶決定文章或發布的內容是否適合他們。
電商卡片設計
產品卡片是一個很重要的東西,它可以幫助你將訪問者轉化為客戶。一張優秀的產品卡片應該能夠吸引人們的注意,激發人們獲得產品的欲望,激勵人們購買,并在搜索結果中得到高效推廣。
由Webpixels設計
產品的名稱應該放在最顯眼的地方,這樣參觀者就會立刻明白他來對地方了。一個好的配圖能告訴顧客勝過千言萬語,所以你需要一個高質量的產品配圖來設計完美的產品卡片。
如果產品有特價,不僅要在價格欄中注明促銷價格,還要注明常規價格,以及客戶可以節省多少錢。
個人中心卡片設計
簡介卡已經成為一個應用或網站中的功能模板。隨著個人品牌變得比以往任何時候都重要,卡片設計在這里也能發揮重要作用。
由Neelesh Chaudhary設計
就像每一張卡片一樣,配置文件卡片也是一個UI組件,它包含了對它所代表的內容至關重要的信息。為了達到你的目標,你要向其他人推銷你自己。
確保只包括必要的信息(例如,照片,名字,職業),讓你的“關于”頁面有剩余的細節來完善你的個人資料。
儀表盤卡片設計
儀表板的設計可以有很大的不同。但是所有的儀表盤都是用卡片做的。根據儀表板的類型,每張卡片可能包括概要信息、通知、快速鏈接或導航設計元素、關鍵數據、圖表和數據表。確保你為每個元素使用了正確類型的卡片。
由Simmmple設計
儀表盤卡設計允許用戶決定他們想要關注哪些數據。易于理解的UI,允許用戶精確地控制哪些數據需要在儀表板的前端做好。
只包括最相關的信息,為用戶使用方便。當你的數據集在一起看更容易理解時,找到在一張卡片上顯示它們的方法。但是要小心,不要讓用戶感到困惑。
日常計劃卡片設計
看板任務卡似乎是一件非常簡單的事情——拿一張便簽,寫下你需要做什么,然后把它貼在墻上。這些卡片必須包含需要行動的單位數量。它們還可能包含各種各樣的其他信息,清楚地傳達了必須做什么。
由Neelesh Chaudhary設計
卡片上包含的信息包括任務的名稱和重要的細節,如任務的類型和誰擁有它??窗蹇ǚ旁跔顟B類別下。最基本的狀態類別是“計劃要做”、“正在進行中”和“完成”,但是狀態可能因項目而異。
卡片結構最適用于添加或刪除任務這樣的小改變,而不是改變像你的總體目標這樣的大想法。
有幾種方法可以使卡片設計更加有效。通過最初定義和觀察卡片,我們可以更好地了解跨行業的這種設計模式。這也讓我們能夠推測用戶希望在這些卡片上采取什么行動??ㄆ谔峁┰S多不同種類內容摘要的環境中尤其有效,而不是簡單地作為內容列表的現代替代品。
在配置的過程中踩了很多坑,還是太菜,有些東西弄不明白什么意思。
運行項目時的報錯可直接到最下面看vite.config.js文件的注釋
目前項目用到的模塊并不多,package.json文件如下
-
{
-
"name": "PsWebV3Abb",
-
"version": "0.0.0",
-
"scripts": {
-
"dev": "vite",
-
"build": "vite build"
-
},
-
"dependencies": {
-
"@vitejs/plugin-vue": "^1.0.0",
-
"axios": "^1.2.1",
-
"element-plus": "^2.2.26",
-
"vite": "^4.0.3",
-
"vue": "^3.0.4",
-
"vue-router": "^4.1.5"
-
},
-
"devDependencies": {
-
"@vue/compiler-sfc": "^3.0.4"
-
}
-
}
其實主要還是這些模塊的版本兼容問題
vite的版本最開始是1.0.0,后面很多地方搞不下去了才卸載了重裝新的版本
當然還是建議仔細閱讀一下官方文檔,其實很多重要的點都講的很清楚,只不過是遇到問題的時候才會注意到。官方文檔請移步這里
下面簡單的說一下這個文件,
首先是文件的位置,放在其他位置是無效的:
運行vite項目的時候,就會自動解析根目錄下面的這個文件
我這里的主要目的還是解決項目運行時的跨域問題
下面是封裝的一個簡單的請求示例,其中service是一個封裝好的axios實例,可以指定一下baseurl,以及請求和響應攔截。
其他的API都可以像這樣通過給getItem添加方法的方式實現
-
import service from '../utils/requests.js'
-
-
const getItem = {}
-
-
getItem.getppitem = function (params) {
-
return service.get('api/AutoSimple/getdata', params)
-
}
-
-
export default getItem
vite.config.js 具體的配置如下
-
import { defineConfig } from 'vite'
-
import vue from '@vitejs/plugin-vue'
-
// import eslintPlugin from 'vite-plugin-eslint'
-
// https://vitejs.dev/config/
-
-
// 這個配置文件可能出現的問題:
-
// 首先是此文件放置的位置
-
// 1.未安裝 @vitejs/plugin-vue
-
// 處理方法:npm i @vitejs/plugin-vue@1.0.0
-
// 由于本項目vite版本1.0限制,只能用了plugin-vue的1.0.0版本,但在運行的時候又導致了問題2,
-
// 于是直接卸載vite重新安裝最新的3.0.4,這個版本直接install plugin-vue仍然不行,還是要用1.0.0版本
-
// 2.顯示不存在函數 defineConfig
-
// 在此之后npm run dev,又報了一個錯:Cannot find module 'node:path'
-
// 在掘金上看到是和node版本有關,更新后就可以正常運行了
-
-
export default defineConfig({
-
plugins: [
-
vue()
-
// 檢查代碼格式
-
// eslintPlugin({
-
// include: ['src/**/*.js', 'src/**/*.vue', 'src/*.js', 'src/*.vue']
-
// })
-
],
-
server: {
-
// 默認打開的端口和本地
-
// host: '0.0.0.0',
-
port: 3000,
-
https: false, // 不支持https
-
proxy: {
-
'/api': {
-
target: 'http://10.200.20.80/BARCODESERVICE', // 實際請求地址
-
changeOrigin: true, // 是否跨域
-
rewrite: (path) => path.replace(/^\/api/, '') // 對什么類的服務器匹配
-
},
-
}
-
}
-
})
-
在部署生產環境時,又遇到了兩個問題:
客戶環境是IIS服務器,為了節省端口,在部署的時候選擇在同一個網站下添加多個應用程序的方式,這就使得在部署時,需要添加公共的基礎路徑,這一點在官方文檔中有詳細的說明。
解決方案:
在package.json中配置
-
"scripts": {
-
"dev": "vite",
-
"build": "vite build --base=/PsWebDand/ "
-
}
vite.config.js 中的server的proxy無效,此時跨域的問題需要通過在后端服務中配置來解決
IIS服務器
-
<httpProtocol>
-
<customHeaders>
-
<add name="Access-Control-Allow-Headers " value="Content-Type,api_key,Authorization" />
-
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
-
<add name="Access-Control-Allow-Origin" value="*" />
-
</customHeaders>
-
</httpProtocol>
定義 Proxy 代理對象的 set 的時候,
要返回 return true 。
特別是在嚴格模式下,否則,會報錯 'set' on proxy: trap returned falsish for property 'message'
let handler = { get(obj, property) { }, set(obj, property, value) { return true; } } new Proxy({}, handler);
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。
$emit,父組件傳data給子組件,子組件通過$emit來觸發父組件中綁定在子組件身上的事件,達到改變父組件中的data的方法。下面介紹$emit傳值的幾種方法:
一:$emit傳遞單值
子組件Test.vue:
-
<template>
-
-
<div>
-
-
<div>子組件</div>
-
-
<button @click="changeFather">點擊我向父組件傳遞參數</button>
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
export default {
-
-
methods: {
-
-
changeFather() {
-
-
this.$emit("changeEvent",'1');
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
</style>
父組件:App.vue
-
<template>
-
-
<div id="app">
-
-
<p>這是父組件</p>
-
-
<div>{{myString}}</div>
-
-
<Test @changeEvent="changeMyString" />
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
import Test from "./components/Test";
-
-
export default {
-
-
name: "App",
-
-
components: { Test },
-
-
data: function() {
-
-
return {
-
-
myString: ''
-
-
};
-
-
},
-
-
methods: {
-
-
changeMyString(val) {
-
-
console.log(val);
-
-
this.myString=val;
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
#app {
-
-
font-family: Avenir, Helvetica, Arial, sans-serif;
-
-
-webkit-font-smoothing: antialiased;
-
-
-moz-osx-font-smoothing: grayscale;
-
-
text-align: center;
-
-
color: #2c3e50;
-
-
margin-top: 60px;
-
-
}
-
-
</style>
點擊按鈕效果如圖:
二:$emit傳遞多個值
子組件Test.vue:
-
<template>
-
-
<div>
-
-
<div>子組件</div>
-
-
<button @click="changeFather">點擊我向父組件傳遞參數</button>
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
export default {
-
-
methods: {
-
-
changeFather() {
-
-
this.$emit("changeEvent",'1','2');
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
</style>
父組件App.vue:
-
<template>
-
-
<div id="app">
-
-
<p>這是父組件</p>
-
-
<div>{{myString}}</div>
-
-
<Test @changeEvent="changeMyString" />
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
import Test from "./components/Test";
-
-
export default {
-
-
name: "App",
-
-
components: { Test },
-
-
data: function() {
-
-
return {
-
-
myString: ''
-
-
};
-
-
},
-
-
methods: {
-
-
changeMyString(val0,val1) {
-
-
console.log(val0,val1);
-
-
this.myString=val0+val1;
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
#app {
-
-
font-family: Avenir, Helvetica, Arial, sans-serif;
-
-
-webkit-font-smoothing: antialiased;
-
-
-moz-osx-font-smoothing: grayscale;
-
-
text-align: center;
-
-
color: #2c3e50;
-
-
margin-top: 60px;
-
-
}
-
-
</style>
點擊按鈕,效果如下:
$emit傳遞多個值時,還可以采用數組的形式:
修改子組件Test.vue:
-
<template>
-
-
<div>
-
-
<div>子組件</div>
-
-
<button @click="changeFather">點擊我向父組件傳遞參數</button>
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
export default {
-
-
methods: {
-
-
changeFather() {
-
-
this.$emit("changeEvent",['1','2']);
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
</style>
父組件App.vue:
-
<template>
-
-
<div id="app">
-
-
<p>這是父組件</p>
-
-
<div>{{myString}}</div>
-
-
<Test @changeEvent="changeMyString" />
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
import Test from "./components/Test";
-
-
export default {
-
-
name: "App",
-
-
components: { Test },
-
-
data: function() {
-
-
return {
-
-
myString: ''
-
-
};
-
-
},
-
-
methods: {
-
-
changeMyString(val) {
-
-
console.log(val);
-
-
this.myString=val[0]+val[1];
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
#app {
-
-
font-family: Avenir, Helvetica, Arial, sans-serif;
-
-
-webkit-font-smoothing: antialiased;
-
-
-moz-osx-font-smoothing: grayscale;
-
-
text-align: center;
-
-
color: #2c3e50;
-
-
margin-top: 60px;
-
-
}
-
-
</style>
點擊按鈕,效果如下:
三:子組件通過$emit傳遞給父組件傳遞值,并且父組件有自定義參數時:
子組件Test.vue:
-
<template>
-
-
<div>
-
-
<div>子組件</div>
-
-
<button @click="changeFather">點擊我向父組件傳遞參數</button>
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
export default {
-
-
methods: {
-
-
changeFather() {
-
-
this.$emit("changeEvent",1,2);
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
</style>
父組件:App.vue
-
<template>
-
-
<div id="app">
-
-
<p>這是父組件</p>
-
-
<div>{{myString}}</div>
-
-
<Test @changeEvent="changeMyString('myParameter',...arguments)" />
-
-
</div>
-
-
</template>
-
-
-
-
<script>
-
-
import Test from "./components/Test";
-
-
export default {
-
-
name: "App",
-
-
components: { Test },
-
-
data: function() {
-
-
return {
-
-
myString: ''
-
-
};
-
-
},
-
-
methods: {
-
-
changeMyString(...args) {
-
-
console.log(args);
-
-
this.myString=args;
-
-
}
-
-
}
-
-
};
-
-
</script>
-
-
-
-
<style>
-
-
#app {
-
-
font-family: Avenir, Helvetica, Arial, sans-serif;
-
-
-webkit-font-smoothing: antialiased;
-
-
-moz-osx-font-smoothing: grayscale;
-
-
text-align: center;
-
-
color: #2c3e50;
-
-
margin-top: 60px;
-
-
}
-
-
</style>
點擊按鈕,效果圖如下:
藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。
分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。
演出項目可分為【有座項目】和【無座項目】兩種類型,有座項目又可分為【選座售賣項目】和【非選座售賣項目】。
大部分話劇、音樂劇、舞蹈芭蕾項目都是選座售賣項目。客戶來到貓眼客戶端中選擇想看的項目,選定座位并下單,最后檢票入場觀演,完成閉環。其中選座體驗是客戶轉化重要的一環,影響客戶決策。
為了提升用戶體驗,提升數據轉化,我們對貓眼目前選座體驗進行走查,探討問題原因,找到產品痛點和機會點,為產品優化做準備。
貓眼客戶端選座體驗問題:
1.自營項目無法直接選座,無論場館大小必須先選擇區域再選擇座位
如下圖,無法選擇圖中的座位,點擊座位跳轉到對應區域的座位圖,需要再次點擊選擇。
2.無法根據場館座位分布全局選座
如下圖,選擇A區后僅能查看到A區座位,無法看到其他區域座位和舞臺。
3.場館分區圖風格樣式不統一
如下圖,繪制精細程度不一,風格樣式不一。
這些問題產生的原因:
問題1:產品結構規劃上將場館分為區域和座位兩個層級,未根據場館規模分級別展示,例如大型場館先選區域再選擇座位,小型場館直接選擇座位。
問題2:B端后臺性能問題阻礙了客戶端全局查看選座。
問題3:區域圖依靠B端后臺上傳,沒有統一的繪制標準約束,故客戶端的樣式不統一。
通過以上原因可以看出客戶端選座體驗很大程度上取決于B端后臺的配置,所以要從B端配置入手,從根源上解決體驗問題。
本次研究目的
研究對象
我們通過產品研究和用戶訪談形式,結合業務需求,對產品功能進行審視走查,希望能挖掘出產品痛點和機會點。
B端場館圖繪制及座位配置的主要用戶是運維人員,所以我們對運維人員進行了深度訪談,主要目的:
1.了解用戶使用貓眼B端的操作行為和痛點;
2.觀察用戶使用相似產品【城市售票網B端系統】的行為和痛點。
演出項目座位配置業務流程
商務與場館洽談好合作后,會提交添加/修改場館座位模板的郵件給到運維人員,由運維人員在B端后臺中進行創建和修改。商務可在B端后臺創建項目關聯到對應場館配置票價等。
在這條業務流程中,涉及到B端選座配置的部分:
1.創建/維護場館分區模板;
2.創建有座項目、關聯對應場館、配置票價、配置預留。
一、創建/維護場館分區模板
創建場館分區模板主要分為兩個步驟:
創建場館分區:包含兩個主要頁面和一個彈窗,承載創建分區圖和設置分區信息功能。創建分區支持上傳底圖、SVG圖,編輯器繪制。
創建分區座位:包含一個主要彈窗,承載畫座位、座位編號、移動座位、統計座位等功能。
1. 創建分區體驗痛點
1.1 使用SVG編輯器繪制場館分區圖操作不便
嵌入式畫圖工具僅能繪制較為簡單的圖形,門檻高且繪制成果不理想,對于復雜場館無法滿足繪制需求,無法與演出業務很好的結合。
1.2 運維使用第三方工具,繪制風格差異大
由于畫圖工具繪制不理想,運維人員自學AI、Coreldraw等繪制后上傳到后臺系統。人和工具的不同導致座位圖風格差異較大。
1.3 項目變動維護不便
項目調整需通過第三方繪制工具修改或重新繪制導出后上傳到后臺,修改流程長且重復操作過多。
2. 創建座位體驗痛點
2.1 畫座方式不支持繪制傾斜、曲度、錯位的座位
固定的座位方格坐標對坐標,自由度差,無法自定義座位角度和排布形式。無法精準還原場館座位分布。
2.2 不支持自定義舞臺方向和位置
舞臺位置方向固定,無法滿足多個舞臺、座位包圍舞臺配置。
2.3 繪制座位交互操作單一
僅支持鼠標在方格內拖動繪制,效率低,增刪改操作麻煩。
2.4 交互流程不通順
編號、移動等功能先切換功能再選擇座位的順序不符合用戶行為,符合用戶操作的順序是先選擇座位再點擊對應操作配置。
座位編號、移動、統計功能不適合tab形式,交互組件使用不當。
2.5 交互界面表達有誤
座位編號分為排編號和列編號兩種方式,選擇一種并填寫配置參數。系統界面中兩種方式都有*(必填)容易引起誤導。
2.6 刪除編號語義不明確
選擇座位后點擊刪除編號按鈕后座位和編號都被刪除,按鈕語義與實際意思不符。并且誤刪除座位還會增加重新繪制工作量。
3. 產品結構體驗痛點
3.1 分區形狀與座位分布關聯度低
分區的大致形狀應由分區座位的排布所決定,而產品中分區形狀與分區座位形狀并無直接的關聯,導致用戶在選座時產生較大的割裂感。
3.2 不支持直接選座
為了讓客戶更直觀的掌握場館座位分布,運維人員繪制時會盡可能還原,但客戶選擇時還要進入分區后才能選擇座位,且僅能查看到一個分區的座位,不能全局選座。
4. 框架和容器動線體驗痛點
4.1 分區配置位置分散,操作效率低
分區繪制與信息配置分散在兩個頁面和1個彈窗中,頁面布局分散,動線復雜多變。
4.2 座位配置比重弱
座位配置權重高且操作復雜,不適合使用彈窗承載,位置層級太深。
5. 產品與業務關聯體驗痛點
5.1 座位配置功能單一,缺少輔助操作
繪制座位圖是一項龐大的工程,系統內大型場館的座位達到4-9萬個,例如鳥巢、梅賽德斯奔馳文化中心。繪制大型場館需要花費3-4天時間,座位分布復雜的場館需要花費更長時間。目前系統僅有單一拖動方格的繪制方式,缺少提升繪制效率的輔助工具,例如撤回、復制座位、多種對齊/翻轉方式等。
6. 體驗優點
6.1 繪制場館分區圖時支持導入SVG
方便繪制大型復雜的場館。
6.2 系統穩定
復雜的場館繪制時間長且操作復雜,系統未產生過崩潰或其他終止情況。
二、配置票價和預留
配置票價和預留主要分為三個步驟:
選定場館分區:確認場館并選擇場館內分區
配置票價:選擇座位配置票價。
配置預留:選擇座位配置預留。
1. 框架和容器動線體驗痛點
1.1 頁面結構相似,內容重復
票價和預留頁面重復度高,都包含分區預覽、選座情況、分區座位圖模塊。
2. 交互細節體驗痛點
2.1 同樣功能不同頁面交互和視覺不一致
兩個頁面都包含分區預覽模塊,但交互視覺差別較大,交互視覺操作不統一。
2.2 內容表達不清晰
設置預留操作中,“對象”文案語義表述不清晰、“貓眼”和“釋放”不屬于同一層級且語義表達不清楚;新增預留標記按鈕位置有誤,應該放置在自定義預留下方,而不是與“對象“平級。
2.3 設置預留后無法查看座位編號
設置預留后,座位編號被預留標簽替換,從而看不到座位編號,影響識別。
3. 產品功能體驗痛點
3.1 不支持導出票務方案圖
在項目洽談后、正式開票前,報批時需要提供給主辦和公安票務方案圖,供主辦審核,目前需要運維自行制作不支持導出。
一、維護場館分區模板
1. 產品結構
與貓眼B端后臺相同,城市售票網在繪制場館分區圖時也是分為兩個步驟,先配置區域再配置座位。
區域配置:支持上傳底圖并通過繪制工具畫出區域形狀,繪制完成后可直接配置區域信息。
座位配置:通過繪座工具畫出區域座位,選座工具和配置工具進行輔助繪制。
2. 產品布局
2.1 區域與座位配置結構清晰,頁面布局規整;
2.2 區域和座位配置兩步銜接緊密,操作動線流暢。
3. 區域配置功能分析
優點:
1)支持上傳底圖及調整比例;
2)繪制工具易用性較高;
3)繪制風格統一;
4)分區配置動線流暢。
痛點:
1)不支持上傳SVG圖;
2)繪制POH(區域)的工具少,僅鋼筆工具;
根據產品定義,繪制座位分區使用區域工具,繪制舞臺、樓梯、出入口等場館輔助設施使用形狀工具。根據業務實際情況,區域繪制為主,形狀繪制為輔。然而區域繪制工具僅有一個鋼筆工具,Shape(形狀)繪制工具有三個,主次顛倒。
3)區域和形狀繪制工具容易混淆。
左側工具欄中兩類繪制工具未明確分開,非熟練人員操作時會誤用兩種工具。
4. 座位配置功能分析
4.1 創建座位
優點:
1)工具繪制靈活自由;
2)支持旋轉座位。
痛點:
1)需要熟悉繪制工具交互操作,有一定的上手門檻;
2)單個座位工具、路徑繪制工具在繪制結束需要鼠標雙擊,在無指導的情況下用戶很難發現。交互操作缺少說明文字或圖片解釋。
4.2 選擇座位
優點:
1)多種輔助工具提升繪制效率;
2)支持區域內復制黏貼座位。
痛點:
1)僅能在區域內復制黏貼座位,不具備區域之間座位復制或復制區域的能力。
對稱布局是場館中常見的一種布局形式,繪制好一個區域座位后復制并翻轉就可以快速畫完另一個區域。
如下圖所示,當前在G區域編輯座位,雖然可以復制G區的座位黏貼,但僅在G區能看到,無法復制到C區圖層內。
2)不支持設置弧度座位。
如下圖所示場館無法在系統內完全還原。
4.3 座位編號
優點:
1)編號方式支持字母、數字、字母數字結合形式,符合多種場景需求。
痛點:
1)編號受限于繪制時的分組;
繪制座位需要根據座位編號邏輯繪制分組,不可以一次性全部繪制完后分開編號。
若第一次繪制有遺漏座位,第二次補充后,無法整體編號。
2)無法取消編號。
編號僅能修改,不能刪除
5. 產品視圖分析
5.1 編輯座位視角
缺點:
1)僅支持在預覽功能時查看創建的全部座位。繪制某一區域座位時無法看到其他區域座位,缺少全局參考。
二、配置票價和預留
1. 產品布局
優點:
1)票檔和預留配置與場館座位配置結構相似,布局和操作統一,易于理解。
2)票價和防漲配置在一個頁面內完成,簡單清晰。
2. 票價及預留配置功能分析
痛點:
1)設置預留后無法查看到座位編號
如下圖中A標記的座位是預留座位,無法查看座位編號
2)預留模式下,選中已設置票檔、未設置預留的座位時,無法區分票檔
如下圖選中狀態下1-6號座位無法區分票檔A/B
3. 總結
城市售票網B端系統的在繪制場館圖上靈活度自由度高,界面布局規整,動線清晰,產品功能適用于多元復雜場景,不過需要用戶具有一定的繪圖基礎或熟悉成本。
通過以上分析,我們總結出貓眼B端系統后續的優化方向,框架和容器動線上需要提高用戶瀏覽和操作效率,頁面進行歸類整合,布局樣式統一;繪制環境上需要為用戶提供靈活自由的區域座位繪制工具,配備高效的選座和輔助工具。
一、整體布局
1)打破現有的分區與座位不平衡布局模式,梳理動線
二、功能
1. 場館分區設置
1)提供與業務關聯度高的、易用的分區繪制工具;
2)支持多種類型分區,例如舞臺區、座位區、舞池區等;
3)提高分區與座位繪制還原度;
4)確立場館規模分級,客戶端根據級別展示座位層級或直接進入分區層級。
2. 場館座位設置
1)提供易用度高的座位繪制工具或座位添加方式;
2)支持靈活選座,靈活編號;
3)支持調整座位角度、弧度、間距參數;
4)提供提升繪制效率的輔助工具;
5)支持跨區復制座位或復制區域功能;
6)提升座位配置頁面權重,完善座位配置界面。
3. 配置票價和預留
1)整合票價和預留頁面;
2)修正界面交互視覺問題;
3)支持設置預留后查看座位號;
4)增加導出票務方案圖功能。
這次研究我們從業務、產品功能、用戶三方面對選座配座模塊進行走查,抓住產品痛點,為后續改造指明了方向;對同類型產品的選座配座解決方案進行分析,幫助我們獲得新思路。
隨著沉浸式劇場、互動型劇場等新型演出的發展,場館座位布局不再是單一的座位正對舞臺,多個舞臺、座位多角度圍繞舞臺的布局形式不斷出現,今后還會有更多新型座位布局出現。設計適用于多種業務場景、頁面動線清晰、繪制功能好用的后臺工具不僅能提升運維人員的操作效率,也能提升客戶端用戶選座體驗和購票轉化,從而提升產品的市場競爭力。隨著演出行業的逐步復蘇,大量選座項目上線,改造選座模塊是我們工作重中之重。
藍藍設計的小編 http://www.syprn.cn