首頁

Lottie 動效設(shè)計

純純

動效設(shè)計,是 UI 設(shè)計當中不可或缺的一環(huán)。大家對動效的認知也從最初認為動效只是為了美觀酷炫,到逐漸理解了動效對于提升用戶體驗和產(chǎn)品需求的重要作用。而導(dǎo)致這種認知的轉(zhuǎn)變,相當一部分原因是因為硬件性能的發(fā)展和動效輸出方式的優(yōu)化。

因為動效實現(xiàn)的過程就是設(shè)計師和開發(fā)之間互相博弈的過程。設(shè)計師可能通過 AE 或者其他工具做出炫酷的效果,和開發(fā)對接就懵了。要么無法實現(xiàn),要么極其復(fù)雜。畢竟開發(fā)工程師要通過代碼把動效實現(xiàn)出來,設(shè)計師得用開發(fā)所能理解的語言來描述。就如同你能完美地解出一道數(shù)學題一樣,讓你把解題思路教給別人,你可能就沒那么順暢了。一方面取決于你的表述能力,而更重要的是對方的理解能力。過去所廣泛采用的通過動效標注輸出給開發(fā)的方式,都存在還原度的問題。很多時候還原度達到 80% 可能都算比較好的了。

而今天要說到的 Lottie 不僅可以 100% 還原動效,而且無需動效標注。直接通過 AE 輸出動效文件給開發(fā)。開發(fā)人員直接調(diào)用,然后完美還原。

Lottie是什么?

Lottie 是 Airbnb 開源的一個動畫渲染庫,同時支持 Android、iOS、React Native 平臺。Lottie 支持渲染播放 AE 動畫。通過 AE 插件 bodymovie 導(dǎo)出 json 文件作為動畫數(shù)據(jù)。


Lottie有什么用?

Lottie 可以應(yīng)用在 UI 設(shè)計的很多場景中。以下舉出幾個常用例子。

1. 動態(tài)啟動頁


2. 動態(tài)圖標/按鈕

3. 空頁面




以上僅列舉了部分常用案例,其實 Lottie 的應(yīng)用場景遠不止這些。在 APP 的多個模塊中都可以運用,那么我們要如何將 Lottie 運用在自己的工作項目中呢?那就要了解 Lottie 的原理了。


Lottie的原理是什么?

前面已經(jīng)提過 Lottie 是 Airbnb 開源的一個動畫渲染庫。我們可以理解為它是一個多功能的視頻播放器,開發(fā)人員需要將這個播放器部署到相應(yīng)的環(huán)境中。然后設(shè)計人員提供視頻(動效文件)給開發(fā)人員,讓開發(fā)人員按照要求播放視頻文件,即可完成動效的應(yīng)用。


假設(shè)該按鈕動效一共10幀,整個按鈕切換分為兩部分,第一部分:從菜單切換到關(guān)閉(1-10幀);第二部分:從關(guān)閉切換到菜單(10-1)。我們可以讓開發(fā)通過以下控制方式,完成我們想要的效果。

按鈕動效默認顯示第1幀(菜單狀態(tài)),點擊按鈕以后開始播放動效,動效播放到第10幀的時候停止,并停在第10幀(關(guān)閉狀態(tài))。當按鈕為關(guān)閉狀態(tài)(第10幀)時,點擊按鈕以后動效從第10幀倒放到第1幀(關(guān)閉狀態(tài)),并停在第1幀(菜單狀態(tài))。

通過以上方式就完成了對一個動效按鈕的控制。而日常工作中我們可以靈活地運用多種控制方式。

首先動效的觸發(fā),可以是一次交互事件,比如點擊、滑動;也可以是監(jiān)聽到了廣播,比如網(wǎng)絡(luò)異常等。而觸發(fā)以后的動效控制也多種多樣,可以從開始播放到結(jié)束,也可以進行倒放;可以循環(huán)播放某一段動效;也可以從某一幀播放到另一幀,或者某一個時間點播放到另一個時間點;更多的控制方式需要大家在工作中慢慢挖掘。

Lottie支持的AE屬性

Lottie雖然能夠滿足多種場景需要,但是并非支持所有的 AE 效果。設(shè)計制作時,需要考慮該效果是否支持。否則,會導(dǎo)致出錯或者所用效果無法生效。



上圖為 Lottie 支持的主要 AE 屬性,此處有刪減掉部分不常用的屬性??梢源蜷_以下鏈接查看完整版http://airbnb.io/lottie/#/supported-features

需要注意的是文檔中雖然說支持漸變,但是會出錯,所以大家在使用矢量圖形時,請勿使用漸變效果。關(guān)于漸變效果的修復(fù)后續(xù)文章會提到,官網(wǎng)以后也會修復(fù)相關(guān)問題,但是沒有確切時間。

通過上圖我們可以了解到,Lottie 支持的 AE 屬性基本包含以下幾類:

  • 基礎(chǔ)的形狀比如圓形、矩形、星形等,也可以支持鋼筆工具繪制的矢量形狀和從 AI 中導(dǎo)入的矢量圖形。
  • 支持位移、大小縮放、透明度、旋轉(zhuǎn)、修剪路徑、蒙版、遮罩這些基礎(chǔ)動畫屬性。
  • 支持圖層間建立父子級關(guān)系(只支持圖層與圖層之間建立,當圖層的屬性之間建立父子關(guān)系會失效,比如 A 圖層可以和 B 圖層建立父子關(guān)系,但是 A 圖層的位移屬性和 B 圖層的位移屬性單獨建立父子關(guān)系則不生效)。
  • 支持速度貝塞爾插值,可以搭配 Flow 插件生成各種緩動效果。
  • 支持導(dǎo)入圖片。
  • 支持時間拉伸和時間重映射來通知時間和速度。

(原文章來源于:https://www.uisdc.com/lottie-dynamic-design-guide





inheritAttrs和$attrs的使用

seo達人

禁用繼承屬性inheritAttrs和$attrs的使用

Index.html:



<div id="app">

        <test-input

         v-bind:class="class1"

         v-bind:style="{fontSize:17+'px'}"

         v-bind:test1='test1'

         test2="test2"

         placeholder="placeholder test3"

        ></test-input>

    </div>



Index.js:



Vue.component('test-input', {

  inheritAttrs: false,

  template: &lt;label &gt;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;p v-bind="$attrs"&gt;測試&lt;/p&gt;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input&nbsp; v-bind="$attrs"&gt;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/label&gt;

})

new Vue({

  el:'#app',

  data:{

    class1:'class1note',

    test1:'test1note',

    test2:'test2note',

},

})



頁面結(jié)果:



當將屬性修改為:inheritAttrs: true,的時候

頁面的結(jié)果:



包含了所有的屬性:



最后總結(jié):

當inheritAttrs的屬性值為true(不寫該行屬性的結(jié)果同true,也就是inheritAttrs默認為true),組件的根元素會自動繼承所有的屬性!當為false的時候,根元素只會繼承注冊的屬性,自建的屬性不會繼承!!

attrs:它包含了父組件所有的自建屬性!可以通過v?kind=“ attrs:它包含了父組件所有的自建屬性!可以通過v-kind=“attrs:它包含了父組件所有的自建屬性!可以通過v?kind=“attrs”將所有自建屬性賦給想要的元素上??!




交互設(shè)計:如何做到周到?

資深UI設(shè)計者

在涉及體驗細節(jié)的小需求上,避免所有的不周到,方才是周到


前兩篇,探討了個人對交互設(shè)計價值觀的理解,以及其對從業(yè)者和用戶的價值。


這一篇,我們就來探討一下,如何做到之前提到的 4 點價值觀。


先從“周到“開始。

僅為一家之言。歡迎留言交流,說出你的看法。



01 怎樣算是周到?


本著嚴謹?shù)膽B(tài)度,先捋一捋概念。


常言道,金杯銀杯,不如百姓口碑。


同理,周不周到,最終還是用戶說了算。那用戶是怎么評判的呢?通常是憑主觀感受。


拿上篇文章中網(wǎng)易號文章編輯頁面的例子來說,因為“保存”和“存草稿”功能做的不夠好,所以給筆者留下了不夠周到的印象。


翻譯過來,就是,一些體驗細節(jié),影響了用戶的印象。


《設(shè)計師要懂心理學》這本書中有條原則,叫“整體認知主要依靠周邊視覺而非中央視覺”。


講的是視覺和 UI 層面的用戶認知。就是說,用戶會關(guān)注并不顯眼的邊邊角角的設(shè)計,而且這些邊邊角角的設(shè)計會影響用戶對整體設(shè)計的認知和印象。


舉個例子。假如說,微博信息流頁面的掃一掃圖標,在風格、大小等方面和其它圖標不統(tǒng)一,就會給用戶留下比較糟糕的印象,用戶很可能會覺得微博的設(shè)計不夠?qū)I(yè)。


這些是 UI 設(shè)計層面的。在交互設(shè)計層面,也是類似的道理:體驗細節(jié)會影響用戶的認知。


總的來說,至少在常用的交互細節(jié)上,不要給用戶留下負面印象,也不要讓用戶產(chǎn)生負面情緒,避免所有的不周到,才算是周到。



02 如何做到周到?


個人覺得,最關(guān)鍵的地方,是滿足好小需求。



啥是小需求?


個人觀點,籠統(tǒng)的講, 小需求是一種共性需求, 主要是一些體驗細節(jié)。比如信息的分類與展示、銜接不同頁面的各種彈窗與提示、對各種狀態(tài)的提示、對各種情況的到位解釋,等等。


有小需求,就有大需求。


所謂大需求,更多是一種個性需求, 不同的產(chǎn)品,會有不同的大需求。比如短視頻產(chǎn)品,它的大需求會包含視頻的拍攝、上傳、播放等;資訊類產(chǎn)品,它的大需求則包含文章的撰寫、編輯、發(fā)布、查看等。



工作經(jīng)歷,筆者見過一些交互設(shè)計不夠周到的產(chǎn)品。它們的共同特點就是: 大需求基本上得到了很好的滿足,小需求沒有得到很好的滿足。


這一大段,就圍繞如何更好的滿足小需求來展開。主要建議如下。



1 工欲善其事,必先利其器


筆者有個客戶,是從事教育行業(yè)的,之前并沒有接觸過互聯(lián)網(wǎng)行業(yè)的產(chǎn)品與設(shè)計工作。


這位客戶找到筆者的時候,是想要設(shè)計一款小程序的界面。當時客戶非常自豪的對筆者說,這個(原型)是我用墨刀畫的,現(xiàn)學現(xiàn)做。


說起墨刀,本人也用過。和 Axure 相比,確實好用太多,在簡潔性和智能性方面,感覺和 Sketch 有異曲同工之處。


關(guān)于墨刀如何好用,網(wǎng)上已經(jīng)有太多溢美之詞。筆者就結(jié)合自己的使用經(jīng)歷,簡單總結(jié)一下:

1 好用,上手快。零基礎(chǔ),只要會操作常用辦公軟件,簡單學一下就能上手

2 內(nèi)置主流控件(iOS,安卓,WeUI等),非常方便

3 能在手機端預(yù)覽。加入鏈接和動效后,會很酷

4 能查看頁面之間的跳轉(zhuǎn)邏輯。借助工作流功能,可實現(xiàn)這一點


以上主要是墨刀自身的優(yōu)點。結(jié)合本段主題,我們再探討一下,對于日常工作,墨刀這把利器有哪些優(yōu)勢。


1.1 可以把更多精力花在創(chuàng)作上


當我們不會用一款工具時,通常會有一些挫敗感。如果必須要用,接著很可能就會有一點焦灼了。


而墨刀,基本上不會讓我們體會到這些感覺。


我們也不用花無謂的時間去學習一些艱難的高深的技法,而是可以把更多的時間花在“創(chuàng)作”這件事上。


1.2 可以更好的去滿足小需求


部分公司,可能面臨如下情況。


