首頁(yè)

移動(dòng)端 驗(yàn)證碼/密碼 輸入框?qū)崿F(xiàn)--安卓/ios適用

seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

先貼圖,需要實(shí)現(xiàn)的效果是這樣的。



實(shí)現(xiàn)思路有兩個(gè):

 

1、用6個(gè)input,輸入一個(gè)數(shù)字后將focus給下一個(gè)輸入框。

2、用一個(gè)input和6個(gè)span,input隱藏,用span顯示。

 

現(xiàn)在大部分都是使用的第二種方法。(當(dāng)然,如果你能說服產(chǎn)品也可以只用一個(gè)普通的input輸入框,就什么都不用考慮了)

 

兩種方案遇到的坑,以及優(yōu)缺點(diǎn),如下:

 

方案一:6個(gè)input。

 

主要就是用js切換focus,在安卓是相當(dāng)流暢的,但是在ios會(huì)嚴(yán)重卡頓,簡(jiǎn)直逼死強(qiáng)迫癥。

 

HTML:

<div class="divYZM">
    <!-- onpropertychange是為了避免在ios中oninput方法不被觸發(fā) -->
    <input id="check_1" class="numDiv" type="number" oninput="inputNext(check_1)" onpropertychange="inputNext(check_1)"/>
    <input id="check_2" class="numDiv" type="number" oninput="inputNext(check_2)" onpropertychange="inputNext(check_2)"/>
    <input id="check_3" class="numDiv" type="number" oninput="inputNext(check_3)" onpropertychange="inputNext(check_3)"/>
    <input id="check_4" class="numDiv" type="number" oninput="inputNext(check_4)" onpropertychange="inputNext(check_4)"/>
    <input id="check_5" class="numDiv" type="number" oninput="inputNext(check_5)" onpropertychange="inputNext(check_5)"/>
    <input id="check_6" class="numDiv" type="number" oninput="inputNext(check_6)" onpropertychange="inputNext(check_6)"/>
</div>
JS:

function inputNext (id){ // 傳過來的id是個(gè)對(duì)象
    var index = Number(id.id.split("_")[1])
    if (id.value.length < 1) { // 刪除
        id.value = ''
        if (index > 1) {
            var preId = 'check_' + Number(Number(index) - 1)
            document.getElementById(preId).focus()
            return false
        }
    } else {
        if(id.value.length>1) {
            var nextValue = id.value.slice(1, 2)
            var nextId = 'check_' + Number(Number(index) + 1)
            id.value = id.value.slice(0, 1)
            if ((index+1) <= 6) {
                document.getElementById(nextId).value = nextValue
                document.getElementById(nextId).focus()
            }
        }
    }
}
PS:我這里寫的刪除方法是有問題的,這也是我果斷放棄這種方案的原因之一。

 

如果正常輸入,然后刪除是可以的。

 

但是輸入幾個(gè)數(shù)后,先點(diǎn)擊中間的框刪除一個(gè)數(shù)字,再回到最后,便只能將中間到最后的這幾個(gè)刪掉,最前面的還需要手動(dòng)點(diǎn)一下得到focus才能刪除。

 

這對(duì)用戶來說,簡(jiǎn)直太不友好了。。。

 

CSS:

.divYZM{
    width: 90%;
    margin: 0 auto;
    height: 100px;
    background-color: rgba(74, 35, 35, 0.42);
}
.numDiv{
    display: block;
    width: 10%;
    float: left;
    border-radius: 5px;
    text-align: center;
    line-height: 60px;
    font-size: 20px;
    font-weight: 900;
    color: red;
    background-color: white;
    height: 60px;
    border: 0;
    padding: 0;
    margin: 0;
    margin-left: 5.7%;
    top: 20px;
    position: relative;
    caret-color: transparent;
}
這里遇到的坑,舉例一個(gè)。

 

input限制長(zhǎng)度的屬性maxlength

 

a、與如下兩種配合使用(tel也可以限制)

<input type="text">  或者
<input type="password">
 

b、當(dāng)type為number時(shí)不起作用。這時(shí)需要用js控制。

<input type="number" oninput="if(value.length>5) value=value.slice(0,5)" />
注意:此外,tel類型的input在ios上會(huì)調(diào)出全數(shù)字鍵盤,而number類型的input則會(huì)調(diào)出帶有標(biāo)點(diǎn)符號(hào)的鍵盤。

 

 

方案二:1個(gè)input和6個(gè)span。

 

隱藏input,用span顯示內(nèi)容。大坑就是,何種情況下能調(diào)起ios的軟鍵盤呢?

 

先貼一下我剛開始的input樣式。

width: 0;
height :0;
border: 0;
padding: 0;
margin: 0;

第二種
display:none;
 

簡(jiǎn)單粗暴,結(jié)果就是,ios木得反應(yīng)。為啥呢,我想不通。

 

后來在晚上睡覺的時(shí)候我在想,我這兩種方式input都么有占位啊,那是不是占位了就可以了呢?

 

經(jīng)測(cè)果然是可以的(默默譴責(zé)自己懶了一下,沒有將不隱藏input的情況,在手機(jī)上進(jìn)行測(cè)試)。

 

接下來貼正確代碼。

 

CSS:

#yzm{
    width: 0;
    border: 0;
    padding: 0;
    margin: 0;
    height: .44rem;
    position: absolute;
    outline: none;
    color: transparent;
    text-shadow: 0 0 0 transparent;
    width: 300%;
    margin-left: -100%;
}
#yzmTable {
    width: 90%;
    margin: 0 auto;
    height: 100px;
    /* border: 1px solid red; */
    background-color: rgba(74, 35, 35, 0.42);
    /* opacity: 0.1; */
}
#yzmTable span { 
    display: block;
    width: 10%;
    float: left;
    border-radius: 5px;
    text-align: center;
    line-height: 60px;
    font-size: 20px;
    font-weight: 900;
    color: red;
    background-color: white;
    height: 60px;
    margin-left: 5.7%;
    top: 20px;
    position: relative;
}
這里對(duì)input的樣式也包括對(duì)光標(biāo)的隱藏,我在第一種方案中對(duì)光標(biāo)未進(jìn)行處理,因?yàn)樵诳吹絠os的卡卡卡之后果斷放棄了第一種方案。

 

HTML:

<input id="yzm" type="tel" maxlength="6" value="" oninput="yzmInsert()">
<div id="yzmTable">
    <span id="s_1" onclick="intoYzm(1)">&nbsp;&nbsp;</span>
    <span id="s_2" onclick="intoYzm(2)">&nbsp;&nbsp;</span>
    <span id="s_3" onclick="intoYzm(3)">&nbsp;&nbsp;</span>
    <span id="s_4" onclick="intoYzm(4)">&nbsp;&nbsp;</span>
    <span id="s_5" onclick="intoYzm(5)">&nbsp;&nbsp;</span>
    <span id="s_6" onclick="intoYzm(6)">&nbsp;&nbsp;</span>
</div>
JS:

function intoYzm(index) {
    var ele = document.getElementById("yzm")
    ele.focus()
}
 
function yzmInsert() { // input內(nèi)容改變時(shí)觸發(fā)
    for (var i = 1; i <= 6; i++) {
        var nextId = 's_' + i
        document.getElementById(nextId).innerHTML = '&nbsp;&nbsp;'
    }
    var yzm = document.getElementById("yzm").value
    var yzmArr = yzm.split('');
    for (var i = 0; i < yzmArr.length; i++) {
        const num = yzmArr[i];
        var id = 's_' + Number(i + 1)
        document.getElementById(id).innerHTML = '&nbsp;' + num + '&nbsp;'
    }
}
 
// 收起軟鍵盤的方法,點(diǎn)擊除了輸入框之外的其他區(qū)域就收起軟鍵盤
$('body').on('touchend', function(el) {
    if(el.target.tagName != 'SPAN') {
            $('yzm').blur()    
      }
})
 

在第二種方案中有兩個(gè)地方注意下:

 

a、在js方法中加了對(duì)全局中6個(gè)span標(biāo)簽(即六個(gè)輸入框)之外區(qū)域點(diǎn)擊事件的監(jiān)聽,用以收起軟鍵盤,方法如下。

$('body').on('touchend', function(el) {
    if(el.target.tagName != 'SPAN') {
        $('yzm').blur()
    }
})
 (比較粗糙,如果頁(yè)面中還有別的部分就比較受影響了,可以自行改進(jìn))

b、在隱藏的input中添加了onclick方法,如下并且在其中用了blur方法使得此輸入框失去焦點(diǎn)。為什么這么做呢?

<input id="yzm" type="tel" maxlength="6" value="" oninput="yzmInsert()" onclick="this.blur();">
因?yàn)榇颂幍碾[藏并非真正的隱藏,而是透明化處理,邊框包括光標(biāo)全部透明化,但實(shí)際上它還是占位的,所以當(dāng)你點(diǎn)擊輸入框上方空白處時(shí),仍會(huì)喚起軟鍵盤,就和我們之前所想的點(diǎn)擊輸入框之外區(qū)域就收起軟鍵盤沖突了。

 

因此將input自身的點(diǎn)擊獲取focus禁止掉,就OK了。

 

之前都是自己亂七八槽的瞎記,第一次寫給別人看,經(jīng)驗(yàn)不足,時(shí)間倉(cāng)促。不足之處,還望指正。

 藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。


B端產(chǎn)品設(shè)計(jì)的6大挑戰(zhàn)

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

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

B端產(chǎn)品設(shè)計(jì)的6大挑戰(zhàn)

翻譯: alina Wong  審校:華姐  |  UXRen翻譯組 #297 譯文

 

在VWO工作初期,我遇到的許多情況促使我想弄明白:企業(yè)類應(yīng)用(B2B,后文中統(tǒng)稱為B端應(yīng)用)真的和消費(fèi)類應(yīng)用(B2C)不一樣嗎?對(duì)于設(shè)計(jì)師和設(shè)計(jì)流程來說,這種區(qū)別有多重要?

這篇文章是我在過去幾年里的一些經(jīng)驗(yàn)梳理,希望能夠幫助那些想去或者已經(jīng)在B端團(tuán)隊(duì)工作的設(shè)計(jì)師們。

 

什么是B端應(yīng)用?

維基百科中的定義:B端應(yīng)用是一種用來滿足企業(yè)而非個(gè)人用戶需求的計(jì)算機(jī)軟件系統(tǒng)。

這是一些大家可能用過或者見過的B端應(yīng)用。

在現(xiàn)代社會(huì),大多數(shù)B端應(yīng)用都是復(fù)雜的任務(wù)關(guān)鍵型應(yīng)用,具有可拓展、分布式和模塊化等特征。B端應(yīng)用對(duì)大量復(fù)雜的數(shù)據(jù)進(jìn)行展示、處理和存儲(chǔ),并利用這些數(shù)據(jù)實(shí)現(xiàn)對(duì)業(yè)務(wù)流程的支撐及其自動(dòng)化。

B端工具可以幫助構(gòu)件你的產(chǎn)品,從而幫助企業(yè)和員工更好地完成工作。

注:雖然B2B和B端應(yīng)用在定義上略有不同,在目前的軟件生態(tài)中,這些差別幾乎無關(guān)緊要,所以本文將它們視為一類。

 

在設(shè)計(jì)方面,B2B與B2C有什么區(qū)別?

為B端設(shè)計(jì)并無特殊之處,優(yōu)秀設(shè)計(jì)的一切準(zhǔn)則,在這里都適用。不過,設(shè)計(jì)B2B產(chǎn)品和B2C產(chǎn)品,確實(shí)存在一些差別。

試想一下,汽車制造vs.商用飛機(jī)制造。它們都是非凡的工業(yè)設(shè)計(jì),把人們從A點(diǎn)運(yùn)輸?shù)紹點(diǎn)。顯而易見,它們有很多的不同之處,比如使用場(chǎng)景、制造時(shí)間、測(cè)試&安全規(guī)范、用戶預(yù)期、購(gòu)買以及所有權(quán)。所有這些不同之處都會(huì)影響設(shè)計(jì)及流程。