公司沒有專門的交互設(shè)計師,產(chǎn)品的原型由產(chǎn)品經(jīng)理來畫。產(chǎn)品經(jīng)理本身還兼任項目經(jīng)理。


如果項目又特別趕,客觀上,產(chǎn)品經(jīng)理確實沒有太多時間去關(guān)注交互的體驗細節(jié)。

主觀上,如果產(chǎn)品經(jīng)理對這些交互細節(jié)的興趣或重視程度不足、同時產(chǎn)品經(jīng)理上面的決策層也不去抓這些體驗細節(jié),最終的結(jié)果,就是產(chǎn)品的原型上可能會丟失很多體驗細節(jié)。


筆者就有類似的經(jīng)歷。


一款 App,產(chǎn)品經(jīng)理用 Axure 畫的原型。評審或宣講需求的時候,大家都是在電腦或會議室大屏幕上來看這個原型,同時所有人關(guān)注的是大需求。


理解完大需求,會有部分同學就大需求提出自己的看法或建議。最后,才會有部分同學就小需求指出不足并提出建議。


受限于職責、時間等各種因素,大家也不可能針對小需求提出太多建議。結(jié)果就是,仍然會有相當數(shù)量的小需求被遺漏,或者沒有被很好的滿足。


墨刀有兩個功能,可以較好的規(guī)避這些問題。一個是工作流功能,一個是手機端預(yù)覽功能。


工作流功能,類似流程圖,即把所有頁面以合乎邏輯的方式鏈接起來??陀^上,會促使我們畫出所有包含小需求的頁面,包括彈窗、狀態(tài)提示等。


支持多人的手機端預(yù)覽功能,使得我們在手機上,可以通過點擊等方式來模擬體驗這款 App。這樣的環(huán)境下,我們會更容易理解大需求,也更容易發(fā)現(xiàn)小需求存在的問題。


所以,個人的建議,就是用墨刀來畫原型,同時把工作流和多人手機端預(yù)覽(針對 App、小程序)這兩項,作為硬性標準。


2 去用去感受


一款產(chǎn)品,在體驗或使用時,非常容易發(fā)現(xiàn)問題。


因為這時候,我們可以松弛下來,把自己切換成普通用戶。忘掉所有費腦子的需求和設(shè)計原理,只依賴經(jīng)驗和直覺來用這款產(chǎn)品。我們的主觀感受,會告訴我們,這款產(chǎn)品的交互,到底周不周到。


據(jù)陸樹燊的《微信團隊的實驗室文化》一文顯示,張小龍評審微信的功能,不看原型圖,不看設(shè)計稿,也不看 Demo,而是體驗前后臺代碼開發(fā)好后的產(chǎn)品。這就意味著,如果一個功能在給到用戶前有 N 個方案,就會有 N 個方案對應(yīng)的前后臺代碼。


一定程度上,微信團隊就是通過這種在正式發(fā)布前反復(fù)試錯、不斷打磨的方式,最終給用戶提供了優(yōu)秀的交互體驗。


估計,絕大部分團隊和公司,都做不到微信這樣,開發(fā) N 個版本,并去一一體驗和比較這 N 個版本。


無法體驗已經(jīng)開發(fā)好的 N 個版本。但是,在真實的設(shè)備上體驗 N 個原型,我們還是可以做到的。


原型雖然沒有開發(fā)好的產(chǎn)品那么順暢和流暢,但是,如果用墨刀在手機端體驗一款加了鏈接和動效的 App 原型,一樣可以發(fā)現(xiàn)很多問題。


不過,根據(jù)經(jīng)歷和觀察,筆者發(fā)現(xiàn),我們?nèi)祟?,是不喜歡體驗原型的。

想一想,平常工作中,我們可能會樂此不疲的去體驗開發(fā)好的測試版產(chǎn)品。但對于原型,大部分時候,都是匆匆忙忙就過掉了。


個人有個猜測,就好像人類喜歡逗貓遛狗、卻不太喜歡逗桌子上的模型貓和模型狗一樣,我們?nèi)祟愂遣惶敢饣ㄙM太多時間和精力去和原型這種“假產(chǎn)品”互動的。


所以,某種程度上,體驗原型,是一種反人性的行為。


但卻是一種非常經(jīng)濟和的方法。


因為首先,大部分時候,我們都是先選中一個原型方案,然后去設(shè)計、去開發(fā);其次,等到開發(fā)好進入測試環(huán)節(jié),這時候,原型往往就成了測試的標準,依靠測試來優(yōu)化原型是不現(xiàn)實的。


所以,結(jié)合現(xiàn)狀,綜合來看,小需求能不能得到很好的滿足,很大程度上還是要依靠原型。


也就是說,很有必要對原型進行優(yōu)化。具體方法,就是在真實的設(shè)備上體驗原型、反復(fù)體驗、多人體驗,并進行相應(yīng)優(yōu)化。


3 參考設(shè)計規(guī)范


如前所述,用利器來創(chuàng)作原型,反復(fù)在原型里體驗產(chǎn)品,這些強調(diào)的是內(nèi)部力量,即自身的努力。


下面,再談一談外部力量,即外界海量的知識與經(jīng)驗。


說起外界知識,除了直接參考其他產(chǎn)品的設(shè)計以外,大家參考最多的,可能就是《iOS Human Interface Guidelines》和《Material Design》這些設(shè)計規(guī)范了。


根據(jù)筆者的實際經(jīng)驗,這兩個來自蘋果和谷歌的設(shè)計規(guī)范,很多時候,我們都是拿它們當字典用。即哪一點不會或不太確定的時候,去翻一翻查一查。


雖然這倆規(guī)范很優(yōu)秀,但是卻很難被我們“物盡其用”,因為它們的知識體系過于龐大,有點像一本字典。拿著“字典”里的每一條原則去檢驗我們的交互設(shè)計,這是很難做到的。


但是有一個設(shè)計規(guī)范,去非常適合拿來檢驗我們的交互設(shè)計,那就是尼爾森十大可用性原則。


太詳細的就不贅述了,這里我們再簡單回顧下這十條原則。


1) 狀態(tài)可見
用戶時刻清楚,正在發(fā)生什么


2) 環(huán)境貼切
營造一個用戶熟悉的環(huán)境,比如語言、詞語、圖標等


3) 用戶可控
控制權(quán)交給用戶,并且多數(shù)時候,考慮支持撤銷重做


4) 一致性
方方面面的統(tǒng)一,比如文案、視覺、操作等


5) 防錯
盡最大可能,幫助用戶,避免用戶犯錯


6) 易?。鹤R別比記憶好
通過把組件、按鈕等元素可見化,降低用戶記憶負擔


7) 靈活
優(yōu)先考慮人數(shù)最多的中級用戶,同時兼顧高級和初級用戶


8) 易掃:優(yōu)美且簡約
閱讀體驗要好,掃視體驗也要好;保持簡約和美觀


9) 容錯
幫助用戶識別、診斷,并從錯誤中恢復(fù)


10) 人性化幫助
日常的使用最好脫離幫助文檔,但有必要提供幫助文檔



個人非常建議,在日常工作中,把尼爾森十大可用性原則作為一把標尺,來時時刻刻檢驗我們的交互設(shè)計。



結(jié)語


交互設(shè)計,在涉及體驗細節(jié)的小需求上,避免所有的不周到,方才是周到。


用利器創(chuàng)作原型,要包含流程圖;多體驗原型或產(chǎn)品,以體驗結(jié)果為準、而非討論結(jié)果為準;參考優(yōu)秀的設(shè)計規(guī)范,用尼爾森十大可用性原則來檢驗原型。


以上三點,可以幫助我們做到交互設(shè)計的周到。

其中,個人認為,最為核心的是第二點:多體驗原型或產(chǎn)品,直到自己覺得周到為止。



文章來源:站酷

快速掌握黃金分割構(gòu)圖法

資深UI設(shè)計者

自從做設(shè)計以來經(jīng)常會看到一些很高大上的理論,例如:格式塔法則、網(wǎng)格系統(tǒng)、黃金分割法等等,這些詞語給人第一印象就是很高大上,很難學會,也有很多設(shè)計師看到這些理論就被嚇到,認為自己學不會,也不想學,因為理論知識確實是學起來很枯燥。對于初學者的設(shè)計師來說,這些理論可以在短時間不用學太多,但是對已經(jīng)工作幾年的設(shè)計師來說,這些設(shè)計理論知識也是必不可少的。

只有掌握設(shè)計中必要的設(shè)計知識,才能讓自己的設(shè)計眼界、技能得到提升。就我個人而言,我在設(shè)計初期也是很反感這些所謂的理論知識,對于我來說簡單通俗的教學才是最容易讓人接受的,理論太深奧,我真的無法從中體會到真正的奧秘。但是,越到后面,我越喜歡研究那些設(shè)計理論知識,因為我越來越懂得那些理論的重要性,對我的設(shè)計也有很大的幫助。所以今天我采用通俗易懂的方法,教大家去理解和掌握這些高大上的設(shè)計理論知識。

今天主要分享我們經(jīng)常聽到的黃金分割構(gòu)圖法。

黃金分割構(gòu)圖法:是一種由古希臘人發(fā)明的幾何學公式,遵循這一規(guī)則的構(gòu)圖形式被認為是「和諧」的,在欣賞一件形象作品時這一規(guī)則的意義在于提供了一條被合理分割的幾何線段。

黃金分割構(gòu)圖法的基本理論來自于黃金比例 ── 1 : 1.618。

黃金分割構(gòu)圖法運用到海報設(shè)計、畫冊設(shè)計、網(wǎng)頁設(shè)計、繪畫、服裝設(shè)計、logo 設(shè)計、電視電影、建筑等等領(lǐng)域。在攝影中也經(jīng)常會引入黃金分割比例,可以讓照片感覺更自然、舒適,更能吸引觀賞者,給人一種賞心悅目的視覺感受。

優(yōu)秀案例分析

我們先賞析一些運用黃金分割法的優(yōu)秀案例,通過賞析能讓我們體會到它的美和重要性。

1. 在海報中的應(yīng)用

從上面的 2 張人物海報案例中,可以看出都利用了黃金分割螺旋法的技巧,當整張圖作為背景時,我們不知道圖片主題位置的掌控時,就可以采用黃金分割法的原則。對于人物,可以根據(jù)想要突出的人物某一部位,直接采用這種分割方法快速找到版面位置

下面2張海報是通過圖形和文字的結(jié)合,主題文字排版的位置也都剛剛好是黃金分割的編排,帶給人一種美的、舒適的畫面感,圖片和文字在版面的比例剛好是 1 : 0.618。

2. 在網(wǎng)頁中的應(yīng)用

上面 2 個網(wǎng)頁都采用了黃金分割的原則,大體將版面分為圖片區(qū)+文案區(qū),比例為 1 : 0.618。上面同時采用了網(wǎng)格重疊的形式,而下面的就是最基本的黃金分割比例。版面的編排整體給人一種呼吸感、有序的、層次分明的視覺感受,并且瀏覽的順序也是井井有條,如下圖閱讀順序指引:

3. 在繪畫上的應(yīng)用

像我們看熟悉的名畫「蒙娜麗莎」、「維納斯的誕生」等也符合黃金分割的比例。黃金分割比例也在這些作品上經(jīng)過了歷史認證,利用黃金分割布局,讓畫面更耐看、更精致。

4. 在攝影上的應(yīng)用

在攝影中也經(jīng)常會引入黃金分割比例,可以讓照片感覺更自然、舒適,更能吸引觀賞者,給人一種賞心悅目的視覺感受。使用黃金分割的攝影可以制造出一種空曠、寂靜的視覺效果,也可以制造出一種特寫鏡頭的效果。不知道怎么拍照好看,學會這一招你的攝影立馬高大上。

5. 在建筑上的應(yīng)用

在建筑設(shè)計中的運用也有很多案例,例如上面的金字塔和泰姬陵的多處布局都能看出黃金分割,第三張中國古建筑也都運用了黃金分割構(gòu)圖。自古以來很多文化建筑都采用了這個構(gòu)圖,讓建筑看起來更加美觀、耐看、精致。