同樣對(duì)于B2B應(yīng)用來說,不同之處在于其獨(dú)特挑戰(zhàn)和應(yīng)對(duì)方法。

 

六大設(shè)計(jì)挑戰(zhàn)

聲明:任何一款軟件設(shè)計(jì)都會(huì)面臨以下一些挑戰(zhàn),但為B端設(shè)計(jì)時(shí),這些挑戰(zhàn)更加突出。

1. 功能復(fù)雜

由于數(shù)據(jù)多態(tài)、可視化選項(xiàng)多、管理操作、多用戶協(xié)作以及和其他軟件集成等諸多因素,B2B應(yīng)用的復(fù)雜度普遍高于B2C應(yīng)用。為了滿足一個(gè)需求而做出的一項(xiàng)設(shè)計(jì)決策,往往會(huì)影響其他許多需求,而其方式有時(shí)會(huì)難以預(yù)測(cè)。一項(xiàng)看似簡(jiǎn)單的功能添加,都要進(jìn)行全面檢查,考慮到各種極端情況。

Atlassian公司的Jira軟件界面:功能復(fù)雜的軟件案例。

解決方法:

解決復(fù)雜性的方法是什么?

當(dāng)然是簡(jiǎn)化。不要將這誤認(rèn)為是簡(jiǎn)化界面,或者現(xiàn)下流行的極簡(jiǎn)UI。這是通過恰當(dāng)?shù)囊?guī)劃和流程達(dá)到的簡(jiǎn)化。無論項(xiàng)目周期多么緊張,都必須在設(shè)計(jì)開始之前投入時(shí)間思考,將收集到的需求和規(guī)范進(jìn)行整理。實(shí)際上,這些是設(shè)計(jì)中非常重要的工作。

當(dāng)你對(duì)設(shè)計(jì)方案確認(rèn)無誤時(shí),會(huì)直接進(jìn)入Sketch、Figma或者PS階段,但這往往為時(shí)過早。抽點(diǎn)時(shí)間來厘清你將要設(shè)計(jì)的產(chǎn)品的背景和含義。通過研究和規(guī)劃,找出所有的可能性,處理所有的極端情況。確保準(zhǔn)備萬無一失時(shí),再進(jìn)入界面設(shè)計(jì)階段。

“如果我有60分鐘來砍斷一棵樹,我會(huì)花40分鐘先磨好斧子, 20分鐘砍倒它?!薄獊喞?林肯

恰當(dāng)?shù)囊?guī)劃和流程會(huì)在長(zhǎng)期運(yùn)行中展露優(yōu)勢(shì),帶來流暢無阻的產(chǎn)品體驗(yàn)。

 

2. 基于員工心理的設(shè)計(jì)

B端用戶的心理和行為模式與B2C的用戶的截然不同。B端用戶除了要完成本職工作之外,還要兼顧在組織內(nèi)的其他方面,如職業(yè)發(fā)展,職業(yè)學(xué)習(xí),職業(yè)成功。為在職人士設(shè)計(jì)時(shí),需要充分了解清楚他們的工作背景、流程、環(huán)境、期望、問題以及當(dāng)前的解決方案。

如何做:

設(shè)計(jì)B端應(yīng)用時(shí),理解用戶需求非常重要。不僅要了解產(chǎn)品相關(guān)的需求,還要了解用戶工作和職業(yè)相關(guān)的需求。與最終用戶深入交流,研究他們的領(lǐng)域,嘗試用他們當(dāng)前的方法,這些都非常有助于培養(yǎng)對(duì)用戶的同理心。

此外,用戶太過于習(xí)慣現(xiàn)有的工作流程,這導(dǎo)致他們很難想像自己真正想要什么。他們可能會(huì)告訴你功能和選項(xiàng),但卻無法提供產(chǎn)品創(chuàng)新之道。

用戶可能認(rèn)為自己想要的只是更多的功能。

B端產(chǎn)品設(shè)計(jì)團(tuán)隊(duì)的設(shè)計(jì)指導(dǎo)原則,是知道用戶目前遇到的困難是什么,然后設(shè)計(jì)出方案來解決這些困難。一旦真正理解用戶的長(zhǎng)期目標(biāo)是什么,設(shè)計(jì)師就可以有很多發(fā)揮的空間了。

“用戶購(gòu)買產(chǎn)品是希望變成更好的自己?!薄?JTBD理論

與其關(guān)注用戶說什么,不如關(guān)注他們實(shí)際做什么,并以此為創(chuàng)新的基點(diǎn),構(gòu)建精益原型,并與用戶一起進(jìn)行測(cè)試。

 

3. 降低軟件切換成本

一般來說,B端用戶習(xí)慣且滿意現(xiàn)有的工作流程,并沒有切換到另一種產(chǎn)品的需要。而且即便他們想換一個(gè),也要層層審批。更不要說,現(xiàn)有數(shù)據(jù)的遷移對(duì)于公司和員工來說都是非常難的事情。所以同大眾消費(fèi)者應(yīng)用不同,B端應(yīng)用的切換成本顯然要高得多。

解決方法:

說服企業(yè)換用你的軟件的兩大方法:

  1. 比競(jìng)品提供更多的功能。
  2. 重新定義現(xiàn)有工作流程,使其用戶體驗(yàn)有明顯的提升,更快,更好,更有效率。

第二點(diǎn)才是設(shè)計(jì)中真正閃光之處。生產(chǎn)效率、工作流程是企業(yè)最關(guān)注的事情。仔細(xì)研究它們現(xiàn)在的方案,找到需要提升的地方??紤]如何設(shè)計(jì)出更快的工作流程,如何提升效率并降低成本。在這幾方面上創(chuàng)新,往往會(huì)帶來可以說服企業(yè)作出改變的解決方案。

“衡量創(chuàng)新的唯一標(biāo)準(zhǔn),就是看它是否改變了人們的行為”——Stewart Butterfield, Slack聯(lián)合創(chuàng)始人

不斷尋找機(jī)會(huì),改變傳統(tǒng)的方法,使之更有效,更。

 

4.  優(yōu)先增加新功能

對(duì)于B端產(chǎn)品,新增功能幾乎總是比提升現(xiàn)有功能的體驗(yàn)更優(yōu)先。在產(chǎn)品啟動(dòng)時(shí),通常會(huì)有專門的設(shè)計(jì)沖刺階段。而一旦產(chǎn)品發(fā)布出去,用戶需求就開始涌入進(jìn)來。付費(fèi)客戶會(huì)不斷要求增加新的功能,產(chǎn)品團(tuán)隊(duì)也制定繁忙的開發(fā)計(jì)劃。在這種情況下,設(shè)計(jì)師尤其很難說服有關(guān)人士投入時(shí)間和資源來提升設(shè)計(jì)和用戶體驗(yàn)。

避免方法:

嘗試從這些相關(guān)人士的角度看待問題。他們經(jīng)常認(rèn)為,任何一段開發(fā)時(shí)間,無論是一周還是一個(gè)月,如果沒有用來開發(fā)新功能就基本等于舍棄了潛在的收入。這時(shí),讓他們明白優(yōu)化產(chǎn)品所帶來的好處就很重要了,要讓他們懂得優(yōu)化遠(yuǎn)比增加新功能可以帶來更多的收入。重點(diǎn)講講成功故事。直接和高管聊這件事,讓他們接受這種觀念。優(yōu)化設(shè)計(jì)總是需要仔細(xì)分析痛點(diǎn),檢驗(yàn)新的想法,而這些都需要時(shí)間和創(chuàng)新。

“電燈不是通過不斷優(yōu)化蠟燭發(fā)明出來的。”—奧倫·哈拉里(Oren Harari)

一旦你獲得了公司的信任,就要在有限的時(shí)間內(nèi)取得一些小勝利,并且一直努力度量其影響。逐步建立起公司對(duì)設(shè)計(jì)團(tuán)隊(duì)的信心,繼續(xù)嘗試更大的改進(jìn)方案。

讓產(chǎn)品和開發(fā)團(tuán)隊(duì)成員承諾確保優(yōu)秀的用戶體驗(yàn),并幫助他們主認(rèn)識(shí)到這不僅僅是設(shè)計(jì)團(tuán)隊(duì)的任務(wù)。

 

5.體驗(yàn)的一致性

來源:B端用戶體驗(yàn)行業(yè)報(bào)告 2017-2018

最近,一項(xiàng)對(duì)3000多名B端產(chǎn)品設(shè)計(jì)師的調(diào)查顯示,對(duì)B端設(shè)計(jì)團(tuán)隊(duì)來說,最大的挑戰(zhàn)是提高產(chǎn)品的用戶體驗(yàn)一致性。不同于消費(fèi)類應(yīng)用,B2B產(chǎn)品通常有更長(zhǎng)的產(chǎn)品周期且異步運(yùn)行,很多時(shí)候都是分布式團(tuán)隊(duì)合作設(shè)計(jì)。

每一名設(shè)計(jì)師都面對(duì)著與其他團(tuán)隊(duì)類似的問題,很容易導(dǎo)致產(chǎn)品設(shè)計(jì)不一致,比如更改設(shè)計(jì)組件、更新樣式,甚至像顏色這樣的細(xì)節(jié)都會(huì)產(chǎn)生不同。這些問題隨著團(tuán)隊(duì)的擴(kuò)大或者產(chǎn)品的體量增加而變得更加嚴(yán)重。

解決方法:

許多公司開始建立設(shè)計(jì)規(guī)范來保持產(chǎn)品的一致性和可拓展性。設(shè)計(jì)規(guī)范包含可復(fù)用的組件集合、清晰的設(shè)計(jì)指導(dǎo),可以幫助構(gòu)建任何數(shù)量的產(chǎn)品。設(shè)計(jì)規(guī)范通常包括:

  • 設(shè)計(jì)指南(設(shè)計(jì)原則、范例、編輯指南)
  • 視覺元素(顏色、排版層級(jí)、圖標(biāo)等等)
  • UI組件(表格、按鈕、頁(yè)面樣式)
  • 使用和維護(hù)方法

當(dāng)B端設(shè)計(jì)團(tuán)隊(duì)被問到是否建立了設(shè)計(jì)規(guī)范時(shí),約55%的團(tuán)隊(duì)回答是或正在創(chuàng)建中。這是很好的現(xiàn)象。需要指出的是,設(shè)計(jì)規(guī)范永遠(yuǎn)不會(huì)100%完成,它著眼于長(zhǎng)期,會(huì)隨著時(shí)間的推移不斷更新。

“設(shè)計(jì)每個(gè)元素時(shí)都應(yīng)該考慮到其是否易于制作和修復(fù)。”?—Leo Fender

設(shè)計(jì)規(guī)范對(duì)于保證用戶體驗(yàn)一致性具有里程碑意義。

以下是一些B端設(shè)計(jì)規(guī)范,可以給你一些靈感:Salesforce的Lightning設(shè)計(jì)規(guī)范, Intuit的Harmony設(shè)計(jì)規(guī)范。

 