怎么畫螺旋黃金分割圖

了解了螺旋黃金分割法的用途和好處,我們最主要的是需要知道怎么來畫這個螺旋黃金圖。

1. 新建畫布

2. 畫正方形

這里畫正方形是最關(guān)鍵的一步,我們只要知道螺旋黃金圖的比例就可以很快的畫出來。

螺旋黃金圖比例為:13 : 8 : 5 : 3 : 2 : 1

只要知道螺旋黃金圖的比例我們就可以開始畫正方形了,簡單的正方形不用我多說吧。我們按 10 倍的比例來畫圖,簡單的意思就是前面的螺旋黃金圖比例都乘 10,變?yōu)?130 : 80 : 50 : 30 : 20 : 10,再根據(jù)這個數(shù)字畫出 6 個正方形。

正方形畫好后按照這個轉(zhuǎn)圈的順序排好即可。

3. 畫圓弧線

正方形畫好后,畫圓弧線,可以通過畫正圓得到。

圓弧線為正圓的四分之一,圓的半徑為每個不同正方形的邊長,通過不同大小的正方形畫出不同大小的圓弧即可。

開始畫圓?。阂源笳叫蔚挠蚁陆菫閳A心畫正圓,注意相切位置,畫好后刪除多余的錨點。

△ 圓心位置

△ 相切位置

△ 刪除多余錨點

△ 圓弧畫完后

到了這一步基本也就出現(xiàn)我們想要的螺旋黃金圖,最后只需要將我們的正方形改成描邊的模式即可。

△ 最終圖形

這里展示一下第二種方法:

螺旋黃金比1 : 1.618在畫面中怎么看?

利用黃金分割法的案例實操

說了這么多,沒有實際的操作案例你們是不是也很頭痛,到底拿到這個技巧怎么去使用呢?在我這里例舉一個橫版和一個豎版的案例。

1. 橫版

找素材

這里找來幾張圖片,因為是做分析案例,所以我就選擇我自己喜歡的圖,我選擇的是圖1。

圖片調(diào)整

圖片確定后,我們就需要把圖放到我們的畫布中。

但是問題來了,一般我們的設(shè)計尺寸基本是不會和找到的素材是一樣大的,我們到底要怎樣放大圖片呢?圖片中哪些元素可以忽略,哪些需要重視?螺旋黃金分割法就可以用上了。

利用我們的螺旋黃金分割圖,放在我們的版面中。接下來就放大我們的素材圖片,分析圖片結(jié)構(gòu)。圖片上方都是天空,左邊是海和天空,只有右下比較復(fù)雜,有人和零碎的石頭,所以我們這里圖片就以人為畫面中的焦點,那么我們的螺旋圖就需要改變一下位置。

調(diào)整圖片大小和位置,將圖片中的人物放在螺旋圖的焦點位置,這樣我們的版面就快速地確定了視覺焦點。

文字排版

將文字排版在畫布中,再根據(jù)文字豎排的樣式,和人閱讀的習慣,調(diào)整圖的方向和文字位置,使人看向主題文字,給人一種指引的方向。

總結(jié):主要利用螺旋黃金分割法調(diào)整圖片的位置焦點,使畫面中心達到舒適耐看和精致的視覺效果。

標記分析圖:

這個案例我就不做太多的講解,因為很簡單,直接利用螺旋黃金分割構(gòu)圖的方法,將版面按1 : 0.618的比例劃分,然后在這個比例畫布中排版文案和圖片。

2. 豎版案例

圖片位置排版

素材選擇上面的圖2,這里就做一張豎版的海報。

將素材圖放在畫布中,準備好我們的螺旋黃金分割圖,也放在畫布中。根據(jù)圖片本身的特點,人物只有上半身,所以將圖片放在底部最為合適。至于人物應(yīng)該靠中間還是靠邊,我們同可以根據(jù)圖片人物本身的姿勢判斷,根據(jù)人物是微抬頭向上看,角度約 30 度,所以選擇將人物靠邊。

再就是人物具體位置的掌控,我們同樣和上面的案例一樣直接利用螺旋黃金分割圖做參考位置選擇,所以就很快找到合適的位置,如上面右圖。

填充背景和文案

我們將背景顏色填充為天空統(tǒng)一的色彩,建立網(wǎng)格,將文案排版在畫布中,上面主要是海報中的主要文案及主題文案,文案和圖片的總體比例為1 : 0.618,遵循我們的黃金法則。

根據(jù)圖片的氣質(zhì),圖片中的色彩和人物都屬于文藝氣質(zhì),清新、寂靜、雅致的感覺,所以我們這里可以選襯線體宋體,結(jié)合韓文來體現(xiàn)整體的氣質(zhì)。

效果展示

最后看看海報效果吧,主要講解螺旋黃金分割圖的使用,所以排版方面講解的比較簡單,以及主題文字都采用最簡單粗暴的字體,沒有過多的修飾。

總結(jié)

文章分享了螺旋黃金分割構(gòu)圖的用途,很廣泛,包含海報設(shè)計、畫冊設(shè)計、網(wǎng)頁設(shè)計、繪畫、服裝設(shè)計、logo設(shè)計、電視電影、建筑、攝影等等領(lǐng)域,以及分享了黃金分割圖形的畫法,3 個簡單的案例實操,利用黃金分割構(gòu)圖來幫助我們構(gòu)圖和排版,最有利于我們對圖片焦點位置的選擇和排版分布的掌控。

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

需求太多做不過來?試試KANO 模型!

資深UI設(shè)計者

在做項目做產(chǎn)品的過程中,作為互聯(lián)網(wǎng)產(chǎn)品設(shè)計師的我們,經(jīng)常會接到來自 PM/領(lǐng)導(dǎo)/業(yè)務(wù)方等等的各種需求。有的時候,哪怕一個小功能、次次次級頁面都會爭得不可開交。這個時候怎么辦呢?到底應(yīng)該聽誰的呢?哪個需求優(yōu)先級高?哪種呈現(xiàn)方法是更靠譜的呢?

今天我們就來聊聊一個非常實用的需求分級方法 — KANO模型。

什么是KANO模型?

KANO 模型是東京理工大學教授狩野紀昭(Noriaki Kano)發(fā)明的對用戶需求分類和排序的工具。通過分析用戶對產(chǎn)品功能的滿意程度,對產(chǎn)品功能進行分級,從而確定產(chǎn)品實現(xiàn)過程中的優(yōu)先級。

KANO 模型是一個典型的定性分析模型,一般不直接用來測量用戶的滿意度,常用于識別用戶對新功能的接受度。幫助企業(yè)了解不同層次的用戶需求,找出顧客和企業(yè)的接觸點,挖掘出讓顧客滿意至關(guān)重要的因素。

1. KANO模型的需求分類

在 KANO 模型中,根據(jù)不同類型的需求與用戶滿意度之間的關(guān)系,可將影響用戶滿意度的因素分為五類:基本型需求、期望型需求、興奮型需求、無差異需求、反向型需求。

興奮型需求

所謂暗處,用戶意想不到的,需要挖掘/洞察。若不提供此需求,用戶滿意度不會降低;若提供此需求,用戶滿意度會有很大的提升。

當用戶對一些產(chǎn)品或服務(wù)沒有表達出明確的需求時,企業(yè)提供給顧客一些完全出乎意料的產(chǎn)品屬性或服務(wù)行為,使用戶產(chǎn)生驚喜,用戶就會非常滿意,從而提高用戶忠誠度。

這類需求往往是代表顧客的潛在需求,企業(yè)的做法就是去尋找發(fā)掘這樣的需求,領(lǐng)先對手。

期望型需求

所謂癢處。當提供此需求,用戶滿意度會提升;當不提供此需求,用戶滿意度會降低。

它是處于成長期的需求,客戶、競爭對手和企業(yè)自身都關(guān)注的需求,也是體現(xiàn)競爭能力的需求。

對于這類需求,企業(yè)的做法應(yīng)該是注重提高這方面的質(zhì)量,力爭超過競爭對手。

基本型需求

所謂痛點。對于用戶而言,這些需求是必須滿足的,理所當然的。當不提供此需求,用戶滿意度會大幅降低,但優(yōu)化此需求,用戶滿意度不會得到顯著提升。

對于這類需求,是核心需求,也是產(chǎn)品必做功能,企業(yè)的做法應(yīng)該是注重不要在這方面減分,需要企業(yè)不斷調(diào)查和了解用戶需求,并通過合適的方法在產(chǎn)品中體現(xiàn)這些要求。

無差異需求

用戶根本不在意的需求,對用戶體驗毫無影響。

無論提供或不提供此需求,用戶滿意度都不會有改變。對于這類需求,企業(yè)的做法應(yīng)該是盡量避免。

反向型需求

用戶根本都沒有此需求,提供后用戶滿意度反而下降。

總而言之,我們做產(chǎn)品設(shè)計時,需要盡量避免無差異型需求、反向型需求,至少做好基本型需求、期望型需求,如果可以的話再努力挖掘興奮型需求。

如何使用KANO模型?

KANO 模型分析方法主要是通過標準化問卷進行調(diào)研,根據(jù)調(diào)研結(jié)果對各因素屬性歸類,解決需求屬性的定位問題,以提高用戶滿意度。

1. 明確目的

做之前,必須明白調(diào)研的目的是什么,是否合適用 KANO 模型解決,為什么要用 KANO 模型解決。

例如:企業(yè)為賣家開發(fā)的 CRM 工具,隨著賣家客戶的不斷增長,CRM 系統(tǒng)中需引入一些新的功能滿足其管理需求。而我們作為產(chǎn)品開發(fā)設(shè)計者,需要知道這些功能哪些是基本功能,哪些是增值功能,功能的優(yōu)先級又該如何排列等等。

KANO 模型就可以幫助我們很好的貼和業(yè)務(wù)需求,從具備程度和滿意程度這兩個維度出發(fā),將 CRM 中新增的功能進行區(qū)分和排序,從而知道:哪些功能是一定要有,否則會直接影響用戶體驗的(基礎(chǔ)屬性、期望屬性);哪些功能是沒有時不會造成負向影響,擁有時會給用戶帶來驚喜的(興奮屬性);哪些功能是可有可無,具備與否對用戶都不會有大影響的(無差異因素)。

2. 設(shè)計問卷

此問卷調(diào)查表劃分維度有兩個:提供時的滿意程度、不提供時的滿意程度。而滿意程度被劃分為 5 級(非常滿意、滿意、一般、不滿意、很不滿意),因為人的滿意程度往往是漸變的,而不是突變的。

滿意程度的文案可根據(jù)實際問題靈活修改,如使用(非常喜歡、理應(yīng)如此、無所謂、勉強接受、很不喜歡 或者 非常有用、挺實用、無所謂、不實用、很不實用 )更加形象的描述。

例如:在「通訊錄」中,是否需要直接提供「撥打電話」的按鈕?問卷設(shè)置正反兩題:

如果我們在「通訊錄」的客戶列表中,提供「撥打電話」的按鈕,你的感受是:

A.非常喜歡 B.理應(yīng)如此 C.無所謂 D.勉強接受 E.很不喜歡

如果我們在「通訊錄」的客戶列表中,沒有提供「撥打電話」的按鈕,你的感受是:

A.非常喜歡 B.理應(yīng)如此 C.無所謂 D.勉強接受 E.很不喜歡

為了更加形象且一目了然,我們可以如下設(shè)計。填問卷的人只需要在空白處打勾打叉就好了,非常方便。

設(shè)計問卷的過程中,有幾點要注意:

  • 問卷中的每道題都涉及到正反兩面,應(yīng)適當給予強調(diào),防止用戶看錯(比如正反對立詞字體加粗/標紅等等);
  • 在設(shè)計問卷時,盡量做到清晰易懂、語言盡量簡單具體,避免語意產(chǎn)生歧義;
  • 選項給予說明:由于每個人對「非常喜歡、理應(yīng)如此、無所謂、勉強接受、很不喜歡」等形容詞的理解都不一樣,所以最好有一個明確統(tǒng)一的說明,讓用戶可以有個對照,方便填寫。