6. 并非每一位設(shè)計(jì)師都喜歡B端產(chǎn)品設(shè)計(jì)

不少設(shè)計(jì)師在做過一段時(shí)間B端應(yīng)用設(shè)計(jì)后,發(fā)現(xiàn)它無聊單調(diào)。許多來自咨詢公司或者有B2C經(jīng)驗(yàn)的設(shè)計(jì)師覺得B端設(shè)計(jì)缺乏激情和多樣性。做那種酷炫的微交互和動(dòng)畫(就是會(huì)發(fā)在dribbble上那種)的機(jī)會(huì)并常有。這樣,工作就變得乏味無趣,設(shè)計(jì)師們感受不到成就感,提不起勁來。

避免方法:

B端應(yīng)用的用戶體驗(yàn)旨在幫助用戶更好地完成工作。設(shè)計(jì)一個(gè)迷人的界面來吸引用戶,(盡管并無害處,卻)總是在被排在低優(yōu)先級(jí)。標(biāo)準(zhǔn)化的、可預(yù)知的、所見即所得的用戶界面,最適合目標(biāo)用戶。

我們的目標(biāo)是讓用戶發(fā)出“哇!”的感嘆,不是因?yàn)榻k麗的界面,而是因?yàn)楫a(chǎn)品能夠幫助他地完成工作。

組建B端應(yīng)用設(shè)計(jì)團(tuán)隊(duì)時(shí),選擇目的和動(dòng)機(jī)一致的設(shè)計(jì)師最為關(guān)鍵。設(shè)計(jì)師的動(dòng)機(jī),應(yīng)該大量來自于解決復(fù)雜的問題,看到自己的設(shè)計(jì)如何幫助用戶完成他們的工作。

所以,在設(shè)計(jì)師加入團(tuán)隊(duì)之前,評(píng)估他們的想法并設(shè)定正確的期望是非常必要的。

 

B端設(shè)計(jì)的一般性建議

企業(yè)本身是在逐步發(fā)展的。B端應(yīng)用不再是難用、無聊的產(chǎn)品,用戶期望B端用戶像消費(fèi)類應(yīng)用一樣有著優(yōu)秀的體驗(yàn)。他們喜歡漂亮的界面,不希望在使用前看說明文檔。下一代技術(shù),例如VR、AI和聲音已經(jīng)進(jìn)入了我們的生活,也很快會(huì)應(yīng)用到工作中。對(duì)B端應(yīng)用來說,這令人興奮,而設(shè)計(jì)師所能做的,則是無限的。

做B端應(yīng)用設(shè)計(jì)的三個(gè)指導(dǎo)原則:

  1. 擁抱靈活性和模塊化。
    設(shè)計(jì)任何東西的時(shí)候,都要考慮到它是會(huì)發(fā)展變化。不僅僅要為當(dāng)前的需求定制設(shè)計(jì)組件,更要考慮它對(duì)未來需求的適應(yīng)性和可擴(kuò)展性。
  2. 建立條理和流程。
    優(yōu)秀的合作,定期的用戶調(diào)研,可執(zhí)行的問題報(bào)告,有側(cè)重點(diǎn)的設(shè)計(jì)迭代,這些往往都是我們所期待的,但卻又難以每次都得以實(shí)現(xiàn)。最好建立一個(gè)可重復(fù)的流程,并在每一個(gè)周期都予以改進(jìn)。
  3. 全局思考。
    時(shí)刻關(guān)注你的設(shè)計(jì)和添加會(huì)如何影響整個(gè)產(chǎn)品以及公司愿景。當(dāng)你關(guān)注整體時(shí),你設(shè)計(jì)出的產(chǎn)品,你所做的升級(jí),增加的功能,都會(huì)自然而然地帶來流暢一致的用戶體驗(yàn)。

    藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)

     

軟件測(cè)試 學(xué)習(xí)之路 CSS (四)

seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

一、文字樣式中階

字體樣式
代碼格式:
font: 文字粗細(xì) 大小/行高 字體名稱;
例子:font: bold 200px/400px "微軟雅黑";
2.字體陰影
代碼格式:
text-shadow:x y r color;
注:x是為負(fù)數(shù)則陰影向左,整數(shù)向右,同理y正數(shù)向上,負(fù)數(shù)向下,r代表陰影模糊程度,數(shù)值月大則越模糊,其單位都是px,color為文字顏色。
例子:text-shadow: 10px 10px 0px red;
提示:允許一段文字有多層陰影,多層之間用逗號(hào)隔開,每一層內(nèi),不同參數(shù)用空格隔開。

凹凸字體 陰影巧用
原理:通過背景顏色以及不同于背景顏色的陰影打造凹凸字體效果
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>凹凸文字</title>
<style type="text/css">
body{
background: #ccc;
}
div{
color: #ccc;
text-align: center;
font: bold 200px/400px "微軟雅黑";
/*text-shadow: 1px 1px 0px #fff;-1px -1px 0px #333;*/
text-shadow: 1px 1px 0px #333,-1px -1px 0px #fff;
}
</style>
</head>
<body>
<div >
凹凸文字
</div>
</body>
</html>

二、過渡屬性

過渡屬性的作用就是體現(xiàn)元素默認(rèn)樣式與最終樣式變化的過程。
代碼格式:transition:all 1s linear 0s;
注:

第一個(gè)參數(shù)的作用是設(shè)置元素的哪些屬性過渡,all表示全部過渡,width代表屬性寬度過渡,其他不過渡,其他屬性也一樣。
的哥屬性設(shè)置過渡需要的時(shí)長(zhǎng),單位s不能省略。
第三個(gè)屬性設(shè)置過渡延遲多少秒執(zhí)行,單位s不能省略。
hover 設(shè)置鼠標(biāo)移到某一元素時(shí)狀態(tài)。
transition 這個(gè)屬性既可以添加在元素默認(rèn)狀態(tài),也可以添加在鼠標(biāo)上移狀態(tài)即添加在hover標(biāo)簽內(nèi),區(qū)別就是第二種做法在鼠標(biāo)離開時(shí)候不會(huì)發(fā)生過渡變化。
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>過渡屬性</title>
<style type="text/css">
div{
width: 200px;
height: 200px;
background-color: green;

transition:all 1s linear 0s;
 
}
div:hover{
width: 600px;
background-color: yellow;
}
</style>
</head>
<body>
<div id="\">

</div>
</body>
</html>
藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。

Material Design數(shù)據(jù)可視化指南

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

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

2019年6月18日Material Design更新了設(shè)計(jì)指南中數(shù)據(jù)可視化部分,這是谷歌數(shù)據(jù)可視化團(tuán)隊(duì)形成的一套全面的數(shù)據(jù)可視化指南, 涵蓋了設(shè)計(jì)原則、圖表分類、圖表的選用、樣式設(shè)計(jì)、交互設(shè)計(jì)、儀表板設(shè)計(jì)等方面。個(gè)人閱讀后進(jìn)行了翻譯,希望能夠分享給更多對(duì)數(shù)據(jù)可視化有興趣的設(shè)計(jì)同學(xué)!


全文章節(jié)目錄:

原則

類型

選擇圖表

樣式

行為

儀表板




數(shù)據(jù)可視化

數(shù)據(jù)可視化就是用圖形描繪信息。




原則

數(shù)據(jù)可視化是一種以圖形描繪密集和復(fù)雜信息的表現(xiàn)形式。數(shù)據(jù)可視化的視覺效果旨在使數(shù)據(jù)容易對(duì)比,并用它來講故事,以此來幫助用戶做出決策。


數(shù)據(jù)可視化可以表達(dá)不同類型和規(guī)模的數(shù)據(jù),包括從幾個(gè)數(shù)據(jù)點(diǎn)到有大量變量的數(shù)據(jù)集。

Image title





類型

數(shù)據(jù)可視化可以以不同的形式表達(dá)。圖表是表達(dá)數(shù)據(jù)的常用方式,因?yàn)樗鼈兡軌蛘故竞蛯?duì)比多種不同的數(shù)據(jù)。


圖表類型的選擇主要取決于兩點(diǎn):要表現(xiàn)的數(shù)據(jù)和表現(xiàn)該數(shù)據(jù)的用意。該指南描述各種類型的圖表及其用例。


圖表類型


1. 隨時(shí)間變化

隨時(shí)間變化的圖表顯示一段時(shí)間的數(shù)據(jù),例如多個(gè)類別之間的趨勢(shì)或比較。


常見用例包括:

股價(jià)表現(xiàn)、衛(wèi)生統(tǒng)計(jì)、年表

Image title



2. 類別比較

類別比較圖表是多個(gè)不同類別數(shù)據(jù)之間的比較。

常見用例包括:

不同國(guó)家的收入、熱門場(chǎng)地時(shí)間、團(tuán)隊(duì)分配

Image title



3. 排名

排名圖表顯示項(xiàng)目在有序列表中的位置。

常見用例包括:

選舉結(jié)果、性能統(tǒng)計(jì)

Image title



4. 占比

占比類圖表顯示了局部與整體的關(guān)系。

常見用例包括:

產(chǎn)品類別的綜合收入、預(yù)算

Image title



5. 關(guān)聯(lián)

關(guān)聯(lián)類圖表顯示兩個(gè)或以上變量之間的關(guān)系。

常見用例包括:

收入和預(yù)期壽命

Image title



6. 分布

分布類圖表顯示每個(gè)值在數(shù)據(jù)集中出現(xiàn)的頻率。

常見用例包括:

人口分布、收入分布

Image title



7. 流程

流程類圖表顯示了多個(gè)狀態(tài)之間的數(shù)據(jù)移動(dòng)。

常見用例包括:

資金轉(zhuǎn)移、投票計(jì)數(shù)和選舉結(jié)果

Image title



8. 關(guān)系

關(guān)系圖表顯示多個(gè)項(xiàng)目之間的關(guān)系。

常見用例包括:

社交網(wǎng)絡(luò)、詞圖

Image title






選擇圖表

面對(duì)多種類型的圖表,以下指南提供了關(guān)于如何選擇合適的圖表見解。



顯示隨時(shí)間的變化

可以使用時(shí)間序列圖表來表示隨時(shí)間的變化,就是按時(shí)間順序表示數(shù)據(jù)點(diǎn)的圖表。表示隨時(shí)間變化的圖表包括:折線圖,柱狀圖(條形圖)和面積圖。


Image title

*基線值是y軸上的起始值。



柱狀圖(條形圖)和餅圖

柱狀圖(條形圖)和餅圖都可用于顯示比例,表示部分與總體的對(duì)比。

· 柱狀圖(條形圖)使用共同的基線,通過條形長(zhǎng)度表示數(shù)量

· 餅圖使用圓的圓弧或角度表示整體的一部分


柱狀圖(條形圖),折線圖和堆疊面積圖在顯示隨時(shí)間的變化方面比餅圖更有效地。由于這三個(gè)圖表都是使用相同的基線,因此可以更輕松地根據(jù)條形長(zhǎng)度比較值的差異。

Image title



面積圖

面積圖有多種類型,包括堆疊面積圖和層疊面積圖:

· 堆疊面積圖顯示多個(gè)時(shí)間序列(在同一時(shí)間段內(nèi))堆疊在一起

· 層疊面積圖顯示多個(gè)時(shí)間序列(在同一時(shí)間段內(nèi))重疊在一起


層疊面積圖建議不要使用超過兩個(gè)時(shí)間序列,因?yàn)檫@樣做會(huì)使數(shù)據(jù)模糊不清。取而代之,應(yīng)當(dāng)使用堆疊面積圖來比較一個(gè)時(shí)間間隔內(nèi)的多個(gè)值(橫軸表示時(shí)間)。

Image title





樣式

數(shù)據(jù)可視化使用自定義樣式和形狀,使數(shù)據(jù)更容易理解,以適合用戶需求。


圖表可以從以下方面進(jìn)行優(yōu)化:

· 圖形元素

· 文字排版

· 圖標(biāo)

· 軸和標(biāo)簽

· 圖例和注釋



不同類型數(shù)據(jù)的樣式設(shè)計(jì)

可視化編碼是將數(shù)據(jù)轉(zhuǎn)換為可視形式的過程。獨(dú)特的圖形屬性可應(yīng)用于定量數(shù)據(jù)(如溫度,價(jià)格或速度)和定性數(shù)據(jù)(如類別,風(fēng)味或表達(dá)式)。


這些圖形屬性包括:

· 形狀

· 顏色

· 大小

· 面積

· 體積

· 長(zhǎng)度

· 角度

· 位置

· 方向

· 密度



不同屬性的表現(xiàn)

多個(gè)視覺處理方法可以綜合應(yīng)用于數(shù)據(jù)點(diǎn)的多個(gè)方面。例如,在條形圖中,條形顏色可以表示類別,而條形長(zhǎng)度可以表示值(如人口數(shù)量)。

Image title

形狀可用于表示定性數(shù)據(jù)。在此圖表中,每個(gè)類別由特定形狀(圓形,正方形和三角形)表示,這樣可以在一張圖表中輕松實(shí)現(xiàn)特定范圍的比較,同時(shí)也可以進(jìn)行類別之間比較。



1. 形狀

圖表可以運(yùn)用形狀,以多種方式展示數(shù)據(jù)。形狀的設(shè)計(jì)可以是有趣的、曲線的,或者和高保真的等等。


形狀程度

圖表可以展示不同精度程度的數(shù)據(jù)。用于細(xì)致研究的數(shù)據(jù)應(yīng)該用適合交互的形狀(在觸摸大小和功能可見性方面)展示。而旨在表達(dá)一般概念或趨勢(shì)的數(shù)據(jù)可以使用細(xì)節(jié)較少的形狀。

Image title



2. 顏色

顏色可用于以四種主要方式區(qū)分圖表數(shù)據(jù):

· 區(qū)分類別

· 表示數(shù)量

· 突出特定數(shù)據(jù)

· 表示含義


顏色區(qū)分類別

Image title

例:圓環(huán)圖中,顏色用于表示類別。



顏色表示數(shù)量

Image title

例:地圖中,顏色用于表示數(shù)據(jù)值。



顏色突出數(shù)據(jù)

Image title

例:散點(diǎn)圖中,顏色用于突出特定數(shù)據(jù)。



重點(diǎn)區(qū)域

在不濫用的情況下,顏色可以突出焦點(diǎn)區(qū)域。不建議大量使用高亮顏色,因?yàn)樗鼈儠?huì)分散用戶注意力,影響用戶的專注力。

Image title



顏色表示含義

Image title



無障礙

為了適應(yīng)看不到顏色差異的用戶,您可以使用其他方法來強(qiáng)調(diào)數(shù)據(jù),例如高對(duì)比度著色,形狀或紋理。

將文本標(biāo)簽應(yīng)用于數(shù)據(jù)還有助于說明其含義,同時(shí)消除對(duì)圖例的需求。



3. 線

圖表中的線可以表示數(shù)據(jù)的特性,例如層次結(jié)構(gòu),突出和比較。線條可以有多種不同的樣式,例如點(diǎn)劃線或不同的不透明度。


線可以應(yīng)用于特定元素,包括:

· 注釋

· 預(yù)測(cè)元素

· 比較工具

· 可靠區(qū)間

· 異常


Image title



4. 文字排版

文本可用于不同的圖表元素,包括:

· 圖表標(biāo)題

· 數(shù)據(jù)標(biāo)簽

· 軸標(biāo)簽

· 圖例



圖表標(biāo)題通常是具有最高層次結(jié)構(gòu)的文本,軸標(biāo)簽和圖例具有級(jí)別的層次結(jié)構(gòu)。

Image title



字重

標(biāo)題和字重的變化可以表達(dá)內(nèi)容在層次結(jié)構(gòu)中的重要程度。但是應(yīng)該保持克制,使用有限的字體樣式。

Image title



5. 圖標(biāo)

圖標(biāo)可以表示圖表中不同類型的數(shù)據(jù),并提高圖表的整體可用性。


圖標(biāo)可用于:

· 分類數(shù)據(jù):用于區(qū)分組或類別

· UI控件和操作:例如篩選,縮放,保存和下載

· 狀態(tài):例如錯(cuò)誤,空狀態(tài),完成狀態(tài)和危險(xiǎn)


在圖表中使用圖標(biāo)時(shí),建議使用通用可識(shí)別符號(hào),尤其是在表示操作或狀態(tài)時(shí),例如:保存,下載,完成,錯(cuò)誤和危險(xiǎn)。

Image title




6. 坐標(biāo)軸

一個(gè)或多個(gè)坐標(biāo)軸顯示數(shù)據(jù)的比例和范圍。例如,折線圖沿水平和垂直坐標(biāo)軸顯示一系列值。

Image title



柱狀圖(條形圖)基線

柱狀圖(條形圖)應(yīng)從為零的基線(y軸上的起始值)開始。從不為零的基線開始可能導(dǎo)致數(shù)據(jù)被錯(cuò)誤地理解。

Image title



坐標(biāo)軸標(biāo)簽

標(biāo)簽的設(shè)計(jì)應(yīng)體現(xiàn)圖表中最重要的數(shù)據(jù)。應(yīng)根據(jù)需要使用標(biāo)簽,并在UI中保持一致性。他們的出現(xiàn)不應(yīng)該妨礙查看圖表。

Image title



文字方向

為便于閱讀,文本標(biāo)簽應(yīng)水平放置在圖表上。


文字標(biāo)簽不應(yīng)該:

· 旋轉(zhuǎn)

· 垂直堆疊

Image title



7. 圖例和注釋

圖例和注釋描述了圖表的信息。注釋應(yīng)突出顯示數(shù)據(jù)點(diǎn),數(shù)據(jù)異常值和任何值得注意的內(nèi)容。

Image title

1. 注釋

2. 圖例


在PC端,建議在圖表下方放置圖例。在移動(dòng)端,將圖例放在圖表上方,以便在交互過程中保持可見。



標(biāo)簽和圖例

在簡(jiǎn)單圖表中,可以使用直接標(biāo)簽。在密集的圖表(或更大的圖表組的一部分)中,可以用圖例。

Image title



8. 小顯示屏

可穿戴設(shè)備(或其他小屏幕)上顯示的圖表應(yīng)該是移動(dòng)端或PC端圖表的簡(jiǎn)化版本。

Image title





行為

圖表具有交互模式,使用戶可以控制圖表數(shù)據(jù)。這些模式可以使用戶專注于圖表的特定值或范圍。


以下推薦的交互模式,樣式和效果(如觸覺反饋)可以提高用戶對(duì)圖表數(shù)據(jù)的理解:

漸進(jìn)式披露

提供了按需求逐步展示詳細(xì)信息的明確途徑。

直接操作

允許用戶直接對(duì)UI元素進(jìn)行操作,最大限度地減少屏幕上所需的操作數(shù)量,包括:縮放和平移,分頁(yè)和數(shù)據(jù)控件。

改變視角

使一種設(shè)計(jì)可以適用于不同的用戶和數(shù)據(jù)類型,例如數(shù)據(jù)控件和動(dòng)效。


1. 漸進(jìn)式披露

使用漸進(jìn)式披露顯示圖表詳細(xì)信息,允許用戶根據(jù)需要查看特定數(shù)據(jù)點(diǎn)。

Image title


2. 縮放和平移

縮放和平移是常用的圖表交互,會(huì)影響用戶對(duì)圖表數(shù)據(jù)深入的研究和探索。


縮放

縮放改變界面顯示的遠(yuǎn)近。設(shè)備類型決定了如何執(zhí)行縮放。

· 在PC端,通過單擊、拖動(dòng)或滾動(dòng)進(jìn)行縮放

· 在移動(dòng)端,通過捏合進(jìn)行縮放


當(dāng)縮放不是主要操作時(shí),可以通過單擊和拖動(dòng)(在PC端)或雙擊(在移動(dòng)端)來實(shí)現(xiàn)。


平移

平移讓用戶能夠看到屏幕之外的界面。它應(yīng)該合理的展示數(shù)據(jù)的價(jià)值。例如,如果圖表的一個(gè)維度比另一個(gè)維度更重要,則平移的方向可以僅限于該維度。

· 平移通常與縮放功能同時(shí)使用。

· 在移動(dòng)端,平移通常通過手勢(shì)實(shí)現(xiàn),例如單指滑動(dòng)。

Image title



3. 分頁(yè)

在移動(dòng)端,分頁(yè)是一種常見模式,讓用戶通過向右或向左滑動(dòng)來查看上一個(gè)或下一個(gè)圖表。

Image title

在移動(dòng)端,用戶可以向右滑動(dòng)以查看前一天。



4. 數(shù)據(jù)控制

可以使用切換控件,選項(xiàng)卡和下拉菜單篩選或改變數(shù)據(jù)。

用戶調(diào)節(jié)控件時(shí),這些控件還可以顯示指標(biāo)。

Image title

切換控件,選項(xiàng)卡和下拉菜單可以更改或篩選數(shù)據(jù)。



5. 動(dòng)效

動(dòng)效可以強(qiáng)化數(shù)據(jù)之間的聯(lián)系,提升交互體驗(yàn)。應(yīng)該有目的地使用運(yùn)動(dòng)(不是裝飾性地),表達(dá)不同狀態(tài)和空間之間的聯(lián)系。

運(yùn)動(dòng)應(yīng)該是合理,平穩(wěn),反應(yīng)靈敏,不會(huì)妨礙用戶的使用。

Image title在此示例中,圖表數(shù)據(jù)從按天顯示動(dòng)態(tài)切換到按周顯示。轉(zhuǎn)換期間不會(huì)顯示所選日期范圍之外的數(shù)據(jù),從而降低了復(fù)雜性。



Image title動(dòng)畫能夠體現(xiàn)兩個(gè)不同圖表的相關(guān)性。



6. 空狀態(tài)

圖表數(shù)據(jù)為空的情況下,可以提供相關(guān)數(shù)據(jù)的預(yù)期。

在合適的情況下,可以展示角色動(dòng)畫創(chuàng)造愉悅和鼓勵(lì)。



Image title有特色的動(dòng)畫提升了空狀態(tài)的效果。







儀表板

在稱為儀表板的UI界面中,數(shù)據(jù)可視化通過一系列圖表實(shí)現(xiàn)。多個(gè)獨(dú)立的圖表有時(shí)可以比一個(gè)復(fù)雜的圖表更好地表達(dá)故事。



儀表板設(shè)計(jì)

儀表板的目的應(yīng)在其布局,樣式和交互模式中體現(xiàn)。無論是用來制作演示文稿還是深入研究數(shù)據(jù),它的設(shè)計(jì)應(yīng)該適合它的使用方式。


儀表板應(yīng)該:

· 突出最重要信息(使用布局)

· 根據(jù)信息層級(jí)確定信息的焦點(diǎn)(使用顏色,位置,大小和視覺權(quán)重)