例如:

  • 非常喜歡:讓你感到滿意、開心、驚喜。
  • 理應(yīng)如此:你覺得是應(yīng)該的、必備的功能/服務(wù)。
  • 無所謂:無所謂喜不喜歡,都可以接受。
  • 勉強接受:你不喜歡,最好是沒有,有的話就勉強湊合。
  • 很不喜歡:讓你感到不開心、甚至沮喪,無法接受。

3. 清洗數(shù)據(jù)

在收集所有問卷之后,注意清洗掉個別的明顯胡亂回答的個例。如全部問題都選擇「我很喜歡」或「很不喜歡」的,這種回答毫無參考價值。

4. 整理分類

為了能夠?qū)⑿枨髤^(qū)分為基本型需求、期望型需求和興奮需求,需按照正向和負向問題的回答對屬性進行分類,具體分類對照下表。

當正向問題的回答是「我喜歡」,負向問題的回答是「我不喜歡」,那么 KANO 評價表中,這項功能特性就為「O」,即期望型。

如果將用戶正負向問題的回答結(jié)合后,為「M」或「A」,則該功能被分為基本型需求或興奮型需求。

其中,R 表示用戶不需要這種功能,甚至對該功能有反感;I 類表示無差異需求,用戶對這一功能無所謂。

Q 表示有疑問的結(jié)果,一般不會出現(xiàn)這個結(jié)果(除非這個問題的問法不合理,或者是用戶沒有很好的理解問題,或者是用戶在填寫問題答案時出現(xiàn)錯誤)。

簡單來說就是:

A:興奮型;O:期望型;M:必備型;I:無差異型;R:反向型;Q:可疑結(jié)果

注意:以上對照表只是的最常見的一種歸類方式。實際操作中,可因人而異,因產(chǎn)品、公司、地域而異(尤其是關(guān)于「R」和「O」的定義),因為滿意度本身就難以衡量。

5. 量化表格

判斷 KANO 屬性

記錄所有合理的數(shù)據(jù),計算出各項占比,填寫在下面的對照表里面。

從上表中不難看出,「通訊錄中「撥打電話」「這個功能在 6 個維度上均可能有得分,將相同維度的比例相加后,可得到6 個屬性維度的占比總和。 總和最大的一個屬性維度,便是該功能的屬性歸屬。

可看出「在通訊錄中提供 ‘撥打電話’ 功能屬于興奮型需求。即說明沒有這個功能,用戶不會有強烈的負面情緒,但是有了這個功能,會讓用戶感受到滿意和驚喜。

如果你只判斷這一個需求,那么進行到這一步就可以到此為止了。如果涉及到多個需求的排序分級,你還需進行下一步。

計算 better-worse系數(shù)

Better-worse 系數(shù),表示某功能可以增加滿意或者消除不喜歡的影響程度。

Better,可以解讀為增加后的滿意系數(shù)。Better 的數(shù)值通常為正,代表如果產(chǎn)品提供某種功能或服務(wù),用戶滿意度會提升。正值越大/越接近 1,則表示用戶滿意度提升的效果會越強,滿意度上升的越快。

Worse,可以叫做消除后的不滿意系數(shù)。Worse 的數(shù)值通常為負,代表產(chǎn)品如果不提供某種功能或服務(wù),用戶的滿意度會降低。其負值越大/越接近 -1,則表示對用戶不滿意度的影響最大,滿意度降低的影響效果越強,下降的越快。

因此,根據(jù) better-worse 系數(shù),對兩者系數(shù)絕對分值較高的項目應(yīng)當優(yōu)先實施。

其計算公式如下:

  • 增加后的滿意系數(shù) Better/SI=(A+O)/(A+O+M+I)
  • 消除后的不滿意系數(shù) Worse/DSI= -1 *(O+M)/(A+O+M+I)

結(jié)果產(chǎn)出

例如:某產(chǎn)品希望優(yōu)化 5 項功能,但是不知道哪些是用戶需要的。通過 KANO 調(diào)研分析,可以分別計算出 5 項功能的better-worse 系數(shù)。

根據(jù) 5 項功能的 better-worse 系數(shù)值,將散點圖劃分為四個象限,以確立需求優(yōu)先級。

  • 第一象限表示:better 系數(shù)值高,worse 系數(shù)絕對值也很高的情況。落入這一象限的因素,稱之為期望型因素(一維因素)。功能 2 落入此象限,即表示產(chǎn)品提供此功能,用戶滿意度會提升,當不提供此功能,用戶滿意度就會降低。
  • 第二象限表示:better 系數(shù)值高,worse 系數(shù)絕對值低的情況。落入這一象限的因素,稱之為興奮型因素。功能 1 落入此象限,即表示不提供此功能,用戶滿意度不會降低,但當提供此功能,用戶滿意度會有很大提升。
  • 第三象限表示:better 系數(shù)值低,worse 系數(shù)絕對值也低的情況。落入這一象限的因素,稱之為無差異因素。功能 3落入此象限,即無論提供或不提供這些功能,用戶滿意度都不會有改變,這些功能點是用戶并不在意的功能。
  • 第四象限表示:better 系數(shù)值低,worse 系數(shù)絕對值高的情況。落入這一象限的因素,稱之為必備型因素。功能 4 落入此象限,即表示當產(chǎn)品提供此功能,用戶滿意度不會提升,當不提供此功能,用戶滿意度會大幅降低;說明落入此象限的功能是最基本的功能。

在實際項目中:

  • 我們首先要全力以赴地滿足用戶最基本的需求,即第四象限表示的必備型因素,這些需求是用戶認為我們有義務(wù)做到的事情。
  • 在滿足最基本的需求之后,再盡力去滿足用戶的期望型需求,即第一象限表示的期望因素,這是質(zhì)量的競爭性因素。提供用戶喜愛的額外服務(wù)或產(chǎn)品功能,使其產(chǎn)品和服務(wù)優(yōu)于競爭對手并有所不同,引導(dǎo)用戶加強對本產(chǎn)品的良好印象。
  • 最后爭取實現(xiàn)用戶的興奮型需求,即第二象限表示的興奮型因素,提升用戶的忠誠度。

結(jié)論:

根據(jù) KANO 模型計算出的 better-worse 系數(shù)值,說明該產(chǎn)品先滿足功能 5 和 4,再優(yōu)化功能 2,最后滿足功能 1。而功能 3對用戶來說有或者沒有都無所謂,屬無差異型需求,并沒有必要花大力氣去實現(xiàn)。

總結(jié)

KANO 模型定義了三個層次的需求:基本型需求、期望型需求和興奮型需求。

  • 基本型需求:產(chǎn)品「必須有」的功能,也是 MVP 產(chǎn)品要求具有的功能;
  • 期望型需求:非必須功能需求,但通常作為競品之間比較的重點;
  • 興奮型需求:屬于驚喜型產(chǎn)品功能,超出用戶預(yù)期,往往能帶來較高的忠誠度。

根據(jù) KANO 模型建立產(chǎn)品需求分析優(yōu)先級,運用到產(chǎn)品設(shè)計中就是要抓住用戶的核心需求,解決用戶痛點(基本型需求),抓住用戶癢點(期望型需求)。在確保這兩者都解決的前提下,再給用戶一些 high 點(興奮型需求)。

嚴格來說,KANO 模型并不是一個測量用戶滿意度的模型,而是對用戶需求的分類,通常在滿意度評價工作前期作為輔助研究的 典型定性分析模型。

KANO 模型的目的是通過對用戶的不同需求進行區(qū)分處理,了解不同層次的用戶需求,幫助企業(yè)找出提高產(chǎn)品用戶滿意度的切入點,或者識別出使用戶滿意至關(guān)重要的因素。

但需求會因人而異,會因文化差異而不同; 也會隨著時間變化。可能前段時間的期望型需求,甚至興奮型需求,到如今已變成了基礎(chǔ)型需求。所以作為產(chǎn)品設(shè)計者,我們應(yīng)該持續(xù)調(diào)研需求,對產(chǎn)品進行迭代優(yōu)化。

BI PUBLISHER RTF模板制作PIVOT表和重分組

seo達人

重分組介紹

語法:<?for-each-group: BASE-GROUP;GROUPING-ELEMENT?>

用法:重分組可以把XML數(shù)據(jù)做重新分組,這樣數(shù)據(jù)的展示就不一定必須按照XML數(shù)據(jù)的結(jié)構(gòu)顯示。例如原來的XML數(shù)據(jù)結(jié)構(gòu)是CD類別->CD信息(名稱,年份,國家,價格),我們可以用重分組功能按CD年份->CD國家來顯示.



重分組應(yīng)用

1 按照和XML數(shù)據(jù)不同的結(jié)構(gòu)顯示數(shù)據(jù)

XML數(shù)據(jù)格式如下:



<CATALOG>

   <CD>

      <TITLE>Empire Burlesque</TITLE>

      <ARTIST>Bob Dylan</ARTIST>

      <COUNTRY>USA</COUNTRY>

      <COMPANY>Columbia</COMPANY>

      <PRICE>10.90</PRICE>

      <YEAR>1985</YEAR>

   </CD>

。。。。。

</CATALOG>



報表打算按照國家和年份重新分組,用到的重分組如下:



<?for-each-group:CD;COUNTRY?>

<?for-each:current-group();YEAR?> 

1

2

這里的current-group()表示當前COUNTRY組下的子分組



2 顯示PIVOT報表

XML數(shù)據(jù)如下:



<ROWSET>

<RESULTS>

 <INDUSTRY>Motor Vehicle Dealers</INDUSTRY>

 <YEAR>2005</YEAR>

 <QUARTER>Q1</QUARTER>

 <SALES>1000</SALES>

</RESULTS>

<RESULTS>

 <INDUSTRY>Motor Vehicle Dealers</INDUSTRY>

 <YEAR>2005</YEAR>

 <QUARTER>Q2</QUARTER>

 <SALES>2000</SALES>

</RESULTS>

<RESULTS>

 <INDUSTRY>Motor Vehicle Dealers</INDUSTRY>

 <YEAR>2004</YEAR>

 <QUARTER>Q1</QUARTER>

 <SALES>3000</SALES>

</RESULTS>

。。。。

         

</ROWSET>



如果想按年份生成PIVOT表,可以用如下TAG實現(xiàn):



<?for-each-group@column:RESULTS;YEAR?>

<?YEAR?>

<?end for-each-group?>

<?for-each-group:RESULTS;INDUSTRY?>

<?for-each-group@cell:current-group();YEAR?>