Image title

應(yīng)根據(jù)對(duì)數(shù)據(jù)的需求確定信息的優(yōu)先級(jí)并進(jìn)行安排。在此示例中設(shè)計(jì)儀表板,考慮了以下用戶問題:

1. 需要注意的問題
2. 發(fā)生問題的時(shí)間

3.發(fā)生問題的位置

4.受問題影響的其他變量



1. 分析類儀表板

分析儀類表板讓用戶能夠研究多組數(shù)據(jù)并發(fā)現(xiàn)趨勢(shì)。通常,這些儀表板包含能夠深入洞察數(shù)據(jù)的復(fù)雜圖表。


用例包括:

· 隨時(shí)間變化的突出趨勢(shì)

· 回答“為什么”和“假設(shè)”的問題

· 預(yù)測(cè)

· 創(chuàng)建有深度的報(bào)告


分析類儀表板示例:

· 跟蹤廣告活動(dòng)的收效

· 跟蹤產(chǎn)品在其整個(gè)生命周期中的銷售額和收入

· 隨時(shí)間變化的城市人口趨勢(shì)

· 跟蹤隨時(shí)間變化氣候數(shù)據(jù)


Image title

分析類儀表板顯示氣候數(shù)據(jù)



2. 操作類儀表板

操作類儀表板旨在回答一組預(yù)設(shè)的問題。它們通常用于完成與監(jiān)控相關(guān)的任務(wù)。

在大多數(shù)情況下,這些類型的儀表板具有一系列關(guān)于當(dāng)前信息的簡(jiǎn)單圖表。


用例包括:

· 跟蹤目標(biāo)的當(dāng)前進(jìn)度

· 實(shí)時(shí)跟蹤系統(tǒng)性能


操作類儀表板示例:

· 跟蹤呼叫中心的活動(dòng),例如呼叫音量,等待時(shí)間,呼叫長(zhǎng)度或呼叫類型

· 監(jiān)控在云端應(yīng)用程序的運(yùn)行狀況

· 顯示股市情況

· 監(jiān)控賽車上的遙測(cè)數(shù)據(jù)


Image title

操作類儀表板顯示設(shè)備存儲(chǔ)指標(biāo)



3. 演示類儀表板

演示類儀表板是為感興趣的主題提供的展示視圖。

這些儀表板通常包括一些小圖表或數(shù)據(jù)卡片,用動(dòng)態(tài)標(biāo)題描述每個(gè)圖表的趨勢(shì)和見解。


用例包括:

· 提供關(guān)鍵績(jī)效指標(biāo)的總覽

· 創(chuàng)建高級(jí)執(zhí)行情況的概要


演示類儀表板示例:

· 提供投資賬戶績(jī)效的總覽

· 提供產(chǎn)品銷售和市場(chǎng)份額數(shù)據(jù)的概要


Image title演示類儀表板顯示網(wǎng)站使用數(shù)據(jù)

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。

UI 工作流程指南:需求分析

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


如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

完整的 UI 設(shè)計(jì)流程到底是怎樣的?從需求到產(chǎn)品上線,要經(jīng)歷多少個(gè)階段,每個(gè)階段有哪些應(yīng)該掌握的基礎(chǔ)知識(shí),本次優(yōu)設(shè)獨(dú)家專題為你從零開始梳理出 UI 工作流程,適合新手閱讀學(xué)習(xí)。


本篇工作流程第一節(jié):需求分析。

UI 設(shè)計(jì)工作,包括 APP 設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、小程序設(shè)計(jì)等方面。而一個(gè)產(chǎn)品完整的 UI 設(shè)計(jì)流程,是指拿到一個(gè)新的項(xiàng)目需求后,從設(shè)計(jì)思考開始,產(chǎn)品前期分析,設(shè)計(jì)產(chǎn)品,設(shè)計(jì)評(píng)審,用戶測(cè)試,直至產(chǎn)品上線。

我們的工作流程如下:

以上的流程都是與設(shè)計(jì)師密切相關(guān)的內(nèi)容,我們的關(guān)注點(diǎn)不能只有視覺效果,孤立的設(shè)計(jì)容易脫離產(chǎn)品,反復(fù)修改,因此前期分析與后期支持都值得我們重視。

產(chǎn)品立項(xiàng)后的第一階段是需求分析階段,當(dāng)我們拿到一個(gè)新的需求時(shí),首先要了解的就是產(chǎn)品的需求是什么,了解市場(chǎng)背景、產(chǎn)品定位、概念,客戶的需求是什么。

一般來說,我們接到的需求分為三類:全新產(chǎn)品、現(xiàn)有產(chǎn)品新增功能、產(chǎn)品改版。

需求文檔類型

前期分析階段中,需求方主要是與產(chǎn)品經(jīng)理進(jìn)行溝通,產(chǎn)出文檔有三種:

  • BRD文檔(Business Requirement Document):商業(yè)需求文檔,基于商業(yè)目標(biāo)或價(jià)值所描述的產(chǎn)品需求內(nèi)容文檔(報(bào)告)。
  • MRD文檔(Market Requirement Document):市場(chǎng)需求文檔,該文檔在產(chǎn)品項(xiàng)目過程中屬于「過程性」文檔,由產(chǎn)品經(jīng)理或者市場(chǎng)經(jīng)理編寫的一個(gè)產(chǎn)品說明需求的文檔。
  • PRD文檔(Product Requirement Document):產(chǎn)品需求文檔是將商業(yè)需求文檔(BRD)和市場(chǎng)需求文檔(MRD)用更加專業(yè)的語(yǔ)言進(jìn)行描述。

分析類網(wǎng)站推薦

產(chǎn)品分析緯度

有了數(shù)據(jù)參考來源后,我們就能從五個(gè)緯度分析產(chǎn)品。

1. 產(chǎn)品分析

市場(chǎng)背景、產(chǎn)品業(yè)務(wù)、現(xiàn)有產(chǎn)品各項(xiàng)數(shù)據(jù)。

2. 用戶畫像

  • 顯性畫像:即用戶群體的可視化的特征描述。如目標(biāo)用戶的年齡、性別、職業(yè)、地域、興趣愛好等特征。
  • 隱性畫像:用戶內(nèi)在的深層次的特征描述。包含了用戶的產(chǎn)品使用目的、用戶偏好、用戶需求、產(chǎn)品的使用場(chǎng)景、產(chǎn)品的使用頻次等。

3. 需求確認(rèn)

產(chǎn)品需求主要是為了滿足用戶或企業(yè)價(jià)值,所以一定要確認(rèn)重要且緊要的需求內(nèi)容是什么,什么功能和內(nèi)容暫時(shí)不需要做,什么功能和內(nèi)容放在后期做,因此設(shè)計(jì)時(shí)也要考慮產(chǎn)品未來的擴(kuò)展性。

4. 邏輯流程

  • 邏輯流程,整個(gè)產(chǎn)品的邏輯、內(nèi)部流程;
  • 用戶路徑,描述用戶在產(chǎn)品內(nèi)部的路徑。

5. 競(jìng)品分析

和國(guó)內(nèi)外同類產(chǎn)品進(jìn)行比較分析,知己知彼。

競(jìng)品選擇,從兩個(gè)方向出發(fā):

  • 從產(chǎn)品類型出發(fā):比如我們需要設(shè)計(jì)的產(chǎn)品是財(cái)務(wù)類,選擇的方向也是同類財(cái)務(wù)類產(chǎn)品;
  • 從產(chǎn)品功能出發(fā):比如說財(cái)務(wù)產(chǎn)品中有著支付購(gòu)買的功能板塊,選擇的競(jìng)品也包括了購(gòu)物、生活類產(chǎn)品。

相關(guān)教程:《視覺設(shè)計(jì)師如何做競(jìng)品分析?來看這份超全面的指南!》

最后,比起產(chǎn)品經(jīng)理來說,設(shè)計(jì)師在這個(gè)階段能獲三個(gè)信息:

  • 自己需要完成什么;
  • 要做到什么程度;
  • 擴(kuò)展性的考慮,可以在設(shè)計(jì)時(shí)預(yù)留位置。

文檔整理工具

語(yǔ)雀:https://www.yuque.com


藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。


UI 工作流程指南:需求分析

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

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

完整的 UI 設(shè)計(jì)流程到底是怎樣的?從需求到產(chǎn)品上線,要經(jīng)歷多少個(gè)階段,每個(gè)階段有哪些應(yīng)該掌握的基礎(chǔ)知識(shí),本次優(yōu)設(shè)獨(dú)家專題為你從零開始梳理出 UI 工作流程,適合新手閱讀學(xué)習(xí)。

本篇工作流程第一節(jié):需求分析。

UI 設(shè)計(jì)工作,包括 APP 設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、小程序設(shè)計(jì)等方面。而一個(gè)產(chǎn)品完整的 UI 設(shè)計(jì)流程,是指拿到一個(gè)新的項(xiàng)目需求后,從設(shè)計(jì)思考開始,產(chǎn)品前期分析,設(shè)計(jì)產(chǎn)品,設(shè)計(jì)評(píng)審,用戶測(cè)試,直至產(chǎn)品上線。

我們的工作流程如下:

以上的流程都是與設(shè)計(jì)師密切相關(guān)的內(nèi)容,我們的關(guān)注點(diǎn)不能只有視覺效果,孤立的設(shè)計(jì)容易脫離產(chǎn)品,反復(fù)修改,因此前期分析與后期支持都值得我們重視。

產(chǎn)品立項(xiàng)后的第一階段是需求分析階段,當(dāng)我們拿到一個(gè)新的需求時(shí),首先要了解的就是產(chǎn)品的需求是什么,了解市場(chǎng)背景、產(chǎn)品定位、概念,客戶的需求是什么。

一般來說,我們接到的需求分為三類:全新產(chǎn)品、現(xiàn)有產(chǎn)品新增功能、產(chǎn)品改版。

需求文檔類型

前期分析階段中,需求方主要是與產(chǎn)品經(jīng)理進(jìn)行溝通,產(chǎn)出文檔有三種:

  • BRD文檔(Business Requirement Document):商業(yè)需求文檔,基于商業(yè)目標(biāo)或價(jià)值所描述的產(chǎn)品需求內(nèi)容文檔(報(bào)告)。
  • MRD文檔(Market Requirement Document):市場(chǎng)需求文檔,該文檔在產(chǎn)品項(xiàng)目過程中屬于「過程性」文檔,由產(chǎn)品經(jīng)理或者市場(chǎng)經(jīng)理編寫的一個(gè)產(chǎn)品說明需求的文檔。
  • PRD文檔(Product Requirement Document):產(chǎn)品需求文檔是將商業(yè)需求文檔(BRD)和市場(chǎng)需求文檔(MRD)用更加專業(yè)的語(yǔ)言進(jìn)行描述。

分析類網(wǎng)站推薦

產(chǎn)品分析緯度

有了數(shù)據(jù)參考來源后,我們就能從五個(gè)緯度分析產(chǎn)品。

1. 產(chǎn)品分析

市場(chǎng)背景、產(chǎn)品業(yè)務(wù)、現(xiàn)有產(chǎn)品各項(xiàng)數(shù)據(jù)。

2. 用戶畫像

  • 顯性畫像:即用戶群體的可視化的特征描述。如目標(biāo)用戶的年齡、性別、職業(yè)、地域、興趣愛好等特征。
  • 隱性畫像:用戶內(nèi)在的深層次的特征描述。包含了用戶的產(chǎn)品使用目的、用戶偏好、用戶需求、產(chǎn)品的使用場(chǎng)景、產(chǎn)品的使用頻次等。

3. 需求確認(rèn)

產(chǎn)品需求主要是為了滿足用戶或企業(yè)價(jià)值,所以一定要確認(rèn)重要且緊要的需求內(nèi)容是什么,什么功能和內(nèi)容暫時(shí)不需要做,什么功能和內(nèi)容放在后期做,因此設(shè)計(jì)時(shí)也要考慮產(chǎn)品未來的擴(kuò)展性。

4. 邏輯流程

  • 邏輯流程,整個(gè)產(chǎn)品的邏輯、內(nèi)部流程;
  • 用戶路徑,描述用戶在產(chǎn)品內(nèi)部的路徑。

5. 競(jìng)品分析

和國(guó)內(nèi)外同類產(chǎn)品進(jìn)行比較分析,知己知彼。

競(jìng)品選擇,從兩個(gè)方向出發(fā):

  • 從產(chǎn)品類型出發(fā):比如我們需要設(shè)計(jì)的產(chǎn)品是財(cái)務(wù)類,選擇的方向也是同類財(cái)務(wù)類產(chǎn)品;
  • 從產(chǎn)品功能出發(fā):比如說財(cái)務(wù)產(chǎn)品中有著支付購(gòu)買的功能板塊,選擇的競(jìng)品也包括了購(gòu)物、生活類產(chǎn)品。

相關(guān)教程:《視覺設(shè)計(jì)師如何做競(jìng)品分析?來看這份超全面的指南!》

最后,比起產(chǎn)品經(jīng)理來說,設(shè)計(jì)師在這個(gè)階段能獲三個(gè)信息:

  • 自己需要完成什么;
  • 要做到什么程度;
  • 擴(kuò)展性的考慮,可以在設(shè)計(jì)時(shí)預(yù)留位置。

文檔整理工具

語(yǔ)雀:https://www.yuque.com

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。

產(chǎn)品設(shè)計(jì)之「取消按鈕」的使用詳解 | 細(xì)節(jié)分析

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


如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

通過對(duì)「取消按鈕」的分析,指導(dǎo)各位正確的進(jìn)行對(duì)于「按鈕」的設(shè)計(jì)。


按鈕,無論是在 Web 還是 App 上都被廣泛地使用,而很少有設(shè)計(jì)師會(huì)注意到按鈕當(dāng)中的細(xì)節(jié),導(dǎo)致在設(shè)計(jì)過程中出現(xiàn)一些低級(jí)的錯(cuò)誤,使得用戶在完成任務(wù)的過程中產(chǎn)生阻礙,無法順利達(dá)成目的。


在許多優(yōu)秀的產(chǎn)品中,關(guān)于按鈕的設(shè)計(jì)已經(jīng)有了一套相應(yīng)的規(guī)范去執(zhí)行。作為設(shè)計(jì)師,應(yīng)該總結(jié)這些規(guī)范,并產(chǎn)出一套適用于自家產(chǎn)品的設(shè)計(jì)規(guī)則。這也是我寫「按鈕規(guī)范」系列文章的目的。


今天主要先與各位聊聊「取消按鈕」的設(shè)計(jì)思路。


關(guān)于「取消」,大多數(shù)人對(duì)其理解還停留在 PC 端,認(rèn)為「取消」的目的就是讓用戶停止操作上的流程。但時(shí)至今日,「取消按鈕」的設(shè)計(jì)已經(jīng)有許多解法與思路,如果不仔細(xì)研究與分析,可能會(huì)忽略一些用戶行為上的細(xì)節(jié)。


所以我們從下面三個(gè)大點(diǎn)來聊聊「取消按鈕」的設(shè)計(jì):

  1. 按鈕中的「召喚行為」(理清按鈕設(shè)計(jì)的概念)

  2. 其背后的控制權(quán)(關(guān)于按鈕的權(quán)重信息)

  3. 「取消按鈕」的正確解法(重點(diǎn))



按鈕中的「召喚行為」


通常,我們?cè)诋a(chǎn)品中會(huì)為了達(dá)成某種指標(biāo),需要在界面上引導(dǎo)用戶去完成我們希望其完成的操作。且這類操作是可以達(dá)成某種目的的,我們把這類操作稱為「召喚行為」,即從元素的角度引導(dǎo)用戶完成任務(wù)。


這類「召喚行為」最常出現(xiàn)的,是在按鈕設(shè)計(jì)的過程中。


用戶如何將元素理解為按鈕?就是通過對(duì)形狀和顏色的控制,使該元素看起來像一個(gè)按鈕。



它唯一的作用就是讓用戶點(diǎn)擊,并且是主動(dòng)讓用戶點(diǎn)擊。

我們經(jīng)常在各類設(shè)計(jì)中見到這樣的按鈕設(shè)計(jì),或許還有更多樣式,如:



它們的目的一致,都是召喚用戶進(jìn)行點(diǎn)擊,至于類型的選擇一般根據(jù)功能界面的上下文情況進(jìn)行判斷。


其重要程度也是以此順序排列:凸起 > 扁平 > 邊框 > 文本。


這類設(shè)計(jì)的結(jié)果就是:無需讓用戶思考要點(diǎn)哪里,而是直接判斷下一步是否進(jìn)行。幫助用戶簡(jiǎn)化一個(gè)思考點(diǎn)。


注:因?yàn)榕袛嗍欠襁M(jìn)行的操作還取決于功能本身以及文案的提示,與我們今天要聊的不是一回事。所以我們跳過這塊,直接聊「召喚行為」與「取消按鈕」的關(guān)系。


這段內(nèi)容各位只要記?。?strong style="outline:0px;margin:0px;padding:0px;">按鈕的行進(jìn)與回退,基本遵循「召喚行為」的思路來設(shè)計(jì)。


這個(gè)概念知道了,我們就可以對(duì)后面的內(nèi)容繼續(xù)進(jìn)行拆解了。



背后的控制權(quán)


接下來我們從多個(gè)角度來挖一下「取消按鈕」的設(shè)計(jì),分析其不同地位。


a. 安全性后退


「取消」在多數(shù)情況下,意為安全性地后退,并將界面恢復(fù)到原有的內(nèi)容上,不對(duì)界面與功能本身造成破壞,防止對(duì)系統(tǒng)進(jìn)行不必要地更改的「安全措施」。


所以正常來說,「取消按鈕」不是「召喚行為」。以至于通常在設(shè)計(jì)上會(huì)被弱化,以表示該按鈕在功能的流程中,不是主要的,且是提供給用戶作為回退余地的操作。


如:



在這張圖里,「登錄」是「召喚行為」,所以突出顯示。根據(jù)風(fēng)格定義,用了扁平按鈕。而取消在這個(gè)場(chǎng)景里屬于「安全性后退」的操作,于是將其弱化。


這是多數(shù)產(chǎn)品采用的設(shè)計(jì)方式。


比如美團(tuán)的這個(gè)頁(yè)面:



產(chǎn)品希望用戶登錄,就會(huì)強(qiáng)化「登錄」行為的按鈕,弱化「回退」行為的按鈕。


同樣,我們?cè)谖⑿排笥讶Φ脑O(shè)計(jì)里也能見到這樣的設(shè)計(jì):



我們總是希望用戶持續(xù)操作下去,但也要給用戶提供回退的行為,所以在這些設(shè)計(jì)中,「取消按鈕」會(huì)被弱化,「行進(jìn)按鈕」會(huì)被強(qiáng)化,因?yàn)椤溉∠粹o」在這里不是產(chǎn)品人員期望的「召喚行為」。


這是一直以來的設(shè)計(jì)共識(shí),但如今也發(fā)生了些許變化?!溉∠粹o」也開始具備「召喚行為」的屬性。


b. 強(qiáng)化「取消按鈕」


當(dāng)我們不希望用戶退出某個(gè)界面,或停止某個(gè)流程時(shí),往往會(huì)選擇將「取消按鈕」強(qiáng)化。


如:



或:



通過對(duì)字體的加粗,以暗示用戶不要輕易退出。在這個(gè)流程里,「取消按鈕」具備了「召喚行為」屬性。


也有產(chǎn)品通過改變「取消按鈕」的文案,讓其具備「召喚行為」的屬性,使得用戶在此過程中輕易不要退出該流程:



這里的「繼續(xù)選座」就是「取消」,因?yàn)檫@里的「取消」成了「召喚行為」,所以通過改變文案的方式,確保用戶留下來繼續(xù)進(jìn)行流程中的任務(wù)。


但是不可取的是,這里的「返回」反而給了用戶一種需要思考的壓力。返回?是留在這里,還是退出去?思考幾秒后,反應(yīng)過來,是退出去。這樣的文案與只有在看到「繼續(xù)選座」后進(jìn)行對(duì)比,才能反應(yīng)過來具體是什么意思,除非是用戶具備操作習(xí)慣,知道「右邊」是「行進(jìn)」操作,才能很快理解。(當(dāng)然還有個(gè)問題,我們?cè)诘谌髂K來說明)


但是多數(shù)用戶還是得思考一下,所以要改,最好兩者文案都能改了,否則思考的「停頓」會(huì)讓用戶產(chǎn)生厭惡感。


且在一些產(chǎn)品界面里,為了避免用戶在流程中終止行為,甚至?xí)D(zhuǎn)移「取消」與「行進(jìn)」兩者的位置,如:



之前截圖了某個(gè)產(chǎn)品的界面,寫文這天發(fā)現(xiàn)已經(jīng)改回來,這里就沒放了。


各位謹(jǐn)記,最好不要這樣進(jìn)行設(shè)計(jì),因?yàn)橛脩粼?App 的操作上已經(jīng)習(xí)慣左邊取消,右邊行進(jìn),調(diào)換位置雖然能暫時(shí)解決用戶的退出行為,但容易產(chǎn)生誤操作,與用戶的期望不同,導(dǎo)致在產(chǎn)品體驗(yàn)上會(huì)被用戶排斥。


所以到這里,先給一個(gè)結(jié)論,即在 App 的設(shè)計(jì)上,行進(jìn)操作在右,回退操作在左,召喚屬性根據(jù)場(chǎng)景對(duì)按鈕做突出處理。


但是「取消按鈕」真的應(yīng)該具備召喚屬性么?不著急,我們第三模塊再細(xì)聊。下面我們先聊聊 Web 與 App 的之間的差異。


c. Web 與 App 的位置差異


我們現(xiàn)在見到越來越多的 Web 端產(chǎn)品,也開始遵循 App 產(chǎn)品的設(shè)計(jì),把「取消按鈕」放在左邊,「召喚行為」按鈕放在右邊。


但在早期,Web 的「取消按鈕」基本是放在右邊,原因是鼠標(biāo)的移動(dòng)路徑是根據(jù)眼動(dòng)規(guī)則來,我們的視線會(huì)首先與文案聚焦到「召喚行為」的按鈕上,也就是左邊,這時(shí)候鼠標(biāo)輕而易舉地隨之而來。


而手指行為的操作,會(huì)以右為前進(jìn)導(dǎo)向,且右手手勢(shì)因?yàn)楸憬菪?,也?huì)以右為確認(rèn)操作。否則單手持機(jī),且行進(jìn)路徑長(zhǎng)的話,用戶想進(jìn)行確認(rèn)操作會(huì)相對(duì)比較吃力。



這就是 Web 與 App 在按鈕位置上的主要區(qū)別。


那會(huì)有同學(xué)問到說 Web 的「取消」到底是放在左邊還是右邊?這里我說點(diǎn)自己的想法。