<?sum(current-group()//SALES)?>

<?end for-each-group?>

<?end for-each-group?>



這里的@cell是給每個組生成一個CELL




深入理解vue中的slot與slot-scope

seo達人

寫在前面

vue中關(guān)于插槽的文檔說明很短,語言又寫的很凝練,再加上其和methods,data,computed等常用選項使用頻率、使用先后上的差別,這就有可能造成初次接觸插槽的開發(fā)者容易產(chǎn)生“算了吧,回頭再學,反正已經(jīng)可以寫基礎(chǔ)組件了”,于是就關(guān)閉了vue說明文檔。

實際上,插槽的概念很簡單,下面通過分三部分來講。這個部分也是按照vue說明文檔的順序來寫的。

進入三部分之前,先讓還沒接觸過插槽的同學對什么是插槽有一個簡單的概念:插槽,也就是slot,是組件的一塊HTML模板,這塊模板顯示不顯示、以及怎樣顯示由父組件來決定。 實際上,一個slot最核心的兩個問題這里就點出來了,是顯示不顯示怎樣顯示。

由于插槽是一塊模板,所以,對于任何一個組件,從模板種類的角度來分,其實都可以分為非插槽模板插槽模板兩大類。
非插槽模板指的是html模板,指的是‘div、span、ul、table’這些,非插槽模板的顯示與隱藏以及怎樣顯示由插件自身控制;插槽模板是slot,它是一個空殼子,因為它顯示與隱藏以及最后用什么樣的html模板顯示由父組件控制。但是插槽顯示的位置確由子組件自身決定,slot寫在組件template的哪塊,父組件傳過來的模板將來就顯示在哪塊。

單個插槽 | 默認插槽 | 匿名插槽

首先是單個插槽,單個插槽是vue的官方叫法,但是其實也可以叫它默認插槽,或者與具名插槽相對,我們可以叫它匿名插槽。因為它不用設(shè)置name屬性。

單個插槽可以放置在組件的任意位置,但是就像它的名字一樣,一個組件中只能有一個該類插槽。相對應(yīng)的,具名插槽就可以有很多個,只要名字(name屬性)不同就可以了。

下面通過一個例子來展示。

父組件:

 
  1. <template>
  2. <div class="father">
  3. <h3>這里是父組件</h3>
  4. <child>
  5. <div class="tmpl">
  6. <span>菜單1</span>
  7. <span>菜單2</span>
  8. <span>菜單3</span>
  9. <span>菜單4</span>
  10. <span>菜單5</span>
  11. <span>菜單6</span>
  12. </div>
  13. </child>
  14. </div>
  15. </template>

子組件:

 
  1. <template>
  2. <div class="child">
  3. <h3>這里是子組件</h3>
  4. <slot></slot>
  5. </div>
  6. </template>

在這個例子里,因為父組件在<child></child>里面寫了html模板,那么子組件的匿名插槽這塊模板就是下面這樣。也就是說,子組件的匿名插槽被使用了,是被下面這塊模板使用了。

 
  1. <div class="tmpl">
  2. <span>菜單1</span>
  3. <span>菜單2</span>
  4. <span>菜單3</span>
  5. <span>菜單4</span>
  6. <span>菜單5</span>
  7. <span>菜單6</span>
  8. </div>

最終的渲染結(jié)果如圖所示:


 
  1. 注:所有demo都加了樣式,以方便觀察。其中,父組件以灰色背景填充,子組件都以淺藍色填充。

具名插槽

匿名插槽沒有name屬性,所以是匿名插槽,那么,插槽加了name屬性,就變成了具名插槽。具名插槽可以在一個組件中出現(xiàn)N次。出現(xiàn)在不同的位置。下面的例子,就是一個有兩個具名插槽單個插槽的組件,這三個插槽被父組件用同一套css樣式顯示了出來,不同的是內(nèi)容上略有區(qū)別。

父組件:

 
  1. <template>
  2. <div class="father">
  3. <h3>這里是父組件</h3>
  4. <child>
  5. <div class="tmpl" slot="up">
  6. <span>菜單1</span>
  7. <span>菜單2</span>
  8. <span>菜單3</span>
  9. <span>菜單4</span>
  10. <span>菜單5</span>
  11. <span>菜單6</span>
  12. </div>
  13. <div class="tmpl" slot="down">
  14. <span>菜單-1</span>
  15. <span>菜單-2</span>
  16. <span>菜單-3</span>
  17. <span>菜單-4</span>
  18. <span>菜單-5</span>
  19. <span>菜單-6</span>
  20. </div>
  21. <div class="tmpl">
  22. <span>菜單->1</span>
  23. <span>菜單->2</span>
  24. <span>菜單->3</span>
  25. <span>菜單->4</span>
  26. <span>菜單->5</span>
  27. <span>菜單->6</span>
  28. </div>
  29. </child>
  30. </div>
  31. </template>

子組件:

 
  1. <template>
  2. <div class="child">
  3. // 具名插槽
  4. <slot name="up"></slot>
  5. <h3>這里是子組件</h3>
  6. // 具名插槽
  7. <slot name="down"></slot>
  8. // 匿名插槽
  9. <slot></slot>
  10. </div>
  11. </template>

顯示結(jié)果如圖:


可以看到,父組件通過html模板上的slot屬性關(guān)聯(lián)具名插槽。沒有slot屬性的html模板默認關(guān)聯(lián)匿名插槽。

作用域插槽 | 帶數(shù)據(jù)的插槽

最后,就是我們的作用域插槽。這個稍微難理解一點。官方叫它作用域插槽,實際上,對比前面兩種插槽,我們可以叫它帶數(shù)據(jù)的插槽。什么意思呢,就是前面兩種,都是在組件的template里面寫

 
  1. 匿名插槽
  2. <slot></slot>
  3. 具名插槽
  4. <slot name="up"></slot>

但是作用域插槽要求,在slot上面綁定數(shù)據(jù)。也就是你得寫成大概下面這個樣子。

 
  1. <slot name="up" :data="data"></slot>
  2. export default {
  3. data: function(){
  4. return {
  5. data: ['zhangsan','lisi','wanwu','zhaoliu','tianqi','xiaoba']
  6. }
  7. },
  8. }

我們前面說了,插槽最后顯示不顯示是看父組件有沒有在child下面寫模板,像下面那樣。

 
  1. <child>
  2. html模板
  3. </child>

寫了,插槽就總得在瀏覽器上顯示點東西,東西就是html該有的模樣,沒寫,插槽就是空殼子,啥都沒有。
OK,我們說有html模板的情況,就是父組件會往子組件插模板的情況,那到底插一套什么樣的樣式呢,這由父組件的html+css共同決定,但是這套樣式里面的內(nèi)容呢?

正因為作用域插槽綁定了一套數(shù)據(jù),父組件可以拿來用。于是,情況就變成了這樣:樣式父組件說了算,但內(nèi)容可以顯示子組件插槽綁定的。

我們再來對比,作用域插槽和單個插槽和具名插槽的區(qū)別,因為單個插槽和具名插槽不綁定數(shù)據(jù),所以父組件是提供的模板要既包括樣式由包括內(nèi)容的,上面的例子中,你看到的文字,“菜單1”,“菜單2”都是父組件自己提供的內(nèi)容;而作用域插槽,父組件只需要提供一套樣式(在確實用作用域插槽綁定的數(shù)據(jù)的前提下)。

下面的例子,你就能看到,父組件提供了三種樣式(分別是flex、ul、直接顯示),都沒有提供數(shù)據(jù),數(shù)據(jù)使用的都是子組件插槽自己綁定的那個人名數(shù)組。

父組件:

 
  1. <template>
  2. <div class="father">
  3. <h3>這里是父組件</h3>
  4. <!--第一次使用:用flex展示數(shù)據(jù)-->
  5. <child>
  6. <template slot-scope="user">
  7. <div class="tmpl">
  8. <span v-for="item in user.data">{{item}}</span>
  9. </div>
  10. </template>
  11. </child>
  12. <!--第二次使用:用列表展示數(shù)據(jù)-->
  13. <child>
  14. <template slot-scope="user">
  15. <ul>
  16. <li v-for="item in user.data">{{item}}</li>
  17. </ul>
  18. </template>
  19. </child>
  20. <!--第三次使用:直接顯示數(shù)據(jù)-->
  21. <child>
  22. <template slot-scope="user">
  23. {{user.data}}
  24. </template>
  25. </child>
  26. <!--第四次使用:不使用其提供的數(shù)據(jù), 作用域插槽退變成匿名插槽-->
  27. <child>
  28. 我就是模板
  29. </child>
  30. </div>
  31. </template>

子組件:

 
  1. <template>
  2. <div class="child">
  3. <h3>這里是子組件</h3>
  4. // 作用域插槽
  5. <slot :data="data"></slot>
  6. </div>
  7. </template>
  8. export default {
  9. data: function(){
  10. return {
  11. data: ['zhangsan','lisi','wanwu','zhaoliu','tianqi','xiaoba']
  12. }
  13. }
  14. }

結(jié)果如圖所示:

github

以上三個demo就放在GitHub了,有需要的可以去取。使用非常方便,是基于vue-cli搭建工程。

https://github.com/cunzaizhuyi/vue-slot-demo


輕量、簡易、高逼格的博客 hexo

seo達人

hexo  pc機上的配置 (一切操作都是在git bash)

安裝git

 



安裝nodejs

 



安裝hexo

備注:用 npm 安裝話經(jīng)常出現(xiàn)卡住而導(dǎo)致無法正常安裝,解決辦法就是修改 npm 的安裝源,



這里選擇淘寶 NPM 鏡像,這是一個完整 npmjs.org 鏡像,你可以用此代替官方版本,同步頻



率目前為 10分鐘 一次以保證盡量與官方服務(wù)同步。



     npm config set registry https://registry.npm.taobao.org



創(chuàng)建 你的Hexo 目錄

       mkdir "your hexo dir name"



       //創(chuàng)建一個自定義的hexo目錄,比如我就在用戶根目錄創(chuàng)建了一個myhexo文件夾(macOS)



       cd "your hexo dir name" //進入到剛剛創(chuàng)建的目錄



  安裝 hexo-cli

        npm install -g hexo-cli



  初始化該文件夾

        hexo init



  安裝hexo的擴展插件

        npm install



    等執(zhí)行成功以后安裝兩個插件, hexo-deployer-git 和 hexo-server ,這倆插件的作用分別是使用Git自動部署,和本地簡單的服務(wù)器。

       npm install hexo-deployer-git --save

       npm install hexo-server --save



 



    到這里hexo的本地搭建已經(jīng)基本結(jié)束了。

    打開hexo

       hexo g



       hexo server



 git用戶

創(chuàng)建以用于提交

        git config --global user.name "yourname"    

        git config --global user.email "youremail



 生成ssh公鑰密鑰

       cd ~/.ssh

       ssh-keygen -t rsa -C "你的email"



-----------------------------------------------------------------------------------------------------------------

linux (ubuntu + 阿里云)  服務(wù)器上的配置

 安裝nginx

切換至root用戶

       sudo su root

       apt-get install nginx



    查看nginx版本

         nginx -v



    啟動nginx

       service nginx start



    可以查看nginx的端口號

        ps -aux | grep nginx



    啟動后,在網(wǎng)頁重輸入ip地址,即可看到nginx的歡迎頁面。至此nginx安裝成功

        cd /etc/nginx

        vim sites-available/default 



    因為我們是拿nginx做 Web 服務(wù)器,所以我們需要安裝部署好nginx,我們可以專門為hexo創(chuàng)建一個部署目錄,比如我創(chuàng)建了/home/xufushen/hexo文件夾,并把nginx的配置文件nginx.conf中的部署目錄改為/home/xufushen/hexo,配置文件在/etc/nginx/conf里;同樣可以使用默認目錄,nginx的默認目錄為/var/www/html.











 安裝node.js

        curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -

        apt-get install -y nodejs



 安裝git

          apt-get install -y git



 創(chuàng)建一個git用戶

         sudo adduser git



    雖說現(xiàn)在的倉庫只有我們自己在使用,新建一個 git 用戶顯得不是很有必要,但是為了安全起見,還是建議使用單獨的 git 用戶來專門運行 git 服務(wù)



 添加證書登入

        mkdir .ssh

        mkdir authorized_keys



    剛在在本地創(chuàng)建或者已經(jīng)擁有的公鑰,也就是 ~/.ssh/id_rsa.pub 文件里的內(nèi)容添加到服務(wù)器的 /home/git/.ssh/authorized_keys 文件中,如上所說,添加公鑰之后可以防止每次 push 都輸入密碼。  (使用Xftp軟件直接將文件拖入)







 初始化 Git 倉庫

可以將git倉庫放到自定義位置,我是將其放在 /xufushen/blog/ 目錄下的

        sudo mkdir /xufushen/blog/

        cd /xufushen/blog/

        git init --bare blog.git



 使用 --bare 參數(shù),Git 就會創(chuàng)建一個裸倉庫,裸倉庫沒有工作區(qū),我們不會在裸倉庫上進行操作,它只為共享而存在。



 配置 git hooks

我們這里要使用的是 post-receive 的 hook,這個 hook 會在整個 git 操作過程完結(jié)以后被運行.關(guān)于hooks的內(nèi)容詳情點擊這里



在 blog.git/hooks 目錄下新建一個 post-receive 文件

        cd /var/repo/blog.git/hooks



    編輯這個文件

        vim post-receive



    設(shè)置這個文件的可執(zhí)行權(quán)限

        chmod +x post-receive



 改變 blog.git 目錄的擁有者為 xufushen 用戶

    chown -R xufushen:gxufushenit blog.git



 禁用 xufushen 用戶的 shell 登錄權(quán)限

出于安全考慮,我們要讓 xufushen 用戶不能通過 shell 登錄。可以編輯 /etc/passwd 來實現(xiàn)



       vim /etc/passwd

        #將

        git:x:1001:1001:,,,:/home/git:/bin/bash

        #改成

      git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell



這樣 xufushen 用戶可以通過 ssh 正常使用 git,但是無法登錄 shell。    至此,服務(wù)器環(huán)境的搭建已經(jīng)基本結(jié)束。



配置本地_config.yml文件,完成自動化部署 

配置 hexo 的 deploy

    修改 hexo 目錄下的 _config.yml 找到 deploy, 修改為:

   deploy:

        ype: git

        repo: xufushen@47.100.184.175:/home/xufushen/blog/blog.git

           branch: master

    repo的地址為你自己的地址以及 git 倉庫目錄







使用hexo blog

    新建文章:

        hexo new "post name"



    生成 & 部署:

        hexo clean && hexo g && hexo d







-------------------------------------------------------------------------------------------------------------------------------------------------------------------------



在搭建的過程遇到的問題

 連到服務(wù)器后無法連接到repository           



這是因為你在創(chuàng)建blog.git與hexo文件時要把的歸屬用戶與用戶組更改為創(chuàng)建的用戶


UML:類圖關(guān)系總結(jié)

seo達人

UML類圖幾種關(guān)系的總結(jié),泛化 = 實現(xiàn) > 組合 > 聚合 > 關(guān)聯(lián) > 依賴
在UML類圖中,常見的有以下幾種關(guān)系: 泛化(Generalization), 實現(xiàn)(Realization),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

  1. 泛化(Generalization)
    【泛化關(guān)系】:是一種繼承關(guān)系,表示一般與特殊的關(guān)系,它指定了子類如何特化父類的所有特征和行為。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。

    【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

在這里插入圖片描述

  1. 實現(xiàn)(Realization)
    【實現(xiàn)關(guān)系】:在這里插入圖片描述是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實現(xiàn).

    【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口
    在這里插入圖片描述

  2. 關(guān)聯(lián)(Association)
    【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關(guān)聯(lián)可以是雙向的,也可以是單向的。雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭。

    【代碼體現(xiàn)】:成員變量

    【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者
    在這里插入圖片描述

上圖中,老師與學生是雙向關(guān)聯(lián),老師有多名學生,學生也可能有多名老師。但學生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。

  1. 聚合(Aggregation)
    【聚合關(guān)系】:是整體與部分的關(guān)系,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關(guān)系,輪胎離開車仍然可以存在。

    聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語法上無法區(qū)分,必須考察具體的邏輯關(guān)系。

    【代碼體現(xiàn)】:成員變量

    【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

在這里插入圖片描述
小技巧:空心菱形表示聚合,好聚好散,所以生命周期可以不同。

  1. 組合(Composition)
    【組合關(guān)系】:是整體與部分的關(guān)系,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關(guān)系,沒有公司就不存在部門。

    組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對象負責代表部分的對象的生命周期。
    【代碼體現(xiàn)】:成員變量

【箭頭及指向】:帶實心菱形的實線,菱形指向整體
在這里插入圖片描述

  1. 依賴(Dependency)
    【依賴關(guān)系】:是一種使用的關(guān)系,即一個類的實現(xiàn)需要另一個類的協(xié)助,所以要盡量不使用雙向的互相依賴.

    【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用

    【箭頭及指向】:帶箭頭的虛線,指向被使用者
    在這里插入圖片描述

各種關(guān)系的強弱順序:

泛化 = 實現(xiàn) > 組合 > 聚合 > 關(guān)聯(lián) > 依賴 
  • 1

下面這張UML圖,比較形象地展示了各種類圖關(guān)系:
在這里插入圖片描述

中臺組件設(shè)計指南:系統(tǒng)布局

資深UI設(shè)計者

本篇文章將分享 Web 端系統(tǒng)布局,從基本布局初識、網(wǎng)格、布局模塊到柵格進行完整鏈路內(nèi)容整合,以簡單易懂的案例與大家進行探討。

在以往的學習過程中,我發(fā)現(xiàn)市面上大部分文章對于 Web 端系統(tǒng)布局內(nèi)容講的比較籠統(tǒng),一般提及較多的是網(wǎng)頁柵格相關(guān)的內(nèi)容,但是一些關(guān)聯(lián)性和原子結(jié)構(gòu)等相關(guān)內(nèi)容較少。比如,了解布局時應(yīng)該需要了解哪些方法論?什么是網(wǎng)格?網(wǎng)格與柵格之間是什么關(guān)系?柵格與布局之間是什么關(guān)系等。我會從這些缺失出發(fā),結(jié)合工作經(jīng)驗與實際案例為大家進行分享。

用戶在操作系統(tǒng)時所看到的頁面框架其實就是系統(tǒng)布局,它是一個產(chǎn)品最外層的框架結(jié)構(gòu),一般包含了頂部導(dǎo)航、側(cè)邊導(dǎo)航欄、面包屑、圖文、卡片、內(nèi)容等元素。

對于設(shè)計師而言,想要了解一個中臺,首先要了解它的系統(tǒng)布局,系統(tǒng)布局是頁面設(shè)計的基礎(chǔ),它與頁面的關(guān)系,就如同建筑與地基的關(guān)系。日常完成需求時,UI 界面反復(fù)的調(diào)試頁面寬度與卡片比例會占用我們大量的時間。為了提高工作效率,并且把更多的時間放在業(yè)務(wù)、視覺創(chuàng)新等方面,我們就應(yīng)該需要一套完整的布局規(guī)范。

對整個公司產(chǎn)品體系而言,內(nèi)部員工與普通用戶使用的操作系統(tǒng)達到幾十甚至上百個,單一的頁面布局滿足不了各個子項目的使用場景。所以我們從前期的布局框架設(shè)計調(diào)研到產(chǎn)品業(yè)務(wù)的特性,定義了中臺界面的幾大類型,并且在我們的設(shè)計規(guī)范中定義了幾大類型系統(tǒng)布局方式,根據(jù)其布局方式定制好柵格,方便日后在各個業(yè)務(wù)場景中使用,從而能夠保持一致性、并且可擴展,方便快速迭代和維護。

了解布局

1. 布局方法論

視覺層次

對于中臺的 UI 設(shè)計師們而言,良好的理性思維相對比感性的視覺思維更加重要,因為在 UI 設(shè)計師設(shè)計頁面時需要把很多互不相關(guān)的元素有秩序的組織在一起,正確引導(dǎo)用戶操作與使用。亨利·亞當斯(Henry Adams)曾經(jīng)說過:「混沌是自然法則,秩序是人類的夢想」。人們總是喜歡秩序,因為秩序可以讓事情變得更容易理解。這同樣適用于數(shù)字產(chǎn)品的用戶界面,當 UI 元素被有序組合和結(jié)構(gòu)化時,人們可以輕松的使用應(yīng)用程序和網(wǎng)站,并對產(chǎn)品感到滿意,所以設(shè)計頁面時需要結(jié)合視覺層次理論。視覺層次理論是設(shè)計過程的核心方法之一。最初是建立在格式塔原理的基礎(chǔ)上,它觀察到了用戶對相互關(guān)聯(lián)元素的視覺感知,并展示了人們?nèi)绾螌⒁曈X元素歸為一類。那么什么是視覺層次呢?官方概括:視覺層次結(jié)構(gòu)致力于一種用戶能夠理解的方式呈現(xiàn)產(chǎn)品的內(nèi)容,以便用戶可以理解每個元素的重要性級別。它可以組織頁面內(nèi)容,以便大腦可以根據(jù)物理差異例如:大小,顏色,對比度,樣式等區(qū)分對象。