如果根據(jù)眼動(dòng)規(guī)則與鼠標(biāo)的操作模式來說,Web 「取消按鈕」當(dāng)然是放在右邊更為合適。但如今人們已經(jīng)習(xí)慣了移動(dòng)產(chǎn)品的「右行進(jìn),左取消」屬性,且在界面上的視覺終點(diǎn)一般是在右邊,能引導(dǎo)用戶進(jìn)行召喚行為。


但這不具備指導(dǎo)性原則,如果要拆開說,里面還有很多說法。


比如 windows 和 macOS 的設(shè)計(jì)規(guī)范里「取消按鈕」的位置完全是相反的。win 的取消在右,macOS 的取消在左。



兩套體系的按鈕位置相互矛盾。這件事本身也說明,只要你在你的 Web 產(chǎn)品里規(guī)范好自己的設(shè)計(jì)體系,就沒有對(duì)錯(cuò)之分。不要一會(huì)兒這個(gè)「取消」在左邊,一會(huì)兒那個(gè)「取消」又在右邊,給用戶造成認(rèn)知障礙即可。


但是!我更推崇 macOS 的設(shè)計(jì)規(guī)范。原因在于成熟度與一致性。


主觀因素:眾所周知,蘋果是更擅長(zhǎng)做設(shè)計(jì)的公司,體驗(yàn)過 Mac 的朋友應(yīng)該能理解我說的這句話。一般來說,我只聽過從 Win 切換到 Mac 的,沒有說從 Mac 切換到 Win 的,除了少部分因?yàn)楣ぷ餍枨笮枰绞褂玫摹?


客觀因素:移動(dòng)產(chǎn)品的普及,已經(jīng)有相當(dāng)成熟的設(shè)計(jì)體系支持行進(jìn)按鈕右側(cè)化設(shè)計(jì),統(tǒng)一 Web 或 PC 產(chǎn)品只會(huì)讓用戶的操作行為更方便。


這就是我本小節(jié)想聊的,關(guān)于 Web 與 App 按鈕設(shè)計(jì)的差異。



「取消按鈕」的正確解法


我相信,只要是平時(shí)稍微有認(rèn)真觀察的同學(xué),都能知道我上述聊的內(nèi)容。我個(gè)人也不認(rèn)為這些內(nèi)容具備任何需要總結(jié)的價(jià)值。但是如果不寫出來,就沒辦法說明我接下來要聊的內(nèi)容,也是我這篇文章的重點(diǎn)部分。


通過上述內(nèi)容,我以不同類型的按鈕案例來解釋「取消按鈕」的控制權(quán)。各位可以看出,即使是不同類型的「取消按鈕」,在權(quán)重上的道理也都是一樣的。


但我上面舉的所有產(chǎn)品功能的例子,都不是最佳設(shè)計(jì)方案,包括微信。


那如何設(shè)計(jì)才是最佳方式呢?取消按鈕真的具備召喚行為?


a. 界面層與彈框?qū)?/strong>


其實(shí)嚴(yán)謹(jǐn)點(diǎn)來說,界面層的「取消按鈕」與彈框?qū)拥摹溉∠粹o」的意義是不同的。


雖然都是安全性后退,但是前者多了一層含義:放棄屬性。


還是微信朋友圈的界面:



這里的「取消按鈕」有兩個(gè)狀態(tài),一是用戶剛點(diǎn)進(jìn)來,無任何操作,點(diǎn)擊取消,解散該頁(yè)面;二是進(jìn)來之后,附帶操作行為,這時(shí)候點(diǎn)擊取消,不僅僅是解散當(dāng)前頁(yè)面,還包括「放棄當(dāng)前編輯的狀態(tài)」。


所以會(huì)彈出第二層彈窗:



這時(shí)候無論點(diǎn)擊「保留」還是「不保留」都是取消,退出當(dāng)前編輯頁(yè)面,不對(duì)系統(tǒng)產(chǎn)生變更行為,但都屬于放棄了當(dāng)前操作。

無非就是微信通過加粗「保留」來告訴用戶,這里的召喚行為是它而已。


所以這層「取消」的含義,不僅僅是取消,還多了一步是否把你放棄的內(nèi)容保留下來的邏輯。


因此在這層含義上,「取消按鈕」也需要特殊處理。


如果說微信這里的「取消按鈕」在設(shè)計(jì)上沒有突出其特殊性,那 Twitter 同樣的例子,就比微信高明很多:



同樣是發(fā)布行為,Twitter 在「取消按鈕」上選用了品牌色。因?yàn)樵谄渚庉嫚顟B(tài)下點(diǎn)擊取消,會(huì)出現(xiàn)與微信同樣的情況:




而 Twitter 的高明之處不僅僅在其對(duì)于「取消按鈕」的樣式處理,還在于其對(duì)是否「保留」做了明確的設(shè)計(jì)區(qū)分:微信的保留等于 Twitter 的保存草稿,不保留等于刪除。而在通用型設(shè)計(jì)規(guī)范里,刪除內(nèi)容在樣式上應(yīng)該區(qū)別于發(fā)布以及取消。


更甚者是,其彈出的這個(gè)彈框中,還保留了真正意義上的「取消」,即解散行為。在 Twitter 的這個(gè)設(shè)計(jì)上,兩個(gè)取消雖然都叫取消,但是通過顏色進(jìn)行區(qū)分,來表示它們之間在邏輯上的差異,這才是我說的高明之處 —— 對(duì)每個(gè)按鈕的處理都恰到好處。


類似的還有微博,但是微博對(duì)于「取消按鈕」的類型差異沒有做出區(qū)分,原因在于它為了弱化界面層的取消,與彈框?qū)拥娜∠麡邮奖3至艘恢隆?



雖然沒什么太大問題,但從嚴(yán)格的邏輯上來說,這兩者取消是存在歧義的。只是用戶已經(jīng)習(xí)慣且理解了,所以沒要造成使用的負(fù)擔(dān)。


微信的彈框雖然避免了這層歧義,但在操作上還是不夠直觀,我每次發(fā)微信朋友圈,點(diǎn)取消彈出「保留」與「不保留」我都要停頓一下謹(jǐn)慎地進(jìn)行選擇,生怕自己點(diǎn)錯(cuò)。


當(dāng)然,這里面還有關(guān)于顏色的說法。


這時(shí)候再對(duì)比 Twitter 的界面就能看出設(shè)計(jì)師之間的差距了。


b. 彈框?qū)印溉∠诡伾牟町?/strong>


上面提到的許多例子中,還存在一個(gè)類似的問題:它們大多選用 iOS 自帶的彈框直接做為操作對(duì)象。


我始終覺得在 iOS 提供的彈框中,兩個(gè)操作的按鈕顏色保持一致是不對(duì)的。


粗細(xì)有時(shí)候很難被直觀感受,而顏色可以在第一時(shí)間被感知。


比如前面提到的這個(gè)案例:



理想情況下,即使用戶知道右邊是行進(jìn),左邊是取消,但彈出這個(gè)彈框的時(shí)候,不免還是需要再次閱讀一遍進(jìn)行確認(rèn)。


但如果改個(gè)顏色,好像就更好理解(當(dāng)然文案也是問題,但優(yōu)先級(jí)弱于顏色),畢竟彈框也是設(shè)計(jì)的一部分:



需要注意的是,用戶既然已經(jīng)選擇取消,就盡量明確的告知用戶,不要為了留存而留存,以至于模糊化該彈窗的選擇結(jié)果。

所以召喚行為,并不是強(qiáng)迫用戶去做,而是遵循用戶的「旨意」去提供選擇。這里的「返回」才是真正的召喚行為,而「取消」并不具備召喚屬性。硬生生的給「取消」附上召喚屬性,只會(huì)讓用戶在操作時(shí)摸不著頭腦。


包括下圖,我常常因?yàn)樵谑褂?App 時(shí),彈出這樣的彈框,而不能在第一時(shí)間進(jìn)行正確的點(diǎn)擊,選擇退出當(dāng)前的 App。



這樣例子還有很多。


但是我覺得做得好的,應(yīng)該是這樣的:



或:



這就是刻板印象造成的結(jié)果。我們應(yīng)該學(xué)會(huì)適當(dāng)?shù)厥褂每丶?,并根?jù)自己的產(chǎn)品對(duì)其進(jìn)行優(yōu)化。而不是一味跟風(fēng)。


綜上所述:界面層的取消,為了表示其作用性的不同,且界面元素眾多,突出顏色是沒問題的;但彈框?qū)拥娜∠c確認(rèn)在顏色上沒做區(qū)分,直接用不太明顯的粗細(xì)效果讓用戶聚焦于這兩個(gè)內(nèi)容的選擇上,其實(shí)是不友好的設(shè)計(jì)。


如果對(duì) iOS 設(shè)計(jì)規(guī)范有足夠的了解的同學(xué)就能知道:它們?cè)趶椏蚩丶辖o出的兩個(gè)選擇都不是真正意義上的召喚行為按鈕,只是常規(guī)內(nèi)容,且更適用于產(chǎn)品開發(fā),而不是設(shè)計(jì)指導(dǎo)。


如果你仔細(xì)觀察 macOS 的設(shè)計(jì),就能發(fā)現(xiàn)他們?yōu)榫邆湔賳拘袨榈陌粹o位置與顏色都做了特殊處理,并不是簡(jiǎn)單的同色系,或用粗細(xì)表示。如圖:



雖然用 macOS 來反駁 iOS 似乎不太合理,但我只是想說明在設(shè)計(jì)結(jié)果上,我們應(yīng)該有自己的思考。


就這個(gè)問題,我在 Twitter 上咨詢了前 Apple,后創(chuàng)辦了 UXM 的產(chǎn)品設(shè)計(jì)師 Anthony。原因是,他曾經(jīng)也就「取消按鈕」的顏色提出過一些個(gè)人看法。


在我說了這些內(nèi)容之后,他跟我說的第一句話是:

Hi Dai — While Apple is very good at design, they are not perfect.(Apple 非常擅長(zhǎng)設(shè)計(jì),但它們并不完美。) 

接著他繼續(xù)說道:你這套理論非常棒,所以你完全可以按它去給自己的產(chǎn)品構(gòu)建一套設(shè)計(jì)規(guī)范,并不一定要遵循 Apple。


借著這個(gè)機(jī)會(huì),我還跟他聊了許多其他內(nèi)容。而這件事本身再一次驗(yàn)證了我的想法:越牛逼的人越謙虛,且平易近人。


哦,不是,跑題了,應(yīng)該是:不存在完美的設(shè)計(jì)規(guī)范,設(shè)計(jì)師在成長(zhǎng)過程中并不一定要循規(guī)蹈矩,受到規(guī)則的限制,認(rèn)為設(shè)計(jì)就該如此。而是學(xué)會(huì)獨(dú)立思考,突破屏障,去挖掘更深層次的內(nèi)容。


看完這篇文章,再去翻一翻 Google Material Design Guidelines,就會(huì)有一種「哇哦!原來如此!」的感觸了。



小結(jié)


所以我這篇文章的內(nèi)容結(jié)論是:

  1. 位置固定,左回退,右行進(jìn);

  2. 顏色區(qū)分,左淺色,右深色;

  3. 召喚行為不是用戶想做的事,而是我們應(yīng)該要讓用戶做的事,但不是強(qiáng)迫,所以正常情況下,「取消按鈕」通常不具備召喚屬性。