蘋果的設(shè)計一直以來都是引領(lǐng)著設(shè)計趨勢,其設(shè)計被國內(nèi)外用戶所認可,所以就以蘋果官網(wǎng)作為案例。其中,字重對比:蘋果官網(wǎng)在字重上給人眼前一亮的感覺,它采用 Medium+Bold 的字重使得標題與詳情內(nèi)容產(chǎn)生強烈的大小對比,用戶進入官網(wǎng)的第一眼便能了解核心內(nèi)容。顏色對比:在顏色上使用黑色背景承托產(chǎn)品和內(nèi)容,強烈的黑白對比增強了信息傳播中的識別度和對比度。圖文排版:在圖片與文字排版中使用了文字層和圖片層互相疊加的視覺效果,使得頁面層次感更加的豐富。如下圖:

格式塔理論

往往用戶打開頁面進行閱讀或者操作界面時視覺的第一感受是產(chǎn)品的整體效果,而并不會感知到一些較細節(jié)的元素。往宏觀來講當人們感知到一個物體由許多元素組成的復(fù)雜對象時,人們會采用有意識或無意識的方法將這些部分安排到整個組織的系統(tǒng)中,而不只是簡單的元素級。它適用于不同級別的感知,但是視覺部分似乎是設(shè)計師設(shè)計界面時最能體現(xiàn)價值的部分,這其實就是格式塔理論,格式塔(Gestalt)這個術(shù)語來自德語單詞 Gestalt,中文翻譯為「形狀,形式」。

格式塔心理學家?guī)鞝柼亍た品蚩ǎ↘urt Koffka)的一句話可以捕捉到這一運動背后的基本思想:「整體不是元素基因的總和」。官網(wǎng)概括:「在心理現(xiàn)象中,人們對客觀對象的感受源于整體關(guān)系而非具體元素,也就是說知覺不是感覺元素的總和,而是一個統(tǒng)一的整體,部分之和不等于整體,因此整體不能分割」。格式塔理論中元素之知見的原則分別為臨近,相似,連續(xù),封閉和連接。

在我們的現(xiàn)實生活中有很多自然規(guī)律都遵守了格式塔原則,比如說每到秋天,北方的嚴寒氣候不再適合大雁生存,這時候大雁便會飛往較暖和的南方,當人們看到天空正在南飛的大雁隊伍,它們組織鏈接得十分嚴密,并且群體在往同一個方向移動,所以隊伍的形狀在我們的大腦中將它們視為一個群組的一部分,產(chǎn)生人字形或一字形的圖形。

信息框架

剛剛我們也介紹了視覺層級結(jié)構(gòu)和格式塔理論,接下來簡單介紹一下信息框架,它也是在系統(tǒng)布局中需要考慮的內(nèi)容。信息框架是將信息內(nèi)容進行組織分層,一個產(chǎn)品的信息框架取決于其特有的業(yè)務(wù),他與業(yè)務(wù)強相關(guān)并且需要了解用戶群體目標。根據(jù)業(yè)務(wù)和用戶目標將內(nèi)容組織搭建信息框架,形成系統(tǒng)布局的骨架,方便用戶在瀏覽或操作頁面時能夠快速找到重點內(nèi)容,提升用戶使用效率。我們用今日頭條 Web 端和飛書 Web 端兩個線上產(chǎn)品作為案例分析吧,今日頭條和飛書屬于兩種完全不同類型的產(chǎn)品,那么其信息架構(gòu)也完全不同。

今日頭條屬于門戶類新聞客戶端,主要是生產(chǎn)內(nèi)容展現(xiàn)給用戶,首先進入到產(chǎn)品映入眼簾的是無窮式的信息流,它不需要用戶登錄/注冊作為身份門檻,而是直觀的把內(nèi)容展示給用戶,推送用戶感興趣的內(nèi)容,也不需要用戶決策任何選擇,用戶只需沉浸式的閱讀體驗即可,目的是方便第一時間抓取用戶、吸引用戶達到留住用戶的目的。當用戶產(chǎn)生興趣以后想要進入下一步操作如:點贊、評論時才會彈出登錄/注冊,一方面是獲取用戶的身份等信息,另一方面是間接性的把用戶留下來。從產(chǎn)品業(yè)務(wù)屬性來看,今日頭條的布局把重要的內(nèi)容放入中間,并且占有整個布局的一半大小,其次放在內(nèi)容兩側(cè);

飛書屬于工具協(xié)作類產(chǎn)品,用戶第一次打開產(chǎn)品需要注冊才能使用。與新聞閱讀類產(chǎn)品不同的是工具類型產(chǎn)品用戶目的比較明確,所以首頁做成一個功能介紹頁面,作用是引導(dǎo)用戶了解產(chǎn)品核心功能從而轉(zhuǎn)化成產(chǎn)品的用戶。當然功能介紹頁也是一個網(wǎng)站的門面,首頁想要出彩,不僅需要在布局上做的合理還需要考慮網(wǎng)站的色彩、插圖等元素的統(tǒng)一性。在設(shè)計網(wǎng)站時,首頁的功能介紹頁一定要充分突出自身產(chǎn)品特色,強調(diào)出自身產(chǎn)品的優(yōu)勢和亮點,如飛書首頁主要是想突出其產(chǎn)品能夠提高工作效率,所以直接把「在飛書,享」slogan 這句話放在了首頁的第一屏,輔助文案詳細的介紹了產(chǎn)品的核心功能,直接抓住用戶的痛點。用戶完成注冊以后,進入到功能頁面,如右下圖可以看出,其系統(tǒng)布局的模塊分成三份,占面積最大的模塊屬于產(chǎn)品最核心的部分也就是聊天窗口,較重要部分是聯(lián)系人部分,最小區(qū)域是功能 Tab 部分。

小結(jié)

所以對于設(shè)計師而言,在設(shè)計頁面時必須熟練掌握一些基本設(shè)計基礎(chǔ)知識,并且將這些知識靈活運用到實際的工作當中。比如設(shè)計師在搭建系統(tǒng)布局時需要熟知頁面視覺層次、格式塔理論、信息框架等知識才可創(chuàng)建合理的布局基礎(chǔ)。當然布局框架只是整個產(chǎn)品的基礎(chǔ)骨架,在骨架確定之后,設(shè)計師才可進行下一步的設(shè)計,如統(tǒng)一的視覺表達元素,清晰的功能操作,流暢的交互表達。

2. 布局的設(shè)計原則

系統(tǒng)布局規(guī)范,需要通過統(tǒng)一的設(shè)計元素和間距規(guī)范去引導(dǎo)使用者們(使用規(guī)范的設(shè)計師)跨平臺使用并且能夠適配不同屏幕尺寸,目的是達到一致性,可適配、可控性原則。

一致性:對于界面來講,界面中的元素和結(jié)構(gòu)需要保持一致性,如:在使用布局時應(yīng)當使用一致的網(wǎng)格,基準線和填充,在使用設(shè)計元素時配色、圖標、文本等需保持一致。

可適配:布局是可自適應(yīng)的,根據(jù)用戶在不同的設(shè)計環(huán)境下能夠通過交互動效、界面樣式有效作出適配反應(yīng)。用戶操作后需給出即時反應(yīng)。

可控性:當用戶看到界面時應(yīng)直觀有效傳遞內(nèi)容,如界面中模塊區(qū)域明確、內(nèi)容組織明確、表意明確都能使得用戶快速理解。界面需要簡單直白,讓用戶快速識別,減少用戶記憶負擔。

3. 適配方案

在設(shè)計過程中,為了減少設(shè)計師們的日常溝通和理解成本,在設(shè)計內(nèi)部我們統(tǒng)一了一套設(shè)計畫板尺寸為 1280。經(jīng)過我們官方調(diào)研得出在中臺系統(tǒng)中用戶使用的電腦屏幕主流分辨率分別為:1440*900、1366*768、1920*1080、1280*800,而1280 是主流分辨率中最小且最為保險的的一個尺寸,在設(shè)計頁面時設(shè)計師如果能夠在 1280 尺寸下,縮小寬度或拉升頁面寬度都能保證沒有遮擋或擠壓問題,那么設(shè)計是合理的。在我們的規(guī)范中頁面再小于 1280 時需要吊起系統(tǒng)的橫向滾動條。在中臺系統(tǒng)中考慮到用戶效率問題很少做響應(yīng)式,所以常規(guī)情況下設(shè)計師會限定界面的一個最小值。如果設(shè)計師把畫板設(shè)置為 1440 或者 1366 時可能會存在其在畫板中頁面大小正好合適,但是頁面上線以后縮小瀏覽器可能會發(fā)生遮擋或擠壓的情況。所以我們建議設(shè)計師們使用 1280 寬度畫板畫圖。

4. 框架

首先先分析一下界面框架,我們將頁面的用戶操作行為進行層級區(qū)分。我們至下而上將元素進行層級分層,目的是把用戶界面模塊化。界面可分成背景區(qū)域、內(nèi)容層、全局控制層、內(nèi)容彈層,每一層都具備獨特性,將界面中所有的信息層級提取分類并且按結(jié)構(gòu)屬性分層,目的是能夠使得頁面視覺和交互邏輯符合用戶的習慣認知。之前我們有提到過視覺層次、格式塔理論和信息框架,設(shè)計師在創(chuàng)建這一步的時候可以用來指導(dǎo)搭建一套合理的頁面信息層級,一個內(nèi)容模塊都屬于一個容器,容器可以承載各種內(nèi)容元素。

背景層

背景層樣式固定,在界面中永遠置于界面底部,并且一般會給予背景層中性色,作用是方便突出內(nèi)容層和全局控制層。

內(nèi)容層

視圖結(jié)構(gòu)中最核心和復(fù)雜的一層,他與業(yè)務(wù)強相關(guān),內(nèi)容層的容器承載了業(yè)務(wù)場景的用戶需要獲取的核心信息以及輔助核心任務(wù)的操作。容器承載了內(nèi)容,從 Material Design 中的 Elevation(海拔)概念中可以了解到,它屬于第二層級內(nèi)容,基本布局結(jié)構(gòu)有平行結(jié)構(gòu)或者父子結(jié)構(gòu)。如下圖卡片屬于容器,卡片中承載了數(shù)據(jù)圖表等內(nèi)容,整個卡片+內(nèi)容就屬于內(nèi)容層。

全局控制層

全局控制層我們定義他在內(nèi)容層之上,屬于頁面第三層級內(nèi)容,一般在業(yè)務(wù)場景中對整個網(wǎng)站的控制以及導(dǎo)航功能如:Header menu、Sidebar menu 組件,如下圖中 Header menu 浮在內(nèi)容層之上。

內(nèi)容彈層

當前任務(wù)或者內(nèi)容相關(guān)的臨時出現(xiàn)層,優(yōu)先級高于內(nèi)容層,一般承載當前需要臨時處理的任務(wù)或者需要進行內(nèi)容補充說明等功能。如:Modal(Dialog 各個平臺叫法不一致)、Tooltip、Popover、Notification 等組件 。其中 Modal 是以滑出或者彈出的形式展現(xiàn)給用戶。Modal 它包括兩種類型,一種是模態(tài)內(nèi)容層不可操控,被蒙版遮罩禁用,比如在業(yè)務(wù)中需要較為聚焦的分支流程操作時使用。另一種是非模態(tài),吊起彈出層后不印象內(nèi)容層操作。當然,Tooltip、Popover、Notification 都屬于非模態(tài),反饋較輕,不干擾用戶使用界面。如下圖的頁面中的內(nèi)容彈層使用了 Popover,在次頁面它的功能就是加以補充說明。

網(wǎng)格基礎(chǔ)

1. 單位

隨著科技高速發(fā)展,屏幕分辨率也越來越多樣化對于 UI/UX 設(shè)計師來講必須熟練的基本知識方便日常工作所需。首先我們先了解一下屏幕中的一些單位。

  • 「PX」pixel,像素,大多數(shù)電子設(shè)備成像的基本單元,同樣尺寸的屏幕成像單元越細小、越密集的屏幕,分辨率就越高;
  • 「PT」point,點,這個單位,就同時出現(xiàn)在 iOS、CSS、還有傳統(tǒng)的平面設(shè)計里,與 px 相比 px 是相對單位而 pt 絕對單位,如在設(shè)計稿中如果導(dǎo)出一倍圖 1px=1pt 那么導(dǎo)出二倍圖就是 2px=1pt,它是一個絕對長度,為1/72英寸;
  • 「PPI」pixel per inch,每英寸像素數(shù),決定電子設(shè)備的物理顯示尺寸,只有涉及到顯示才有意義。該值越高,則屏幕越細膩;
  • 「DPI」dot per inch,與PPI一致,唯一區(qū)別是它表示每英寸多少點,該值越高,則圖片越細膩;
  • 「DP」density-independent pixel,是安卓開發(fā)用的長度單位,1dp等于屏幕像素密度為 160ppi 時 1px 的長度,因此dp 在整個系統(tǒng)大小中是固定的。
  • 「SP」scale-independent pixel,安卓開發(fā)用的字體大小單位,可以認為 SP=DP。
2. 像素密度

在高密度屏幕下每英寸具有比低密度屏幕更多的像素,可能導(dǎo)致開發(fā)實現(xiàn)稿的視覺不符合設(shè)計師心理預(yù)期,比如:相同像素尺寸的 UI 元素在低密度屏幕上顯得較模糊,而在高密度屏幕上則比較清楚。同一物理尺寸(肉眼所見尺寸)下,低密度顯示器的像素個數(shù)明顯小于高密度顯示器的像素個數(shù)。

其實像素是與密度沒有關(guān)聯(lián),我們簡稱密度為 DP (讀作 DIP,英文全稱 Density-independent pixel ),它是可縮放的靈活單位,可在任何屏幕下現(xiàn)實相同的尺寸,如圖顯示,紅色網(wǎng)格為像素密度,被放大內(nèi)容為 UI 元素物理尺寸。

所以我們可以得出,DP 可以自適應(yīng)屏幕的密度,不管屏幕密度怎么變化,實際顯示的物理尺寸相同,DP 可以保證物理尺寸的一致性,所以 DP 是目前比較適合 UI 設(shè)計的單位。當屏幕的密度為 160 的一個物理像素時,1PD=1PX。要計算屏幕密度,可以使用以下公式得出:DP=(PX*160)/PPI。

3. 網(wǎng)格

關(guān)于網(wǎng)格

網(wǎng)格線(Grid Line),網(wǎng)格線又稱布局分割線,它是構(gòu)成網(wǎng)格結(jié)構(gòu)的分界線。一般在布局中它們是由行網(wǎng)格線和列網(wǎng)格線組成。如下圖是模擬網(wǎng)格做了一個示意,其中橘黃色兩根線分別是行網(wǎng)格線和列網(wǎng)格線。

網(wǎng)格軌道(Grid Track),兩個相鄰網(wǎng)格線之間的空間。你可以把它們想像成網(wǎng)格的行或列。如下圖橘黃色的行網(wǎng)格線和列網(wǎng)格線之間的空間既是網(wǎng)格軌道。

網(wǎng)格單元格(Grid Cell),兩個相鄰的行網(wǎng)格線和兩個相鄰的列網(wǎng)格線之間的空間屬于網(wǎng)格單元格。這是網(wǎng)格系統(tǒng)的一個「單元」。如下圖橘黃色的行網(wǎng)格線和列網(wǎng)格線交叉處即是網(wǎng)格單元格。