可能有人會(huì)覺得,這么一個(gè)小問題,不至于用這么長(zhǎng)一篇文章來說明,不過人么,就是存在這樣那樣的區(qū)別。我認(rèn)為需要就可以了。


本來這篇文章還有一段關(guān)于「手勢(shì)按鈕尺寸」的內(nèi)容,不過到目前為止,文章內(nèi)容太長(zhǎng)了,所以我暫時(shí)去掉了,會(huì)在之后的文章里分享給大家。


當(dāng)然,到此為止,我聊的內(nèi)容基本適用于通用場(chǎng)景,且適用于大部分的產(chǎn)品設(shè)計(jì),但在一些特殊場(chǎng)景下的按鈕位置、顏色,也會(huì)有不同設(shè)計(jì)方式,這就要根據(jù)具體問題來具體分析。


我這里只是把「取消按鈕」的設(shè)計(jì)差異、細(xì)節(jié)提供給大家,以便幫助各位在工作中有更深入的思考,而不是想當(dāng)然的說就是放左邊或右邊,或者就應(yīng)該是什么顏色等等。包括對(duì)待其他內(nèi)容也一樣。

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。


vue 移動(dòng)端彈出鍵盤導(dǎo)致頁(yè)面fixed布局錯(cuò)亂

seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

話不多說,直接上問題圖片


這里確認(rèn)按鈕是fixed布局 bottom:0 彈出鍵盤之后按鈕被頂?shù)搅随I盤上面

網(wǎng)上搜到的解決方案有兩種,

一種是監(jiān)聽頁(yè)面高度(我采用的這種)

一種是監(jiān)聽軟鍵盤事件(ios和安卓實(shí)現(xiàn)方式不同,未采用)

下面是實(shí)現(xiàn)代碼

data() {
    return {
        docmHeight: document.documentElement.clientHeight ||document.body.clientHeight,
        showHeight: document.documentElement.clientHeight ||document.body.clientHeight,
        hideshow:true  //顯示或者隱藏footer
    }
  },
watch: {
        //監(jiān)聽顯示高度
      showHeight:function() {
          if(this.docmHeight > this.showHeight){
            //隱藏
              this.hideshow=false
          }else{
            //顯示
              this.hideshow=true
          }
      }
  },
mounted() {
      //監(jiān)聽事件
      window.onresize = ()=>{
          return(()=>{
              this.showHeight = document.documentElement.clientHeight || document.body.clientHeight;
      })()
      }
 
  },
<div class="bottom" v-show="hideshow">
    <div class="btn">
      確認(rèn)操作
    </div>
  </div>
我這里使用的是方法是:當(dāng)鍵盤彈出時(shí),將按鈕隱藏。如果必須出現(xiàn)按鈕的話,可以修改按鈕回歸到正常的流中。
藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)

【Vue原理】Watch - 白話版

seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

【Vue原理】Watch - 白話版
簡(jiǎn)述 響應(yīng)式
監(jiān)聽的數(shù)據(jù)改變的時(shí),watch 如何工作
設(shè)置 immediate 時(shí),watch 如何工作
設(shè)置了 deep 時(shí), watch 如何工作
舉栗子
結(jié)論
沒有設(shè)置 deep
設(shè)置了 deep
實(shí)際證明
專注 Vue 源碼分享,為了方便大家理解,分為了白話版和 源碼版,白話版可以輕松理解工作原理和設(shè)計(jì)思想,源碼版可以更清楚內(nèi)部操作和 Vue的美,喜歡我就關(guān)注我的公眾號(hào),公眾號(hào)的文章,排版更好看

如果你覺得排版難看,請(qǐng)點(diǎn)擊下面公眾號(hào)鏈接

【Vue原理】Watch - 白話版


今天我們用白話文解讀 watch 的工作原理,輕松快速理解 watch 內(nèi)部工作原理。你說,你只懂怎么用的,卻不懂他內(nèi)部是怎么工作的,這樣能有什么用?

近期有篇 《停止學(xué)習(xí)框架》很火,其實(shí)本意不是讓我們不要學(xué)框架,而是讓我們不要只停留在框架表面,我們要學(xué)會(huì)深入,以一敵十,讓我們也要學(xué)會(huì)框架的抽象能力

watch 想必大家用得應(yīng)該也挺多的,用得也很順,如果你順便花一點(diǎn)點(diǎn)時(shí)間了解一下內(nèi)部的工作原理,相信肯定會(huì)對(duì)你的工作有事半功倍的效果

watch 的工作原理其實(shí)挺簡(jiǎn)單的,如果你有看過我之前講解其他選項(xiàng)的文章,你可以一下子就明白 watch 是如何工作的,所以這邊文章我也?得很快

根據(jù) watch 的 api,我們需要了解三個(gè)地方

1、監(jiān)聽的數(shù)據(jù)改變的時(shí),watch 如何工作

2、設(shè)置 immediate 時(shí),watch 如何工作

3、設(shè)置了 deep 時(shí),watch 如何工作



簡(jiǎn)述 響應(yīng)式
Vue 會(huì)把數(shù)據(jù)設(shè)置響應(yīng)式,既是設(shè)置他的 get 和 set

當(dāng) 數(shù)據(jù)被讀取,get 被觸發(fā),然后收集到讀取他的東西,保存到依賴收集器

當(dāng) 數(shù)據(jù)被改變,set 被觸發(fā),然后通知曾經(jīng)讀取他的東西進(jìn)行更新

如果你不了解,可以查看下 以前的文章

【Vue原理】響應(yīng)式原理 - 白話版



監(jiān)聽的數(shù)據(jù)改變的時(shí),watch 如何工作
watch 在一開始初始化的時(shí)候,會(huì) 讀取 一遍 監(jiān)聽的數(shù)據(jù)的值,于是,此時(shí) 那個(gè)數(shù)據(jù)就收集到 watch 的 watcher 了

然后 你給 watch 設(shè)置的 handler ,watch 會(huì)放入 watcher 的更新函數(shù)中

當(dāng) 數(shù)據(jù)改變時(shí),通知 watch 的 watcher 進(jìn)行更新,于是 你設(shè)置的 handler 就被調(diào)用了



設(shè)置 immediate 時(shí),watch 如何工作
當(dāng)你設(shè)置了 immediate 時(shí),就不需要在 數(shù)據(jù)改變的時(shí)候 才會(huì)觸發(fā)。

而是在 初始化 watch 時(shí),在讀取了 監(jiān)聽的數(shù)據(jù)的值 之后,便立即調(diào)用一遍你設(shè)置的監(jiān)聽回調(diào),然后傳入剛讀取的值



設(shè)置了 deep 時(shí), watch 如何工作
我們都知道 watch 有一個(gè) deep 選項(xiàng),是用來深度監(jiān)聽的。什么是深度監(jiān)聽呢?就是當(dāng)你監(jiān)聽的屬性的值是一個(gè)對(duì)象的時(shí)候,如果你沒有設(shè)置深度監(jiān)聽,當(dāng)對(duì)象內(nèi)部變化時(shí),你監(jiān)聽的回調(diào)是不會(huì)被觸發(fā)的

在說明這個(gè)之前,請(qǐng)大家先了解一下

當(dāng)你使用 Object.defineProperty 給 【值是對(duì)象的屬性】 設(shè)置 set 和 get 的時(shí)候

1如果你直接改變或讀取這個(gè)屬性 ( 直接賦值 ),可以觸發(fā)這個(gè)屬性的設(shè)置的 set 和 get

2但是你改變或讀取它內(nèi)部的屬性,get 和 set 不會(huì)被觸發(fā)的

舉栗子
var inner = { first:1111 }
var test={    name:inner  }

Object.defineProperty(test,"name",{
    get(){         
        console.log("name get被觸發(fā)")         
        return inner
    },
    set(){        
        console.log("name set被觸發(fā)")
    }
})

// 訪問 test.name 第一次,觸發(fā) name 的 get
Object.defineProperty(test.name,"first",{
    get(){        
        return console.log("first get被觸發(fā)")
    },
    set(){        
        console.log("first set被觸發(fā)")
    }
})

// 訪問 test.name 第二次,觸發(fā) name 的 get
var a = test.name
// 獨(dú)立訪問 first 第一次
var b= a.first 
// 獨(dú)立訪問 first 第二次
b= a.first
// 獨(dú)立改變 first
a.first = 5


能看到除了有兩次需要訪問到 name,必不可少會(huì)觸發(fā)到 name 的 get

之后,當(dāng)我們獨(dú)立訪問 name 內(nèi)部的 first 的時(shí),只會(huì)觸發(fā) first 的 get 函數(shù),而 name 設(shè)置的 get 并不會(huì)被觸發(fā)

結(jié)論
看上面的例子后,所以當(dāng)你的 data 屬性值是對(duì)象,比如下面的 info

data(){    

    return {        

        info:{ name:1 }

    }

}


此時(shí),Vue在設(shè)置響應(yīng)式數(shù)據(jù)的時(shí)候, 遇到值是對(duì)象的,會(huì)遞歸遍歷,把對(duì)象內(nèi)所有的屬性都設(shè)置為響應(yīng)式,就是每個(gè)屬性都設(shè)置 get 和 set,于是每個(gè)屬性都有自己的一個(gè)依賴收集器

首先,再次說明,watch初始化的時(shí)候,會(huì)先讀取一遍監(jiān)聽數(shù)據(jù)的值

沒有設(shè)置 deep
1、因?yàn)樽x取了監(jiān)聽的 data 的屬性,watch 的 watcher 被收集在 這個(gè)屬性的 收集器中

設(shè)置了 deep
1、因?yàn)樽x取了監(jiān)聽的data 的屬性,watch 的 watcher 被收集在 這個(gè)屬性的 收集器中

2、在讀取 data 屬性的時(shí)候,發(fā)現(xiàn)設(shè)置了 deep 而且值是一個(gè)對(duì)象,會(huì)遞歸遍歷這個(gè)值,把內(nèi)部所有屬性逐個(gè)讀取一遍,于是 屬性和 它的對(duì)象值內(nèi)每一個(gè)屬性 都會(huì)收集到 watch 的 watcher

于是,無論對(duì)象嵌套多深的屬性,只要改變了,會(huì)通知 相應(yīng)的 watch 的 watcher 去更新,于是 你設(shè)置的 watch 回調(diào)就被觸發(fā)了

實(shí)際證明
證明 watch 的 watcher 深度監(jiān)聽時(shí)是否被內(nèi)部每個(gè)屬性都收集

我在 Vue 內(nèi)部給 watch 的 watcher 加了一個(gè) 屬性,標(biāo)識(shí)他是 watch 的 watcher,并且去掉了多余的屬性,為了截圖短一點(diǎn)
藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。

FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)

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

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

Fucking Young(簡(jiǎn)稱 FY) 是一家專注于男性半球的年輕美學(xué),我們自由使用和支配模特及藝術(shù)家合作,從而幫助自己與合作方達(dá)到合理的業(yè)務(wù)需求,建立一個(gè)擁有創(chuàng)造力的社區(qū),贊助和發(fā)布這些驚艷的作品在我們的官網(wǎng)甚至手機(jī)產(chǎn)品上。

帶來的作品有FY品牌官網(wǎng)與移動(dòng)端設(shè)計(jì),展示部分界面與交互動(dòng)效,Gif輸出存在色差,實(shí)際情況以高保真視覺界面為準(zhǔn)。

FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)FY品牌官網(wǎng)/移動(dòng)端視覺設(shè)計(jì)

文章來源:UI中國(guó)

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(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ù)。

日歷

鏈接

個(gè)人資料

存檔