網(wǎng)格區(qū)域(Grid Area),由單個或多個網(wǎng)格單元格組成,它是可以用來擺放頁面元素。如下圖所示,橘黃色的行網(wǎng)格線和列網(wǎng)格線交叉處即是網(wǎng)格區(qū)域。

網(wǎng)格設(shè)置

在設(shè)計界面時可以通過網(wǎng)格定制能夠使界面更加有序、整齊、規(guī)范,網(wǎng)格的主要用途之一是保持設(shè)計元素對齊和排序。通過建立一個網(wǎng)格系統(tǒng),設(shè)計師可以為自己創(chuàng)建一個結(jié)構(gòu)來適配不同的屏幕寬度。

在我制定的規(guī)范中一般會把網(wǎng)格的基數(shù)設(shè)置為 4,它不僅符合偶數(shù)的思路同時也能夠匹配多數(shù)主流的顯示設(shè)備,如中臺系統(tǒng)的用戶主流分辨率用 1440*900、1366*768、1280*800。我們可以通過設(shè)置網(wǎng)格規(guī)范幫助設(shè)計師快速搭建頁面,使用有律可循的布局空間的設(shè)計給到開發(fā)減少溝通成本。下圖所示設(shè)計布局網(wǎng)格由三個元素組成:列寬,間距,邊距。

在 Sketch 中設(shè)置網(wǎng)格,在菜單欄中找「視圖」-「畫布」-「網(wǎng)格設(shè)置」-彈出浮層可設(shè)置網(wǎng)格大小,網(wǎng)格設(shè)置的基數(shù)設(shè)置成4,之后在設(shè)計界面時可按照網(wǎng)格基礎(chǔ)的倍數(shù)作為組件的大小和頁面元素間距分割,如下圖:

我們放大頁面局部大家可以看到,把網(wǎng)格基數(shù)設(shè)置成 4,每個網(wǎng)格單元格為 4*4 大小。同理,如果把網(wǎng)格基數(shù)設(shè)置成 8 以后,每個網(wǎng)格單元格大小為 8*8 大小。

定義布局模塊

界面框架內(nèi)系統(tǒng)布局是頁面所有模塊的組合方式,我們定義一個頁面框架中基礎(chǔ)模塊和內(nèi)容模塊的數(shù)量最好不超過 3 個。經(jīng)過調(diào)研和歸納總結(jié)出 3 大布局類型,分別是上下布局、左右布局、T 字型布局。

1. 上下布局

上下布局布局是 Web 端運用最廣泛的布局方式之一,頁面內(nèi)容區(qū)以 feed 流形式展現(xiàn),一般用在 Web 端官網(wǎng)首頁。設(shè)計師普遍做法是對兩邊留白區(qū)域為內(nèi)容區(qū)并進行最小值的定義,一般定義值為 1200 較多(具體寬度要設(shè)計師如何設(shè)置柵格,后面會講到如何設(shè)置柵格),當留白區(qū)域到達極小超過極限值之后需要對中間的內(nèi)容區(qū)域進行動態(tài)縮放或遮擋,此邏輯需設(shè)計師根據(jù)業(yè)務(wù)所需而定。也有少部分設(shè)計師會設(shè)計成全屏布局,內(nèi)容隨瀏覽器寬度自適應(yīng)。

其優(yōu)點是頁面結(jié)構(gòu)清晰簡單,強突出內(nèi)容區(qū),但缺點是布局的規(guī)矩呆板,變化少。設(shè)計師如果不注意合理的視覺元素和色彩細節(jié)變化,用戶很容易感覺到乏味,此布局適用于層級較為簡單頁面。

巨量引擎(Ocean Engine)是字節(jié)跳動旗下的營銷服務(wù)品牌,整合了今日頭條、抖音短視頻、火山小視頻、西瓜視頻、懂車帝、Faceu 激萌、輕顏、穿山甲等產(chǎn)品的營銷能力,為全球廣告主提供綜合的數(shù)字營銷解決方案。我在設(shè)計此官網(wǎng)時正是采用了上下布局作為頁面布局,頂部導(dǎo)航整合了所有子頁面的內(nèi)容,導(dǎo)航下方為主要內(nèi)容區(qū)并且內(nèi)容定寬,當時采用此布局原因第一是因為次官網(wǎng)層級較簡單只有三個層級內(nèi)容,第二是官網(wǎng)更需要的是突出內(nèi)容區(qū),所有頁面使用次布局更為合適。

2. 左右布局

設(shè)計師在設(shè)計重內(nèi)容,輕導(dǎo)航類型網(wǎng)站是常用左右布局作為基礎(chǔ)框架進行頁面設(shè)計。此布局把系統(tǒng)頁面分為兩大模塊,其中設(shè)計師常見的做法是將左側(cè)設(shè)置成導(dǎo)航欄模塊并且固定,常常用來控制全局內(nèi)容。而右側(cè)區(qū)域設(shè)置成工作區(qū)域或內(nèi)容區(qū),內(nèi)容區(qū)可進行動態(tài)縮放。

下圖為飛書溝通窗口截圖,由于關(guān)系到內(nèi)部信息保密性我把內(nèi)容進行了模糊,從外觀結(jié)構(gòu)上看還是能大致了解飛書結(jié)構(gòu)是采用了左右布局,整個布局結(jié)構(gòu)清晰有理也是符合左右布局特點。從交互體驗分析左側(cè)屬于導(dǎo)航區(qū),它承載了不同功能并且固定。飛書屬于即時溝通產(chǎn)品設(shè)計師考慮到瀏覽器窗口有限所以對導(dǎo)航設(shè)計成較小模塊,而右邊為聊天窗口對于業(yè)務(wù)屬性分析它更為重要,所以模塊較大。其導(dǎo)航欄固定,內(nèi)容區(qū)可進行動態(tài)縮放。

3. T字型布局

T 字型布局常用在 Web 端的中臺系統(tǒng)中,因為中臺系統(tǒng)業(yè)務(wù)結(jié)構(gòu)復(fù)雜、層級多,而 T 字型布局能夠解決復(fù)雜結(jié)構(gòu)的問題。使用此結(jié)構(gòu)能夠把頁面結(jié)構(gòu)清晰化,主次更加分明。設(shè)計師常常的做法是將頂部作為一級導(dǎo)航欄方便控制全局,二左邊設(shè)計成是二級導(dǎo)航并且固定導(dǎo)航欄固定,右邊的內(nèi)區(qū)域可進行動態(tài)縮放(一般會把其設(shè)計成柵格動態(tài)區(qū)域),內(nèi)容隨瀏覽器寬度自適應(yīng)。

下圖是 Material Design 設(shè)計文檔,首先簡單介紹一下 Material Design,它是由谷歌的設(shè)計團隊創(chuàng)建的一種語言,宗旨是幫助設(shè)計師們創(chuàng)建易用性和實用性較強的網(wǎng)站和應(yīng)用程序,其設(shè)計理念是將現(xiàn)實中的物理學帶入進設(shè)計中。Material Design 設(shè)計文檔中的結(jié)構(gòu)使用了 T 字型布局作為基礎(chǔ)布局。頁面分為了三個模塊,其中頂部導(dǎo)航作為頁面一級內(nèi)容進行全局控制,接下來左邊為側(cè)邊導(dǎo)航作為二級內(nèi)容控制頁面,右邊是內(nèi)容區(qū)滿足用戶使用瀏覽。從放眼望去整個頁面架構(gòu)清晰明了。

4. 小結(jié)

以上為 Web 最常見的三大布局,但是需要大家在實際的工作中靈活運用。設(shè)計師在日常工作中可能會遇到更為特殊的業(yè)務(wù)場景,設(shè)計師可以通過整理基礎(chǔ)模塊然后分析其業(yè)務(wù)的信息框架,將模塊進行相互組合、嵌套歸納可以總結(jié)出更多的 Web端布局框架并落地到業(yè)務(wù)中。

網(wǎng)頁柵格

剛剛在定義布局模塊中已經(jīng)分析過了三大布局類型,接下要分享的是 UI 設(shè)計師更為關(guān)注內(nèi)容「網(wǎng)頁柵格」。網(wǎng)頁柵格也是設(shè)計師口中常常提及的柵格系統(tǒng)。其實網(wǎng)頁柵格系統(tǒng)是從平面柵格系統(tǒng)中發(fā)展而來,它延續(xù)了平面設(shè)計的方法與風格,在網(wǎng)頁中使用柵格能夠使得網(wǎng)頁信息展現(xiàn)更加清晰明了、美觀易讀。

首先網(wǎng)頁柵格系統(tǒng)基本由是柵格總寬度/頁面總寬度(W)、一個柵格的寬度(a)、柵格與柵格之間的間隙(i)、一個單元的寬度(A)、外邊距(M)組成。

1. 列寬

一個柵格的寬度(a),我們稱之為列寬,一個列寬包涵了N個網(wǎng)格單元格(Grid Cell)我們也可以把它看成一個網(wǎng)格區(qū)域(Grid Area),在上面我們已經(jīng)講到過網(wǎng)格的內(nèi)容,主要目的正是為柵格做鋪墊。其中我把一個網(wǎng)格單元格設(shè)置為4(原因在網(wǎng)格中也解釋過,如果忘記的同學可以爬樓看下)。由此可見列寬非固定值,這樣可以使內(nèi)容自由適配任何屏幕尺寸。在柵格中列寬由屏幕尺寸決定。

2. 水槽

柵格與柵格之間的間隙(i),我們稱之為水槽,一個水槽寬度大于等于1個網(wǎng)格單元(Grid Cell)。在柵格中水槽為一個定值,寬度可以是N個網(wǎng)格單元,如網(wǎng)格單元格設(shè)置成4,那么水槽可以是4、8、12、16…N*4。

3. 柵格單元

1個列寬+1個水槽寬度即一個單元的寬度,一個柵格總寬是由N個柵格單元組成,次寬度不固定,由屏幕尺寸決定。

4. 柵格總寬

列寬+水槽再成以N即是一個柵格的總寬,公式為:W=(A*n)-i。

5. 柵格設(shè)置

經(jīng)過調(diào)研我們得出常見的柵格分為 12 列柵格系統(tǒng)和 24 列柵格系統(tǒng)。其中 12 列柵格系統(tǒng)在流行的前端開發(fā)開源工具庫Bootstrap 與 Foundation 中廣泛使用,適用于業(yè)務(wù)信息分組較少、業(yè)務(wù)結(jié)構(gòu)較簡,單個盒子內(nèi)信息體積較大的中后臺頁面設(shè)計。24 等分的柵格系統(tǒng)適用于業(yè)務(wù)信息量大、信息分組較多、單個盒子內(nèi)信息體積較小的中后臺頁面設(shè)計;相對 12 柵格系統(tǒng),24 柵格系統(tǒng)變化更加靈活,更適合內(nèi)容比較多樣復(fù)雜的場景。如下圖分別是 12 柵格系統(tǒng)(左)和 24 柵格系統(tǒng)(右)。

6. 小結(jié)

在柵格系統(tǒng)結(jié)合布局結(jié)構(gòu)和網(wǎng)格做了我做了一些知識結(jié)合,其實前面所講的網(wǎng)格版塊和布局版塊都是為柵格做一個鋪墊,利于同學們更加深入的了解網(wǎng)格、布局、柵格三者的關(guān)系。

寫在最后

系統(tǒng)布局只是網(wǎng)頁中的基礎(chǔ)部分,但也是核心內(nèi)容,一個產(chǎn)品布局需要根據(jù)其業(yè)務(wù)屬性決定。布局搭的好相當?shù)鼗虻煤?,但是同時在對美感的追求之上,還應(yīng)當結(jié)合可用性來看待設(shè)計。在實際的工作中肯定還會遇到各種形形色色較奇葩的需求,所以希望這篇文章能夠做的不是限制而是啟發(fā),大家可根據(jù)此次分享內(nèi)容能夠進行舉一反三利用到實際的工作當中。

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

日歷

鏈接

個人資料

藍藍設(shè)計的小編 http://www.yvirxh.cn

存檔