首頁(yè)

在Vue中創(chuàng)建可重用的 Transition

seo達(dá)人

原始transition組件和CSS

定義transition的最簡(jiǎn)單方法是使用transition·或transition-group 組件。這需要為transition定義一個(gè)name`和一些CSS。


<template>

 <div id="app">

   <button v-on:click="show = !show">

     Toggle

   </button>

   <transition name="fade">

     <p v-if="show">hello</p>

   </transition>

 </div>

</template>

<script>

export default {

 name: "App",

 data() {

   return {

     show: true

   };

 }

};

</script>

<style>

.fade-enter-active,

.fade-leave-active {

 transition: opacity 0.3s;

}

.fade-enter,

.fade-leave-to {

 opacity: 0;

}

</style>

圖片描述


看起來(lái)容易,對(duì)吧?然而,這種方法有一個(gè)問(wèn)題。我們不能在另一個(gè)項(xiàng)目中真正重用這個(gè)transition。


封裝transition組件

如果我們將前面的邏輯封裝到一個(gè)組件中,并將其用作一個(gè)組件,結(jié)果會(huì)怎樣呢?


// FadeTransition.vue

<template>

 <transition name="fade">

   <slot></slot>

 </transition>

</template>

<script>

export default {

 

};

</script>

<style>

.fade-enter-active,

.fade-leave-active {

 transition: opacity 0.3s;

}

.fade-enter,

.fade-leave-to {

 opacity: 0;

}

</style>


// App.vue


<template>

 <div id="app">

   <button v-on:click="show = !show">

     Toggle transition

   </button>

   <fade-transition>

     <div v-if="show" class="box"></div>

   </fade-transition>

 </div>

</template>

<script>...</script>

<style>...</style>

圖片描述


通過(guò)在transition組件中提供一個(gè)slot,我們幾乎可以像使用基本transition組件一樣使用它。這比前面的例子稍微好一點(diǎn),但是如果我們想要傳遞其他特定于transition的prop,比如mode或者一些hook,該怎么辦呢


封裝的包裝器transition組件

幸運(yùn)的是,Vue 中有一個(gè)功能,使我們可以將用戶指定的所有額外props和監(jiān)聽(tīng)器傳遞給我們的內(nèi)部標(biāo)簽/組件。 如果你還不知道,則可以通過(guò)$attrs訪問(wèn)額外傳遞的 props,并將它們與v-bind結(jié)合使用以將它們綁定為props。 這同樣適用于通過(guò)$listeners進(jìn)行的事件,并通過(guò)v-on對(duì)其進(jìn)行應(yīng)用。


// FadeTransition.vue


<template>

 <transition name="fade" v-bind="$attrs" v-on="$listeners">

   <slot></slot>

 </transition>

</template>

<script>

export default {};

</script>

<style>

.fade-enter-active,

.fade-leave-active {

 transition: opacity 0.3s;

}

.fade-enter,

.fade-leave-to {

 opacity: 0;

}

</style>


// App.vue


...


<fade-transition mode="out-in">

 <div key="blue" v-if="show" class="box"></div>

 <div key="red" v-else class="red-box"></div>

</fade-transition>


...

圖片描述


完整事例地址:https://codesandbox.io/s/yjl1...


現(xiàn)在,我們可以傳遞普通transition組件可以接受的任何事件和支持,這使得我們的組件更加可重用。但為什么不更進(jìn)一步,增加通過(guò) prop 輕松定制持續(xù)時(shí)間的可能性。


顯式持續(xù)時(shí)間 prop

Vue 為transition組件提供了一個(gè)duration prop,然而,它是為更復(fù)雜的動(dòng)畫(huà)鏈接而設(shè)計(jì)的,它幫助 Vue 正確地將它們鏈接在一起。


在我們的案例中,我們真正需要的是通過(guò)組件prop控制CSS animation/transition。 我們可以通過(guò)不在CSS中指定顯式的CSS動(dòng)畫(huà)持續(xù)時(shí)間,而是將其作為樣式來(lái)實(shí)現(xiàn)。 我們可以借助transition hook來(lái)做到這一點(diǎn),該transition hook與組件生命周期 hook 非常相似,但是它們?cè)谶^(guò)渡所需元素之前和之后被調(diào)用。 讓我們看看效果如何。


// FadeTransition.vue


<template>

 <transition name="fade"

             enter-active-class="fadeIn"

             leave-active-class="fadeOut"

             v-bind="$attrs"

             v-on="hooks">

     <slot></slot>

 </transition>

</template>

<script>

export default {

 props: {

   duration: {

     type: Number,

     default: 300

   }

 },

 computed: {

   hooks() {

     return {

       beforeEnter: this.setDuration,

       afterEnter: this.cleanUpDuration,

       beforeLeave: this.setDuration,

       afterLeave: this.cleanUpDuration,

       ...this.$listeners

     };

   }

 },

 methods: {

   setDuration(el) {

     el.style.animationDuration = `${this.duration}ms`;

   },

   cleanUpDuration(el) {

     el.style.animationDuration = "";

   }

 }

};

</script>

<style>

@keyframes fadeIn {

 from {

   opacity: 0;

 }

 to {

   opacity: 1;

 }

}

.fadeIn {

 animation-name: fadeIn;

}

@keyframes fadeOut {

 from {

   opacity: 1;

 }

 to {

   opacity: 0;

 }

}

.fadeOut {

 animation-name: fadeOut;

}

</style>

圖片描述


完整事例地址:https://codesandbox.io/s/j4qn...


現(xiàn)在,我們可以控制實(shí)際的可見(jiàn)過(guò)渡時(shí)間,這使我們可重用的過(guò)渡變得靈活且易于使用。 但是,如何過(guò)渡多個(gè)元素(如列表項(xiàng))呢?


Transition group 支持

你想到的最直接的方法可能是創(chuàng)建一個(gè)新組件,比如fade-transition-group,然后將當(dāng)前transition標(biāo)簽替換為transition-group標(biāo)簽,以實(shí)現(xiàn) group transition。如果我們可以在相同的組件中這樣做,并公開(kāi)一個(gè)將切換到transition-group實(shí)現(xiàn)的group prop,那會(huì)怎么樣呢?幸運(yùn)的是,我們可以通過(guò)render函數(shù)或component和is屬性來(lái)實(shí)現(xiàn)這一點(diǎn)。


// FadeTransition.vue


<template>

 <component :is="type"

            :tag="tag"

            enter-active-class="fadeIn"

            leave-active-class="fadeOut"

            move-class="fade-move"

            v-bind="$attrs"

            v-on="hooks">

     <slot></slot>

 </component>

</template>

<script>

export default {

 props: {

   duration: {

     type: Number,

     default: 300

   },

   group: {

     type: Boolean,

     default: false

   },

   tag: {

     type: String,

     default: "div"

   }

 },

 computed: {

   type() {

     return this.group ? "transition-group" : "transition";

   },

   hooks() {

     return {

       beforeEnter: this.setDuration,

       afterEnter: this.cleanUpDuration,

       beforeLeave: this.setDuration,

       afterLeave: this.cleanUpDuration,

       leave: this.setAbsolutePosition,

       ...this.$listeners

     };

   }

 },

 methods: {

   setDuration(el) {

     el.style.animationDuration = `${this.duration}ms`;

   },

   cleanUpDuration(el) {

     el.style.animationDuration = "";

   },

   setAbsolutePosition(el) {

     if (this.group) {

       el.style.position = "absolute";

     }

   }

 }

};

</script>

<style>

@keyframes fadeIn {

 from {

   opacity: 0;

 }

 to {

   opacity: 1;

 }

}

.fadeIn {

 animation-name: fadeIn;

}

@keyframes fadeOut {

 from {

   opacity: 1;

 }

 to {

   opacity: 0;

 }

}

.fadeOut {

 animation-name: fadeOut;

}

.fade-move {

 transition: transform 0.3s ease-out;

}

</style>


// App.vue


...


<div class="box-wrapper">

 <fade-transition group :duration="300">

   <div class="box"

        v-for="(item, index) in list"

        @click="remove(index)"

        :key="item"

    >

   </div>

 </fade-transition>

</div>


...

圖片描述


完整事例地址:https://codesandbox.io/s/pk9r...


文檔中介紹了一個(gè)帶有transition-group元素的警告。 我們基本上必須在元素離開(kāi)時(shí)將每個(gè)項(xiàng)目的定位設(shè)置為absolute,以實(shí)現(xiàn)其他項(xiàng)目的平滑移動(dòng)動(dòng)畫(huà)。 我們也必須添加一個(gè)move-class并手動(dòng)指定過(guò)渡持續(xù)時(shí)間,因?yàn)闆](méi)有用于移動(dòng)的 JS hook。我們將這些調(diào)整添加到我們的上一個(gè)示例中。


再做一些調(diào)整,通過(guò)在mixin中提取 JS 邏輯,我們可以將其應(yīng)用于輕松創(chuàng)建新的transition組件,只需將其放入下一個(gè)項(xiàng)目中即可。


Vue Transition

在此之前描述的所有內(nèi)容基本上都是這個(gè)小型 transition 集合所包含的內(nèi)容。它有 10 個(gè)封裝的transition組件,每個(gè)約1kb(縮小)。我認(rèn)為它非常方便,可以輕松地在不同的項(xiàng)目中使用。你可以試一試:)


總結(jié)

我們從一個(gè)基本的過(guò)渡示例開(kāi)始,并最終通過(guò)可調(diào)整的持續(xù)時(shí)間和transition-group支持來(lái)創(chuàng)建可重用的過(guò)渡組件。 我們可以使用這些技巧根據(jù)并根據(jù)自身的需求創(chuàng)建自己的過(guò)渡組件。 希望讀者從本文中學(xué)到了一些知識(shí),并且可以幫助你們建立功能更好的過(guò)渡組件。

用今日頭條的實(shí)戰(zhàn)復(fù)盤(pán),教你大廠都在用的「信息降噪」方法

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

PART 1 前言

今日頭條作為資訊閱讀類(lèi)產(chǎn)品,F(xiàn)eed流場(chǎng)景是資訊類(lèi)產(chǎn)品的核心場(chǎng)景之一,關(guān)于Feed流的改版嘗試一直在進(jìn)行,針對(duì)本次優(yōu)化,多次在線上進(jìn)行驗(yàn)證后,得到一個(gè)滿意的結(jié)果,也將我們關(guān)于「頭條首頁(yè)改版」運(yùn)用到的設(shè)計(jì)方法進(jìn)行分享。

觀點(diǎn)-實(shí)驗(yàn)-規(guī)則

項(xiàng)目前期提出設(shè)計(jì)論點(diǎn),通過(guò)方案和實(shí)驗(yàn)去驗(yàn)證可行性,最后結(jié)合案例形成符合當(dāng)前場(chǎng)景的設(shè)計(jì)規(guī)則,這也是本次設(shè)計(jì)探索所運(yùn)用到的論證方法。

PART 2 閱讀需求

1. 什么是閱讀需求?

一組信息通過(guò)不同的字號(hào)反差組合來(lái)滿足不同場(chǎng)景下的文字閱讀需求,這稱(chēng)之為閱讀需求,閱讀需求一般可以歸納為以下3種類(lèi)型:快速定位型、瀏覽型、閱讀型。

  • 快速定位型:主體內(nèi)容突出,反差比大,可快速檢索到需要的信息。
  • 瀏覽型:被檢索信息主次較為平均,字號(hào)反差比適中。
  • 閱讀型:無(wú)特殊強(qiáng)調(diào)內(nèi)容,需要用戶沉浸式閱讀,字號(hào)反差比較小。

△ 三種閱讀需求

2. 今日頭條首頁(yè)的閱讀需求是什么?

今日頭條Feed的閱讀需求,我們定義為快速定位型和瀏覽型之間。原因是在閱讀Feed時(shí),用戶有獲取標(biāo)題關(guān)鍵信息的強(qiáng)定位屬性,同時(shí)也有瀏覽feed信息的瀏覽訴求;從Feed閱讀習(xí)慣的分析,我們提到兩個(gè)關(guān)鍵詞,信息的定位和瀏覽,后面的探索也會(huì)圍繞這兩個(gè)關(guān)鍵詞展開(kāi)。

△ 首頁(yè)的閱讀需求

PART 3 信噪比

1. 信噪比與界面

「信噪比」(Signal-to-Noise Ratio)原本是用在聲音和圖像領(lǐng)域的概念,指在聲音傳播過(guò)程中信號(hào)和噪音的比例。這個(gè)理論也可以運(yùn)用在頁(yè)面中,如果要將訊息完整地傳遞給使用者,可以選擇強(qiáng)化原有的訊息,或是降低多余的雜訊,來(lái)提高「信噪比」(Signal-to-Noise Ratio)以增加訊息成功被判讀的機(jī)率,也讓使用者能更輕松地閱讀資訊。

一組信息是否更好的兼容定位與瀏覽屬性,在于信息本身是否足夠強(qiáng)調(diào)與清晰;「信噪比」理論是幫助我們理解「信息清晰度」的存在。

簡(jiǎn)而言之,「信噪比」理論通指有效信息和次級(jí)信息的比例,控制平衡這個(gè)比例,可以有利于信息完整的傳遞給用戶,也能更輕松的獲取資訊。

通過(guò)強(qiáng)化頁(yè)面內(nèi)的有效資訊,降低多余雜訊,從而提升頁(yè)面內(nèi)的「信噪比」,以達(dá)到提高有效資訊傳遞,幫助用戶能更輕松獲取資訊的目的。「信噪比」理論是非常通用、使用廣泛的指導(dǎo)理論,對(duì)信息流頁(yè)面設(shè)計(jì)有明確的指導(dǎo)作用;

△ 提升「信噪比」的目的

2. 視覺(jué)搜尋實(shí)驗(yàn)

△ 視覺(jué)搜尋實(shí)驗(yàn)

在視覺(jué)搜尋的實(shí)驗(yàn)里,讓受試者從許多個(gè)「X」里面挑出1個(gè)「O」,然后再讓他們從「┸」里面挑出一個(gè)「┼」。我們把所有的視覺(jué)元素稱(chēng)作刺激總量,大部分的元素(「X」和「┸」)稱(chēng)為干擾物,唯一不一樣的那個(gè)元素(上面例子的「O」和「┼」)稱(chēng)為目標(biāo)物。而實(shí)驗(yàn)的目的,就是要檢測(cè)在干擾物增加和同等情況下,受試者會(huì)不會(huì)需要花費(fèi)更多時(shí)間才能找到目標(biāo)物。

當(dāng)我們的視覺(jué)系統(tǒng)在辨識(shí)影像時(shí),有一些影像的屬性很容易被大腦處理,我們的視覺(jué)系統(tǒng)可以很快過(guò)濾辨識(shí)這些基礎(chǔ)特征,讓我們的大腦分辨這些影像屬性更容易一些。因此我們涉及到大量信息的設(shè)計(jì)時(shí),如果能夠善用這些基本特征,便可以提高用戶的閱讀效率。

那么,什么樣的特征能夠幫助訊息更快,更有效的被用戶判讀和接收呢?在視覺(jué)搜尋實(shí)驗(yàn)中,有一些基礎(chǔ)特征很容易被我們的視覺(jué)系統(tǒng)所辨識(shí)出來(lái),其中主要有4種不需注意力介入便能輕易分辨的基本特征:

  • 顏色
  • 線段方向
  • 大小
  • 運(yùn)動(dòng)

△ 4種基礎(chǔ)特征

強(qiáng)化信息的基本特征是增強(qiáng)信息被判讀最有效的方式,我們可以根據(jù)場(chǎng)景和用戶訴求,選取最合理的方式來(lái)對(duì)信息進(jìn)行處理;這4個(gè)基礎(chǔ)特征,通過(guò)反差來(lái)增強(qiáng)核心信息的突出程度,輔助信息更好的傳遞給用戶。

通過(guò)「視覺(jué)搜尋實(shí)驗(yàn)」,我們可以得到兩點(diǎn)結(jié)論:

  • 在干擾物增多的情況下,基礎(chǔ)特征和其它區(qū)別不明顯的物體,用戶會(huì)花費(fèi)更多時(shí)間才能發(fā)現(xiàn)。
  • 元素對(duì)比越強(qiáng),用戶能越快獲取自己想要的信息。

這兩點(diǎn)結(jié)論是對(duì)于」信噪比「理論的補(bǔ)充,處理好信息的」信噪比「關(guān)系,強(qiáng)化有效資訊,弱化次要雜訊,幫助用戶有效接收資訊,更輕松獲取資訊。

3. 首頁(yè)目標(biāo)的變化

資訊的生命周期中,包括了產(chǎn)生、傳遞、接收這三個(gè)重要的階段,而每個(gè)階段都有可能造成信息的損耗;

信息產(chǎn)生是源頭,這里的損耗在所難免,我們所要做的,是盡可能控制」傳遞「和」接受「階段的損耗;早期的頭條首頁(yè)承載大量信息,目的是為了讓用戶可以接受到更多信息,這時(shí)「效率」會(huì)是第一位。

但在承載大量信息的同時(shí),頁(yè)面信息過(guò)多,容易造成信息對(duì)比弱、布局密集,從而導(dǎo)致信息 」傳遞「 階段的損耗,同時(shí)用戶在」接受「信息時(shí),看到擁擠的信息布局,接受信息的」效率「被降低,被迫造成損耗。

為了更好的提升首頁(yè)閱讀效率,我們重新審視當(dāng)前的設(shè)計(jì)目標(biāo),通過(guò)對(duì)不同組合的空間調(diào)整,平衡展示效率以及閱讀識(shí)別性,控制「?jìng)鬟f」和「接受」中不必要的信息損耗;將設(shè)計(jì)目標(biāo)從過(guò)去的「效率最大化」,調(diào)整為「有效,輕松的閱讀」

對(duì)于這個(gè)目標(biāo),我們結(jié)合之前抽離的」信噪比「理論,進(jìn)行更為細(xì)致的拆解,確保能落實(shí)到后續(xù)的設(shè)計(jì)方案中。

△ 設(shè)計(jì)目標(biāo)轉(zhuǎn)變

4. 回顧信噪比

「信噪比」理論可以平衡頁(yè)面內(nèi)有效信息和次級(jí)信息,在這樣理論的引導(dǎo)下,提供的方案其實(shí)更具備說(shuō)服力。

和圖片噪點(diǎn)一樣,噪點(diǎn)越低,清晰度越高,映射到頁(yè)面也是如此,頁(yè)面內(nèi)的雜訊過(guò)多,影響到有效訊息的傳遞,我們需要做的,就是給頁(yè)面進(jìn)行「降噪」處理。

PART 4 反差比

1. 文字的反差比

根據(jù)前期的」信噪比「論點(diǎn)和」視覺(jué)搜尋實(shí)驗(yàn)「,我們得出兩個(gè)核心觀點(diǎn):

  • 強(qiáng)化頁(yè)面內(nèi)的有效資訊,降低多余雜訊,能給幫助用戶有效獲取信息。
  • 元素對(duì)比越強(qiáng),用戶能越快獲取自己想要的資訊。

兩個(gè)論點(diǎn)其實(shí)都提到了信息對(duì)比強(qiáng)弱對(duì)于用戶判讀的影響,由此可見(jiàn),不同信息的反差關(guān)系,是增強(qiáng)信息傳遞,縮短用戶接受信息耗費(fèi)時(shí)間的關(guān)鍵指標(biāo)。

如果說(shuō)「信噪比」是信息流優(yōu)化的理論依據(jù),那么「反差比」則是驗(yàn)證頁(yè)面信息反差關(guān)系的手段。

調(diào)整頁(yè)面內(nèi)文字反差,一般通過(guò)三種方式來(lái)提升或調(diào)整

  • 字號(hào)
  • 字重
  • 字色

△ 提升文字反差方式

讓我們來(lái)看首頁(yè)中Feed流的標(biāo)題字號(hào),我們通過(guò) iOS 和 Android 的通用文字規(guī)范可以發(fā)現(xiàn),最小閱讀文字為12號(hào)字(10號(hào)字用在標(biāo)簽,9號(hào)字用在數(shù)字提醒,都不適合作為閱讀文字),Material design中正文內(nèi)容默認(rèn)字號(hào)為16px,iOS規(guī)范中則定義了7個(gè)正文字階(14、15、16、17、19、21、23),綜合多方因素,我們選取了16號(hào)字、17號(hào)字為主要驗(yàn)證目標(biāo).最后形成16/12 17/12這兩組組合來(lái)驗(yàn)證線上Feed信息流。

「信噪比」和「視覺(jué)搜索」理論中,多次提到增強(qiáng)元素反差比,用戶能越快獲取資訊;所以我們也嘗試了加粗字體和加大文字的實(shí)驗(yàn)嘗試,用于驗(yàn)證文字反差比的上限。

△ iOS/Android 通用文字

2. 反差比公式

為了更好的驗(yàn)證和觀察Feed流中的不同文字字號(hào)的反差關(guān)系范圍,我們提出了一個(gè)坐標(biāo)公式用于驗(yàn)證,可以直觀的觀察字號(hào),字色,字重三組信息間的關(guān)系。

Y軸代表字號(hào),X軸是不同灰階文字顏色,我們可以將Feed信息組合中的字號(hào)放入表格中,通過(guò)科學(xué)方法檢驗(yàn)反差范圍。

關(guān)于這套驗(yàn)證公式,是我們?yōu)榱蓑?yàn)證文字反差比所提出的檢驗(yàn)方法,通過(guò)不同實(shí)驗(yàn)組中字號(hào)的反差范圍來(lái)驗(yàn)證哪組更適合Feed場(chǎng)景,最后輸出成符合當(dāng)前場(chǎng)景的通用規(guī)則。

△ 文字/灰階反差比推導(dǎo)圖

最后,我們選擇4組方案進(jìn)行首頁(yè)反差比驗(yàn)證,同時(shí)將比字號(hào)放入坐標(biāo)軸中,可以看出以下文字的反差范圍

  • 16號(hào)字加粗/12號(hào)字
  • 17號(hào)字/12號(hào)字
  • 17號(hào)字加粗/12號(hào)字
  • 18號(hào)字/12號(hào)字

△ 在反差比范圍內(nèi),選取的四種字體組合

上面4個(gè)表格分別對(duì)應(yīng)4組反差比驗(yàn)證的字號(hào)組合,不同字號(hào)組合的反差比范圍,我們都可視化出來(lái),以便于更好驗(yàn)證哪個(gè)信噪比范圍更合理;每組方案的反差比范圍都不一樣,我們會(huì)通過(guò)線上實(shí)驗(yàn),選取最適合當(dāng)前場(chǎng)景的反差比范圍,并形成適用于Feed的反差比規(guī)則。

這里也是驗(yàn)證首頁(yè)Feed反差比的上限和下限范圍,有時(shí)主體并不是反差越強(qiáng)越好,反差也是有閾值范圍,超過(guò)這個(gè)閾值范圍,會(huì)導(dǎo)致信息展示比例不協(xié)調(diào),用戶側(cè)也會(huì)起到反作用。

目前對(duì)于坐標(biāo)公式驗(yàn)證文字反差比的理論還處于實(shí)驗(yàn)理論階段,我們認(rèn)為對(duì)于字號(hào)和灰階之間,有合理的規(guī)則存在,單獨(dú)對(duì)于規(guī)則的抽離和梳理,還需要大量樣本去實(shí)驗(yàn)論證,后續(xù)有新的結(jié)論產(chǎn)出和模型迭代。

PART 5 設(shè)計(jì)方案

目前線上首頁(yè)存在以下問(wèn)題:

  • Feed間距不統(tǒng)一,間距控件缺乏一致性。
  • 過(guò)去品牌顏色比較陳舊,未給用戶傳遞品牌印象。
  • 業(yè)務(wù)發(fā)展要更多拓展空間,當(dāng)前首頁(yè)風(fēng)格難以滿足。

為了解決這些問(wèn)題,我們對(duì)于首頁(yè)的視覺(jué)語(yǔ)言進(jìn)行了優(yōu)化,通過(guò)」信噪比「理論,我們了解到平衡有效信息和雜訊的比例,是保持信息干凈清晰,更好觸達(dá)用戶的保證;因此我們重新梳理不同題材的結(jié)構(gòu),確保核心信息在首頁(yè)展示的唯一性,去掉了對(duì)于用戶閱讀過(guò)程中可能造成阻礙的信息。

△ 首頁(yè)前后對(duì)比

這樣,首頁(yè)上核心信息的展示層級(jí)得到統(tǒng)一,保證了信息干凈清晰,能夠更好觸達(dá)用戶。

在「信噪比」理論和「反差比」實(shí)驗(yàn)的基礎(chǔ)上,輸出了用于線上測(cè)試的設(shè)計(jì)方案,為了驗(yàn)證首頁(yè)中不同變量的影響,我們把頭部,字號(hào),字重,間距這些可能影響首頁(yè)的因素都拆分驗(yàn)證對(duì)于首頁(yè)影響;同時(shí),根據(jù)前面」反差比「的驗(yàn)證理論,我們把」字號(hào)加大「和」文字加粗「也放進(jìn)實(shí)驗(yàn)中進(jìn)行驗(yàn)證,為后續(xù)實(shí)驗(yàn)積累數(shù)據(jù)樣本。

△ 線上驗(yàn)證首頁(yè)方案

綜合前面的實(shí)驗(yàn)結(jié)果,最終我們選擇了兩組這兩組方案,目前線上在進(jìn)行最后實(shí)驗(yàn)。在實(shí)驗(yàn)中,我們也提取到幾點(diǎn)關(guān)鍵指標(biāo):

用戶對(duì)于灰頭樣式并未特別排斥,這個(gè)對(duì)于過(guò)去頭條頂部必須是紅色的認(rèn)知有些挑戰(zhàn);其實(shí)當(dāng)下設(shè)計(jì)趨勢(shì)是在減少用戶閱讀的信息干擾,灰頭更符合這一趨勢(shì),同時(shí)使用灰頭也會(huì)提升頭條整體計(jì)品質(zhì)感,對(duì)于后續(xù)設(shè)計(jì)拓展有很大幫助。

加粗字體上,男性用戶比較偏好加粗字體,但是女性用戶和年輕用戶較為反感。

增大Feed字號(hào),信息展示確實(shí)更突出,但是影響到整個(gè)首頁(yè)的感官,而且違背了我們的設(shè)計(jì)目標(biāo),同時(shí)也不利于后續(xù)設(shè)計(jì)拓展。部分用戶手機(jī)的展示情況和特殊字體設(shè)置都會(huì)受到大字體影響,需慎重考慮。

前面有談及18號(hào)字的問(wèn)題,字號(hào)增大確實(shí)能增強(qiáng)視覺(jué)感官,但要考慮到頭條用戶比較喜歡運(yùn)用特殊字體,特殊字體對(duì)比通用字體更加個(gè)性化,但是字體大小,展示高度并不可控,當(dāng)字號(hào)比較大的情況下,再加上手寫(xiě)字體,效果不可控。

△ 線上手寫(xiě)字體情況

線上實(shí)驗(yàn)后,我們也進(jìn)行了一次線下用戶調(diào)研,用研結(jié)果中用戶對(duì)新版滿意度高于舊版,其中有一個(gè)點(diǎn)多次被用戶提及到,就是調(diào)整后的全圓角搜索框。相比過(guò)去的方形搜索框,調(diào)整后的全圓角搜索框是能給用戶留下深刻印象的視覺(jué)記憶。

PART 6 流程復(fù)盤(pán)

回顧整個(gè)首頁(yè)改版過(guò)程,我們總結(jié)了項(xiàng)目中的流程和思考,希望能幫助大家:

1. 定義當(dāng)前使用場(chǎng)景的閱讀需求:

閱讀Feed的時(shí)候,用戶有獲取關(guān)鍵信息的強(qiáng)定位屬性,同時(shí)也兼顧feed信息的瀏覽屬性。

2. 通過(guò)「信噪比」理論,明確設(shè)計(jì)方向:

強(qiáng)化頁(yè)面內(nèi)的有效資訊,降低多余雜訊,提升頁(yè)面內(nèi)的」信噪比「,達(dá)到用戶有效接受資訊,輕松獲取資訊的目的。

3. 運(yùn)用「反差比」手段,提升信息反差比,增強(qiáng)信息傳遞:

文字可以通過(guò)字號(hào),字色,字重調(diào)整反差關(guān)系,并且通過(guò)「文字反差驗(yàn)證表」進(jìn)行反差比范圍驗(yàn)證,推導(dǎo)出更適合首頁(yè)的反差范圍,形成首頁(yè)反差比規(guī)則。

4. 線上拆分驗(yàn)證,量化首頁(yè)影響指標(biāo):

線上驗(yàn)證方案,把字號(hào)、字重、間距疏密,頭部顏色多個(gè)維度拆分驗(yàn)證,觀察不同個(gè)指標(biāo)對(duì)首頁(yè)影響。

5. 抽離項(xiàng)目中有價(jià)值的信息,后續(xù)形成統(tǒng)一規(guī)則:

間距樣式和信息層級(jí)統(tǒng)一的feed模塊;從矩形到全圓角的搜索框這些知識(shí)點(diǎn)都可以沉淀成信息流場(chǎng)景的認(rèn)知規(guī)則,并且給予其它業(yè)務(wù)和項(xiàng)目理論和實(shí)踐支持,將理論和線上驗(yàn)證相結(jié)合,形成真正有價(jià)值的設(shè)計(jì)方法。

PART 7 寫(xiě)在最后

「信噪比」理論可以廣泛運(yùn)用到頁(yè)面信息設(shè)計(jì)中,幫助大家合理的梳理核心信息與次要信息關(guān)系,并且通過(guò)」反差比「手段,增強(qiáng)有效信息或弱化次要信息;保障頁(yè)面內(nèi)層級(jí)的合理布局,幫助用戶更有效的判讀信息;這次改版也是對(duì)目前認(rèn)知基礎(chǔ)上進(jìn)行的一次拆解與構(gòu)建,過(guò)去我們所認(rèn)知的基礎(chǔ)目前可能處于變化階段,這也為我們后續(xù)方向探索提供更多可能性。

希望這些能為后續(xù)設(shè)計(jì)起到幫助,給予大家思路與靈感,更好的服務(wù)用戶。

文章來(lái)源:優(yōu)設(shè)    作者:今日頭條UED

2020的UI設(shè)計(jì)趨勢(shì),我先收藏了(上)

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




設(shè)計(jì)總是在變化。在過(guò)去一年里,我們不僅看見(jiàn)了五福的C4D運(yùn)用,雙11的動(dòng)效插畫(huà)運(yùn)用,以及大量AR/VR智能的設(shè)計(jì),還有蘋(píng)果黑暗模式的普及,新技術(shù)帶來(lái)新的體驗(yàn)和解決方案。2020年,關(guān)注研究新興的用戶體驗(yàn)趨勢(shì),前段時(shí)間,在我星球里,我?guī)еO(shè)計(jì)師一起來(lái)研究關(guān)于2020界面設(shè)計(jì)趨勢(shì),希望能幫助大家是設(shè)計(jì)中有所啟發(fā)。



 研究背景 



 隨著UI/UX領(lǐng)域人工智能的發(fā)展,和虛擬現(xiàn)實(shí)等新技術(shù)的變革,從前單一的內(nèi)容很難滿足用戶的訴求,用戶的訴求也變得千人前面,所以在研究趨勢(shì)之前,我基于這些關(guān)鍵詞,來(lái)分析2020的設(shè)計(jì)趨勢(shì)。




 色彩趨勢(shì) 



1.彩虹漸變


這兩年來(lái),彩色漸變一直是設(shè)計(jì)趨勢(shì),設(shè)計(jì)師將大膽的漸變,飽和度更高的漸變運(yùn)用在設(shè)計(jì)中去,讓整體的色彩感覺(jué),更加年輕化與活躍。



 Apple一直是這個(gè)領(lǐng)域的引領(lǐng)者,隨著當(dāng)年iPhoneX的發(fā)布,彩虹的漸變色,大膽的漸變風(fēng)格瞬間成為設(shè)計(jì)師筆下的弄潮兒。



 這組插畫(huà)中,作者就運(yùn)用了大面積的漸變,兩種顏色的運(yùn)用,通過(guò)重疊,明度變化,豐富了整個(gè)設(shè)計(jì)層次。



 不僅在平面設(shè)計(jì)中,在網(wǎng)頁(yè)設(shè)計(jì)中,也是被大量運(yùn)用,SWATCH的官網(wǎng),清新的漸變配合動(dòng)感的模特照片,以及和產(chǎn)品的完全結(jié)合,讓頁(yè)面充滿著活力。



 在移動(dòng)端也是如此,金融產(chǎn)品的背景設(shè)計(jì),銀行卡面的設(shè)計(jì),可視化圖表的運(yùn)用,都能看出大膽漸變還是很受歡迎。


2.黑暗模式


隨著google和facebook以及instagram這些知名應(yīng)用都開(kāi)始提供黑暗模式,國(guó)內(nèi)微信也開(kāi)始黑暗模式,2020黑暗模式設(shè)計(jì),一定是需要設(shè)計(jì)師去關(guān)注的。


黑暗模式,除了在黑暗中提高內(nèi)容可讀性以外,還能減少用戶疲勞,還可以節(jié)約電池,所以黑暗模式在今年將是所有應(yīng)用程序必不可少的一個(gè)功能。



 Google的黑暗模式運(yùn)用,通過(guò)一個(gè)簡(jiǎn)單的按鈕開(kāi)關(guān)就可以切換,也可以根據(jù)系統(tǒng)定義切換。



 黑暗模式未來(lái)會(huì)成為一種標(biāo)配,一個(gè)軟件設(shè)計(jì)在剛開(kāi)始的時(shí)候就必須考慮進(jìn)來(lái)。



 關(guān)于黑暗模式,正向當(dāng)年iOS扁平化剛出來(lái)的時(shí)候,國(guó)內(nèi)的很多產(chǎn)品都還沒(méi)有準(zhǔn)備好,但是相信過(guò)不了多久,黑暗模式一定會(huì)普及開(kāi)來(lái),所以2020大家都應(yīng)該提前去了解黑暗模式的,設(shè)計(jì)規(guī)范和細(xì)節(jié)。


3.更大膽的一種顏色



 除了漸變色,那么大膽的單色在設(shè)計(jì)中運(yùn)用也會(huì)越來(lái)越多,整個(gè)設(shè)計(jì)就一套色彩體系貫穿,大多時(shí)候以品牌色的形式去運(yùn)用,配合留白,對(duì)比明顯的字體,整體給人印象深刻。



 在韓國(guó)的應(yīng)用中用的比較多,它的優(yōu)勢(shì)是色彩干凈,品牌整體感強(qiáng),但是對(duì)設(shè)計(jì)師駕馭頁(yè)面能力也要求很高,因?yàn)榇竺娣e的單色,如果用不好就會(huì)很刺眼。


 Naverpay的設(shè)計(jì),整個(gè)界面就是用的綠色漸變,清新同時(shí)也能很好和Naver品牌色進(jìn)行結(jié)合。



 在它的很多頁(yè)面中,很多控件這個(gè)綠色運(yùn)用的很巧妙,不會(huì)給人很刺眼的感覺(jué),所以大膽的一種顏色運(yùn)用在2020頁(yè)將是設(shè)計(jì)師值得去關(guān)注的一個(gè)方向。



▲ 掃碼加入知識(shí)星球,了解更多




 插畫(huà)趨勢(shì)  



在過(guò)去幾年里,插畫(huà)是一種新的表達(dá)方式,越來(lái)越多的設(shè)計(jì)師,插畫(huà)師通過(guò)插畫(huà)表達(dá)產(chǎn)品的情緒,個(gè)人的情緒主張,那么在2020插畫(huà)的運(yùn)用就得和品牌很好的融合起來(lái),如果你的插畫(huà)是和品牌割裂的,需要注意。


1.和品牌結(jié)合



 wibbite的插畫(huà),標(biāo)志性歐美的風(fēng)格,除了插畫(huà)本身手法比較簡(jiǎn)約模塊,插畫(huà)中運(yùn)用的色彩和內(nèi)容本身也很產(chǎn)品定位匹配。



 插畫(huà)對(duì)于品牌來(lái)說(shuō)也是非常重要的一個(gè)因素,無(wú)論在界面設(shè)計(jì),還是在品牌營(yíng)銷(xiāo)很多場(chǎng)景都需要插畫(huà)去營(yíng)造產(chǎn)品氛圍和氣質(zhì),插畫(huà)有助于將我們的品牌故事講述給聽(tīng)眾聽(tīng),所以在構(gòu)建一個(gè)品牌時(shí)候,插畫(huà)是非常重要的點(diǎn)之一,但是做之前一定要盡量多去了解我們?yōu)榭蛻籼峁┑脑O(shè)計(jì)價(jià)值,只有了解了用戶價(jià)值,才能去定義去特色的故事,幫助產(chǎn)品。



 Uber系列插畫(huà)提供暖色,以及安全藍(lán)的運(yùn)用,突出打車(chē)服務(wù)中安全的關(guān)鍵要素。




 Google的插畫(huà)系統(tǒng)也是如此,沒(méi)有很華麗的炫技,有的是對(duì)于多元文化的思考,設(shè)計(jì)場(chǎng)景的融合貫通。


所以不難看出,插畫(huà)的方向一定是和品牌結(jié)合的,不會(huì)為了趨勢(shì)而趨勢(shì),一定是圍繞內(nèi)容去設(shè)計(jì)。



2.3D插畫(huà)



▲ 如果說(shuō)這2年,各種各樣的插畫(huà)手法百花齊放,那么隨著人們的審美變化,趨勢(shì)也從靜態(tài)變成動(dòng)態(tài),從平面變成3D,從今年的支付寶五福設(shè)計(jì)中大家應(yīng)該能感覺(jué)到2020的插畫(huà)設(shè)計(jì)一定是往著3D方向,而且是動(dòng)態(tài)3D方向演進(jìn)的。



 谷歌一組插畫(huà),結(jié)合與大腦、團(tuán)隊(duì)合作、想法、密碼箱為圖形進(jìn)行創(chuàng)意設(shè)計(jì),人物造型可愛(ài)好玩,凸顯年輕化潮流。



 Apple在中國(guó)區(qū)App Store 的一組設(shè)計(jì),整體設(shè)計(jì)以紅色為主,運(yùn)用了象征中國(guó)元素的龍、紅包、燈籠、福字、紙牌作為設(shè)計(jì)元素,整體運(yùn)用3D表達(dá),凸顯年輕和趣味性。


3.等距插畫(huà)



等距插畫(huà)這兩年已經(jīng)是一個(gè)主流風(fēng)格之一,在未來(lái)還會(huì)接著流行,但是等距插畫(huà)未來(lái)或許和場(chǎng)景聯(lián)系在更緊密,在每年天貓雙11設(shè)計(jì)中,互動(dòng)城的設(shè)計(jì)每年基本都是等距插畫(huà)風(fēng)格,它的故事感和畫(huà)面感,都能讓人眼前一亮,所以電商的設(shè)計(jì),在短時(shí)間內(nèi),大型活動(dòng)場(chǎng)景基本都離不開(kāi)這個(gè)風(fēng)格。



 這組等距插畫(huà)場(chǎng)景故事感很強(qiáng),建立了一個(gè)空間世界,作為網(wǎng)站主風(fēng)格非常的吸引人。



 除了這種大的場(chǎng)景,等距插畫(huà),在小的場(chǎng)景中,作為插畫(huà)規(guī)范也是運(yùn)用比較多,它風(fēng)格可輕可重,隨著5G時(shí)代到來(lái),靜態(tài)可能會(huì)逐步演進(jìn)成動(dòng)態(tài)插畫(huà)。


4.根據(jù)內(nèi)容定制的插畫(huà)



隨著內(nèi)容的升級(jí),對(duì)內(nèi)容的表達(dá)也會(huì)被越來(lái)越重視,那么如何更好的把內(nèi)容更生動(dòng)表達(dá)出來(lái),插畫(huà)就是很好的一個(gè)形式,根據(jù)內(nèi)容定制的插畫(huà),在很多產(chǎn)品中被運(yùn)用到,互聯(lián)網(wǎng)教育,IT等領(lǐng)域。所以專(zhuān)門(mén)針對(duì)內(nèi)容去設(shè)計(jì)插畫(huà),在今年或許是一個(gè)趨勢(shì),插畫(huà)不再是孤零零只是為了情感化而存在。



 Crowdrise的產(chǎn)品設(shè)計(jì),整體就是運(yùn)用作為整體設(shè)計(jì)語(yǔ)言,風(fēng)格統(tǒng)一,內(nèi)容突出,畫(huà)面效果好。



 插畫(huà)的形態(tài)終于不再是孤零零的只是用戶情感的表達(dá),而是隨著內(nèi)容的升級(jí)變化,在產(chǎn)品中發(fā)揮的重要性也越來(lái)越大。


3.3D黏土插畫(huà)的運(yùn)用


3D設(shè)計(jì)因?yàn)榻衲暝O(shè)計(jì)師很喜歡用的樣式之一,我們將盡管3D已經(jīng)存在了一段時(shí)間,但最近我們看到了很多模仿粘土樣式效果的3D插圖的興起。這將成為今年流行的設(shè)計(jì)趨勢(shì),我們甚至還會(huì)看到很多藝術(shù)家在電影,插畫(huà)和廣告中結(jié)合了2D和3D風(fēng)格。



 在instagran的一組設(shè)計(jì)中,設(shè)計(jì)師運(yùn)用這種黏土和3D的方式設(shè)計(jì),畫(huà)面充滿了生活感和溫暖。



 谷歌也在它們的項(xiàng)目中大量運(yùn)用這種黏土風(fēng)格設(shè)計(jì),會(huì)顯得更加的現(xiàn)代和活潑,黏土的設(shè)計(jì)相對(duì)3D插畫(huà)區(qū)別在于更加細(xì)膩,線條上更加柔和。


 字體趨勢(shì) 



這幾年越來(lái)越多的公司,開(kāi)始定制字體,根據(jù)自己的品牌特質(zhì)去做一些獨(dú)特的字體,從國(guó)外到國(guó)內(nèi),品牌定制字體未來(lái)或許還會(huì)越來(lái)越多,對(duì)于設(shè)計(jì)師好處來(lái)說(shuō),這些品牌字體很多都是免費(fèi)開(kāi)放給設(shè)計(jì)師用,會(huì)形成一個(gè)很高的商業(yè)環(huán)境。


1.定制字體



 錘子發(fā)布了他們的Smartisan T黑字體。



 騰訊發(fā)布了定制的“騰訊字體”,相比原來(lái)傾斜的黑體字,騰訊的新字體更現(xiàn)代、更協(xié)調(diào)、更動(dòng)感。運(yùn)用起來(lái)也非常有力量感。


 阿里普惠體,隨著集團(tuán)業(yè)務(wù)龐大,字體使用場(chǎng)景多且復(fù)雜,包括各產(chǎn)品客戶端、營(yíng)銷(xiāo)設(shè)計(jì)、操作系統(tǒng)、硬件設(shè)備、建筑空間及公關(guān)傳播等等。決定以現(xiàn)代為核心設(shè)計(jì)理念,以可靠、明快為設(shè)計(jì)切入點(diǎn),將阿里精神融入到字體當(dāng)中。最終一款擁有現(xiàn)代感滿足全場(chǎng)景黑體誕生了,而且商用免費(fèi)。




 除了前面的阿里,騰訊,錘子,小米OPPO,京東也都發(fā)布了自己的專(zhuān)屬品牌字體,所以在2020年,品牌字體或許是每個(gè)公司的一個(gè)標(biāo)配了,我們拭目以待。




 國(guó)外其實(shí)是最早開(kāi)始為品牌定制字體的,三星手機(jī)雖然銷(xiāo)量消化,但是他們品牌字體:SamsungOne,設(shè)計(jì)風(fēng)格,很強(qiáng)的現(xiàn)代感,而且,這個(gè)字體有不同粗細(xì)的筆畫(huà)字重,適用面很廣。






 IBM的字體名稱(chēng):IBM Plex Sans Text,這款字體設(shè)計(jì)比較簡(jiǎn)潔,干凈,沒(méi)有多余的筆畫(huà),這個(gè)字體很良心免費(fèi)商用的。


2.粗體的運(yùn)用



縱觀2020的一些設(shè)計(jì),留白越來(lái)越大,邊距越留越多,字體也變的很粗,粗的字體和正文普通字體形成了明顯的對(duì)比,再加上網(wǎng)格的布局,讓頁(yè)面內(nèi)容更加凸顯。



 大字體的運(yùn)用,字體就是內(nèi)容,重復(fù)運(yùn)用內(nèi)容元素作為排版手段,對(duì)于內(nèi)容組織和平面要求較高。




 在UI設(shè)計(jì)中,大字體的設(shè)計(jì)也很常見(jiàn),蘋(píng)果商店,蘋(píng)果官方應(yīng)用都是大字體的推崇者,隨便5G的來(lái)臨,對(duì)于內(nèi)容的追求也會(huì)越來(lái)越高,那么除了大字體,視覺(jué)元素減少,內(nèi)容本身質(zhì)量要求也越來(lái)越高。


 粗的字體常用語(yǔ)大標(biāo)題,或者頁(yè)面導(dǎo)航性指引作業(yè),幫助用戶更好去理解功能本身,上面這個(gè)頁(yè)面粗的字體就是導(dǎo)航,告訴用戶這一頁(yè),你需要去完成什么動(dòng)作指引。



▲ 掃碼加入知識(shí)星球,了解更多




 最后 

 

設(shè)計(jì)趨勢(shì)必然與技術(shù)發(fā)展緊密結(jié)合,作為設(shè)計(jì)師我們需要了解,以及平時(shí)和我們?cè)O(shè)計(jì)進(jìn)行結(jié)合,下期將帶來(lái),2020的UI設(shè)計(jì)趨勢(shì)下部分,看看還有哪些需要我們?nèi)リP(guān)注的。

轉(zhuǎn)自:ui中國(guó)-skys 

web安全之XSS實(shí)例解析

seo達(dá)人

XSS

跨站腳本攻擊(Cross Site Script),本來(lái)縮寫(xiě)是 CSS, 但是為了和層疊樣式表(Cascading Style Sheet, CSS)有所區(qū)分,所以安全領(lǐng)域叫做 “XSS”;


XSS攻擊,通常是指攻擊者通過(guò) “HTML注入”篡改了網(wǎng)頁(yè),插入了惡意的腳本,從而在用戶瀏覽網(wǎng)頁(yè)時(shí),對(duì)用戶的瀏覽器進(jìn)行控制或者獲取用戶的敏感信息(Cookie, SessionID等)的一種攻擊方式。


頁(yè)面被注入了惡意JavaScript腳本,瀏覽器無(wú)法判斷區(qū)分這些腳本是被惡意注入的,還是正常的頁(yè)面內(nèi)容,所以惡意注入Javascript腳本也擁有了所有的腳本權(quán)限。如果頁(yè)面被注入了惡意 JavaScript腳本,它可以做哪些事情呢?


可以竊取 cookie信息。惡意 JavaScript可以通過(guò) ”doccument.cookie“獲取cookie信息,然后通過(guò) XMLHttpRequest或者Fetch加上CORS功能將數(shù)據(jù)發(fā)送給惡意服務(wù)器;惡意服務(wù)器拿到用戶的cookie信息之后,就可以在其他電腦上模擬用戶的登陸,然后進(jìn)行轉(zhuǎn)賬操作。

可以監(jiān)聽(tīng)用戶行為。惡意JavaScript可以使用 "addEventListener"接口來(lái)監(jiān)聽(tīng)鍵盤(pán)事件,比如可以獲取用戶輸入的銀行卡等信息,又可以做很多違法的事情。

可以修改DOM 偽造假的登陸窗口,用來(lái)欺騙用戶輸入用戶名和密碼等信息。

還可以在頁(yè)面內(nèi)生成浮窗廣告,這些廣告會(huì)嚴(yán)重影響用戶體驗(yàn)。

XSS攻擊可以分為三類(lèi):反射型,存儲(chǔ)型,基于DOM型(DOM based XSS)


反射型

惡意腳本作為網(wǎng)絡(luò)請(qǐng)求的一部分。


const Koa = require("koa");

const app = new Koa();


app.use(async ctx => {

   // ctx.body 即服務(wù)端響應(yīng)的數(shù)據(jù)

   ctx.body = '<script>alert("反射型 XSS 攻擊")</script>';

})


app.listen(3000, () => {

   console.log('啟動(dòng)成功');

});

訪問(wèn) http://127.0.0.1:3000/ 可以看到 alert執(zhí)行


反射型XSS1


舉一個(gè)常見(jiàn)的場(chǎng)景,我們通過(guò)頁(yè)面的url的一個(gè)參數(shù)來(lái)控制頁(yè)面的展示內(nèi)容,比如我們把上面的一部分代碼改成下面這樣


app.use(async ctx => {

   // ctx.body 即服務(wù)端響應(yīng)的數(shù)據(jù)

   ctx.body = ctx.query.userName;

})

此時(shí)訪問(wèn) http://127.0.0.1:3000?userName=xiaoming 可以看到頁(yè)面上展示了xiaoming,此時(shí)我們?cè)L問(wèn) http://127.0.0.1:3000?userName=<script>alert("反射型 XSS 攻擊")</script>, 可以看到頁(yè)面彈出 alert。


反射型XSS2


通過(guò)這個(gè)操作,我們會(huì)發(fā)現(xiàn)用戶將一段含有惡意代碼的請(qǐng)求提交給服務(wù)器,服務(wù)器在接收到請(qǐng)求時(shí),又將惡意代碼反射給瀏覽器端,這就是反射型XSS攻擊。另外一點(diǎn)需要注意的是,Web 服務(wù)器不會(huì)存儲(chǔ)反射型 XSS 攻擊的惡意腳本,這是和存儲(chǔ)型 XSS 攻擊不同的地方。


在實(shí)際的開(kāi)發(fā)過(guò)程中,我們會(huì)碰到這樣的場(chǎng)景,在頁(yè)面A中點(diǎn)擊某個(gè)操作,這個(gè)按鈕操作是需要登錄權(quán)限的,所以需要跳轉(zhuǎn)到登錄頁(yè)面,登錄完成之后再跳轉(zhuǎn)會(huì)A頁(yè)面,我們是這么處理的,跳轉(zhuǎn)登錄頁(yè)面的時(shí)候,會(huì)加一個(gè)參數(shù) returnUrl,表示登錄完成之后需要跳轉(zhuǎn)到哪個(gè)頁(yè)面,即這個(gè)地址是這樣的 http://xxx.com/login?returnUrl=http://xxx.com/A,假如這個(gè)時(shí)候把returnUrl改成一個(gè)script腳本,而你在登錄完成之后,如果沒(méi)有對(duì)returnUrl進(jìn)行合法性判斷,而直接通過(guò)window.location.href=returnUrl,這個(gè)時(shí)候這個(gè)惡意腳本就會(huì)執(zhí)行。


存儲(chǔ)型

存儲(chǔ)型會(huì)把用戶輸入的數(shù)據(jù)“存儲(chǔ)”在服務(wù)器。


比較常見(jiàn)的一個(gè)場(chǎng)景就是,攻擊者在社區(qū)或論壇寫(xiě)下一篇包含惡意 JavaScript代碼的博客文章或評(píng)論,文章或評(píng)論發(fā)表后,所有訪問(wèn)該博客文章或評(píng)論的用戶,都會(huì)在他們的瀏覽器中執(zhí)行這段惡意的JavaScript代碼。


存儲(chǔ)型攻擊大致需要經(jīng)歷以下幾個(gè)步驟


首先攻擊者利用站點(diǎn)漏洞將一段惡意JavaScript代碼提交到網(wǎng)站數(shù)據(jù)庫(kù)中

然后用戶向網(wǎng)站請(qǐng)求包含了惡意 JavaScript腳本的頁(yè)面

當(dāng)用戶瀏覽該頁(yè)面的時(shí)候,惡意腳本就會(huì)將用戶的cookie信息等數(shù)據(jù)上傳到服務(wù)器

存儲(chǔ)型XSS


舉一個(gè)簡(jiǎn)單的例子,一個(gè)登陸頁(yè)面,點(diǎn)擊登陸的時(shí)候,把數(shù)據(jù)存儲(chǔ)在后端,登陸完成之后跳轉(zhuǎn)到首頁(yè),首頁(yè)請(qǐng)求一個(gè)接口將當(dāng)前的用戶名顯示到頁(yè)面


客戶端代碼


<!DOCTYPE html>

<html lang="en">


<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <meta http-equiv="X-UA-Compatible" content="ie=edge">

   <title>XSS-demo</title>

   <style>

       .login-wrap {

           height: 180px;

           width: 300px;

           border: 1px solid #ccc;

           padding: 20px;

           margin-bottom: 20px;

       }

       input {

           width: 300px;

       }

   </style>

</head>


<body>

   <div class="login-wrap">

       <input type="text" placeholder="用戶名" class="userName">

       <br>

       <input type="password" placeholder="密碼" class="password">

       <br>

       <br>

       <button class="btn">登陸</button>

   </div>

</body>

<script>

   var btn = document.querySelector('.btn');

   

   btn.onclick = function () {

       var userName = document.querySelector('.userName').value;

       var password = document.querySelector('.password').value;

       

       fetch('http://localhost:3200/login', {

           method: 'POST',

           body: JSON.stringify({

               userName,

               password

           }),

           headers:{

               'Content-Type': 'application/json'

           },

           mode: 'cors'

       })

           .then(function (response) {

               return response.json();

           })

           .then(function (res) {

               alert(res.msg);

               window.location.href= "http://localhost:3200/home";

           })

           .catch(err => {

               message.error(`本地測(cè)試錯(cuò)誤 ${err.message}`);

               console.error('本地測(cè)試錯(cuò)誤', err);

           });

   }

</script>


</html>

服務(wù)端代碼


const Koa = require("koa");

const app = new Koa();

const route = require('koa-route');

var bodyParser = require('koa-bodyparser');

const cors = require('@koa/cors');


// 臨時(shí)用一個(gè)變量來(lái)存儲(chǔ),實(shí)際應(yīng)該存在數(shù)據(jù)庫(kù)中

let currentUserName = '';


app.use(bodyParser()); // 處理post請(qǐng)求的參數(shù)


const login = ctx => {

   const req = ctx.request.body;

   const userName = req.userName;

   currentUserName = userName;


   ctx.response.body = {

       msg: '登陸成功'

   };

}


const home = ctx => {

   ctx.body = currentUserName;

}

app.use(cors());

app.use(route.post('/login', login));

app.use(route.get('/home', home));

app.listen(3200, () => {

   console.log('啟動(dòng)成功');

});

點(diǎn)擊登陸將輸入信息提交大服務(wù)端,服務(wù)端使用變量 currentUserName來(lái)存儲(chǔ)當(dāng)前的輸入內(nèi)容,登陸成功后,跳轉(zhuǎn)到 首頁(yè), 服務(wù)端會(huì)返回當(dāng)前的用戶名。如果用戶輸入了惡意腳本內(nèi)容,則惡意腳本就會(huì)在瀏覽器端執(zhí)行。


在用戶名的輸入框輸入 <script>alert('存儲(chǔ)型 XSS 攻擊')</script>,執(zhí)行結(jié)果如下


存儲(chǔ)型XSS


基于DOM(DOM based XSS)

通過(guò)惡意腳本修改頁(yè)面的DOM節(jié)點(diǎn),是發(fā)生在前端的攻擊


基于DOM攻擊大致需要經(jīng)歷以下幾個(gè)步驟


攻擊者構(gòu)造出特殊的URL,其中包含惡意代碼

用戶打開(kāi)帶有惡意代碼的URL

用戶瀏覽器接受到響應(yīng)后執(zhí)行解析,前端JavaScript取出URL中的惡意代碼并執(zhí)行

惡意代碼竊取用戶數(shù)據(jù)并發(fā)送到攻擊者的網(wǎng)站,冒充用戶行為,調(diào)用目標(biāo)網(wǎng)站接口執(zhí)行攻擊者指定的操作。

舉個(gè)例子:


<body>

   <div class="login-wrap">

       <input type="text" placeholder="輸入url" class="url">

       <br>

       <br>

       <button class="btn">提交</button>

       <div class="content"></div>

   </div>

</body>

<script>

   var btn = document.querySelector('.btn');

   var content = document.querySelector('.content');

   

   btn.onclick = function () {

       var url = document.querySelector('.url').value;

       content.innerHTML = `<a href=${url}>跳轉(zhuǎn)到輸入的url</a>`

   }

</script>

點(diǎn)擊提交按鈕,會(huì)在當(dāng)前頁(yè)面插入一個(gè)超鏈接,其地址為文本框的內(nèi)容。


在輸入框輸入 如下內(nèi)容


'' onclick=alert('哈哈,你被攻擊了')

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


基于DOM型XSS


首先用兩個(gè)單引號(hào)閉合調(diào) href屬性,然后插入一個(gè)onclick事件。點(diǎn)擊這個(gè)新生成的鏈接,腳本將被執(zhí)行。


上面的代碼是通過(guò)執(zhí)行 執(zhí)行 alert來(lái)演示的攻擊類(lèi)型,同樣你可以把上面的腳本代碼修改為任何你想執(zhí)行的代碼,比如獲取 用戶的 cookie等信息,<script>alert(document.cookie)</script>,同樣也是可以的.

防御XSS

HttpOnly

由于很多XSS攻擊都是來(lái)盜用Cookie的,因此可以通過(guò) 使用HttpOnly屬性來(lái)防止直接通過(guò) document.cookie 來(lái)獲取 cookie。


一個(gè)Cookie的使用過(guò)程如下


瀏覽器向服務(wù)器發(fā)起請(qǐng)求,這時(shí)候沒(méi)有 Cookie

服務(wù)器返回時(shí)設(shè)置 Set-Cookie 頭,向客戶端瀏覽器寫(xiě)入Cookie

在該 Cookie 到期前,瀏覽器訪問(wèn)該域下的所有頁(yè)面,都將發(fā)送該Cookie

HttpOnly是在 Set-Cookie時(shí)標(biāo)記的:


通常服務(wù)器可以將某些 Cookie 設(shè)置為 HttpOnly 標(biāo)志,HttpOnly 是服務(wù)器通過(guò) HTTP 響應(yīng)頭來(lái)設(shè)置的。


const login = ctx => {

   // 簡(jiǎn)單設(shè)置一個(gè)cookie

   ctx.cookies.set(

       'cid',

       'hello world',

       {

         domain: 'localhost',  // 寫(xiě)cookie所在的域名

         path: '/home',       // 寫(xiě)cookie所在的路徑

         maxAge: 10 * 60 * 1000, // cookie有效時(shí)長(zhǎng)

         expires: new Date('2021-02-15'),  // cookie失效時(shí)間

         httpOnly: true,  // 是否只用于http請(qǐng)求中獲取

         overwrite: false  // 是否允許重寫(xiě)

       }

     )

}

HttpOnly


需要注意的一點(diǎn)是:HttpOnly 并非阻止 XSS 攻擊,而是能阻止 XSS 攻擊后的 Cookie 劫持攻擊。


輸入和輸出的檢查

永遠(yuǎn)不要相信用戶的輸入。


輸入檢查一般是檢查用戶輸入的數(shù)據(jù)是都包含一些特殊字符,如 <、>, '及"等。如果發(fā)現(xiàn)特殊字符,則將這些字符過(guò)濾或編碼。這種可以稱(chēng)為 “XSS Filter”。


安全的編碼函數(shù)


針對(duì)HTML代碼的編碼方式是 HtmlEncode(是一種函數(shù)實(shí)現(xiàn),將字符串轉(zhuǎn)成 HTMLEntrities)


& --> &amp;

< --> &lt;

> --> &gt;

" --> &quot;

相應(yīng)的, JavaScript的編碼方式可以使用 JavascriptEncode。


假如說(shuō)用戶輸入了 <script>alert("你被攻擊了")</script>,我們要對(duì)用戶輸入的內(nèi)容進(jìn)行過(guò)濾(如果包含了 <script> 等敏感字符,就過(guò)濾掉)或者對(duì)其編碼,如果是惡意的腳本,則會(huì)變成下面這樣


&lt;script&gt;alert("你被攻擊了");&lt;/script&gt;

經(jīng)過(guò)轉(zhuǎn)碼之后的內(nèi)容,如 <script>標(biāo)簽被轉(zhuǎn)換為 &lt;script&gt;,即使這段腳本返回給頁(yè)面,頁(yè)面也不會(huì)指向這段代碼。


防御 DOM Based XSS

我們可以回看一下上面的例子


btn.onclick = function () {

   var url = document.querySelector('.url').value;

   content.innerHTML = `<a href=${url}>跳轉(zhuǎn)到輸入的url</a>`

}

事實(shí)上,DOM Based XSS 是從 JavaScript中輸出數(shù)據(jù)到HTML頁(yè)面里。


用戶輸入 '' onclick=alert('哈哈,你被攻擊了'),然后通過(guò) innerHTML 修改DOM的內(nèi)容,就變成了 <a href='' onclick=alert('哈哈,你被攻擊了')>跳轉(zhuǎn)到輸入的url</a>, XSS因此產(chǎn)生。


那么正確的防御方法是什么呢?

從JavaScript輸出到HTML頁(yè)面,相當(dāng)于一次 XSS輸出的過(guò)程,需要根據(jù)不同場(chǎng)景進(jìn)行不同的編碼處理


變量輸出到 <script>,執(zhí)行一次 JavascriptEncode

通過(guò)JS輸出到HTML頁(yè)面


輸出事件或者腳本,做 JavascriptEncode 處理

輸出 HTML內(nèi)容或者屬性,做 HtmlEncode 處理

會(huì)觸發(fā) DOM Based XSS的地方有很多,比如


xxx.interHTML

xxx.outerHTML

document.write

頁(yè)面中所有的inputs框

XMLHttpRequest返回的數(shù)據(jù)

...


項(xiàng)目中如果用到,一定要避免在字符串中拼接不可信的數(shù)據(jù)。


利用CSP

CSP (Content Security Policy) 即內(nèi)容安全策略,是一種可信白名單機(jī)制,可以在服務(wù)端配置瀏覽器哪些外部資源可以加載和執(zhí)行。我們只需要配置規(guī)則,如何攔截是由瀏覽器自己實(shí)現(xiàn)的。我們可以通過(guò)這種方式來(lái)盡量減少 XSS 攻擊。


通??梢酝ㄟ^(guò)兩種方式來(lái)開(kāi)啟 CSP:


設(shè)置 HTTP Header 的 Content-Security-Policy

Content-Security-Policy: default-src 'self'; // 只允許加載本站資源

Content-Security-Policy: img-src https://*  // 只允許加載 HTTPS 協(xié)議圖片

Content-Security-Policy: child-src 'none'    // 允許加載任何來(lái)源框架

設(shè)置 meta 標(biāo)簽的方式

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">

如何選擇設(shè)計(jì)需求分析結(jié)果?

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

這周我們進(jìn)行下一步討論:如何對(duì)分析結(jié)果進(jìn)行選擇。

團(tuán)隊(duì)角色分工

首先我們需要了解互聯(lián)網(wǎng)產(chǎn)品研發(fā)團(tuán)隊(duì)的各個(gè)角色分工。

對(duì)于初期的產(chǎn)品研發(fā),可能公司沒(méi)有團(tuán)隊(duì)概念,所以從想法到設(shè)計(jì)到開(kāi)發(fā),都由一個(gè)人搞定;

等到公司發(fā)展差不多,自己成了領(lǐng)導(dǎo),就可以對(duì)各個(gè)角色和分工有所分組,也就是大多數(shù)初創(chuàng)公司的分配情況:

  • 產(chǎn)品經(jīng)理(產(chǎn)品設(shè)計(jì)師):產(chǎn)品管理、項(xiàng)目管理、交互設(shè)計(jì);
  • UI:UI 設(shè)計(jì);
  • 開(kāi)發(fā)工程師:技術(shù)開(kāi)發(fā)

隨著公司業(yè)務(wù)的發(fā)展,產(chǎn)品經(jīng)理需要處理越來(lái)越多的業(yè)務(wù)規(guī)劃任務(wù),所以從業(yè)務(wù)視角和用戶視角將之前的產(chǎn)品經(jīng)理崗位職責(zé)進(jìn)行劃分:

  • 產(chǎn)品經(jīng)理(業(yè)務(wù)視角):去組織管理公司業(yè)務(wù);
  • 交互設(shè)計(jì)師(用戶視角):去觀察用戶心理,分析需求,設(shè)計(jì)人機(jī)交互界面。

所以最終的角色分配是:

  • 產(chǎn)品經(jīng)理(產(chǎn)品設(shè)計(jì)師):產(chǎn)品管理、項(xiàng)目管理;
  • 交互設(shè)計(jì)師:交互設(shè)計(jì);
  • UI:UI 設(shè)計(jì);
  • 開(kāi)發(fā)工程師:技術(shù)開(kāi)發(fā)

再大一點(diǎn)的公司,會(huì)增加項(xiàng)目經(jīng)理崗,把之前產(chǎn)品經(jīng)理負(fù)責(zé)的職責(zé)拆出一部分,這部分職責(zé)就是項(xiàng)目管理。所以角色分配最終是:

  • 產(chǎn)品經(jīng)理(產(chǎn)品設(shè)計(jì)師):產(chǎn)品管理
  • 項(xiàng)目經(jīng)理:項(xiàng)目管理
  • 交互設(shè)計(jì)師:交互設(shè)計(jì)
  • UI:UI 設(shè)計(jì)
  • 開(kāi)發(fā)工程師:技術(shù)開(kāi)發(fā)

交互方案評(píng)價(jià)標(biāo)準(zhǔn)

了解了團(tuán)隊(duì)角色分工,只是讓產(chǎn)品得到了更專(zhuān)業(yè)的技術(shù)支持,接下來(lái)我們需要切入正題:對(duì)交互方案進(jìn)行評(píng)價(jià)篩選,篩選的標(biāo)準(zhǔn)可以圍繞:有用性、易用性和吸引力展開(kāi)。

1. 有用性:

方案是否同時(shí)滿足業(yè)務(wù)目標(biāo)與用戶體驗(yàn)?zāi)繕?biāo),為了更好理解,大家可以看下如下事例:

如果所有的線上商品都發(fā)順豐快遞,對(duì)于用戶來(lái)講,用戶體驗(yàn)當(dāng)然很好:夠快。但是從業(yè)務(wù)目標(biāo)來(lái)講,這是不可取的,畢竟快遞不能獨(dú)順豐一攬。所以這個(gè)想法沒(méi)有顧及到業(yè)務(wù)目標(biāo),是不可行的;

很早之前,有過(guò) Open ID 的概念:用一個(gè) ID 就可以登錄多個(gè)網(wǎng)站。但是接入了 Open ID 的網(wǎng)站,對(duì)于自身產(chǎn)品的登錄注冊(cè)就會(huì)有一定影響,所以這個(gè)想法不了了之。

后來(lái) Facebook 和 Twitter 開(kāi)放了自己 ID,可用這兩個(gè)賬號(hào)進(jìn)行其他網(wǎng)站登錄。于是國(guó)內(nèi)很多網(wǎng)站也開(kāi)始支持微博、微信、QQ 賬號(hào)登錄。

這樣降低了用戶注冊(cè)成本,而且也獲得了一定收益。所以這是個(gè)不錯(cuò)的想法,但是對(duì)于一些需要獲得用戶信息的產(chǎn)品可能不太適合,所以視情況而定。

總結(jié)來(lái)說(shuō),有用性就是要滿足產(chǎn)品利益與用戶利益。畢竟如果只是很好看,最多也就只能被稱(chēng)作一個(gè)藝術(shù)品。

2. 可用性

所謂可用性就是用戶容易理解,使用起來(lái)沒(méi)有障礙,并且感受良好。

關(guān)于產(chǎn)品可用性,大家可以去了解下鼎鼎有名的尼爾森十大可用性原則。

3. 吸引力

所謂吸引力就是產(chǎn)品有打動(dòng)人、超越用戶期望值的細(xì)節(jié)。

關(guān)于吸引力設(shè)計(jì),大家可以了解一下 KANO 模型,KANO 模型定義了三個(gè)層次用戶需求:

基本型的需求:用戶認(rèn)為產(chǎn)品必須有的功能屬性,如果沒(méi)有,用戶會(huì)不滿意;如果有,用戶會(huì)覺(jué)得理所當(dāng)然。這個(gè)層次的需求,還談不上用戶滿意與否;

期望型的需求:不是產(chǎn)品必須的功能屬性,可能用戶自己也不清楚一些功能,但是又恰恰是用戶希望看到的。如果這種需求實(shí)現(xiàn)得越多,用戶會(huì)越滿意;如果沒(méi)有滿足用戶這種期望值,用戶會(huì)不滿意;

興奮型的需求:對(duì)于一些無(wú)關(guān)緊要的功能需求,如果產(chǎn)品滿足了這些需求,用戶會(huì)非常滿意,從而提高用戶忠誠(chéng)度,最后把它推薦給好友。

方案的決策

通過(guò)以上標(biāo)準(zhǔn)對(duì)方案進(jìn)行分析,最后涉及到?jīng)Q策,不管哪種類(lèi)型的角色分配,都需要進(jìn)行決策,這里可分為以下兩種:

個(gè)人決策:對(duì)于最后的方案選擇,由一個(gè)人進(jìn)行「拍板」,這種決策方式速度快,容易抓到事情本質(zhì);但是缺點(diǎn)是缺少了團(tuán)隊(duì)氛圍,不太建議這種一人說(shuō)了算的決策方式;

群體決策:這種決策方式團(tuán)隊(duì)氛圍會(huì)好很多,通過(guò)發(fā)表每個(gè)人的看法,最后得到合理的、正確的、富有創(chuàng)造力的解決方案;但是缺點(diǎn)就是因?yàn)閰⑴c者多,需要比較長(zhǎng)的時(shí)間進(jìn)行決策,即使這樣,也建議使用這種決策方式,不過(guò)前提是需要事先確定一個(gè)明確的負(fù)責(zé)人,這樣可以對(duì)決策后果進(jìn)行負(fù)責(zé)。

從小的方面來(lái)講,決策也可分為:

內(nèi)部 review:設(shè)計(jì)的作品先在團(tuán)隊(duì)內(nèi)部進(jìn)行過(guò)稿,然后修改,切忌全部做完才進(jìn)行 review,需要做完一步就進(jìn)行內(nèi)部討論;

外部評(píng)審:以會(huì)議的形式展開(kāi),召集大家對(duì)作品進(jìn)行講解。

方案的推銷(xiāo)

確定了最終方案后,我們需要把它推銷(xiāo)出去,具體有以下幾種方法:

將思考過(guò)程可視化:可以采取上一篇文章的表格分析方式,讓設(shè)計(jì)更有說(shuō)服力;

自己人效應(yīng):對(duì)自己人說(shuō)的一些建議方法更加信賴(lài);

準(zhǔn)備一份PPT:展示設(shè)計(jì)思路;

講一個(gè)故事:以用戶的某個(gè)使用場(chǎng)景開(kāi)頭,一步步講解用戶的使用情況,慢慢過(guò)渡到產(chǎn)品功能設(shè)計(jì);

掌握必要的演講技巧和表達(dá)能力:包括口頭和文字表達(dá)能力,通過(guò)這兩種表達(dá)理清思路,也更好讓別人進(jìn)行反饋。

最后想說(shuō)的一些話:

作為交互(設(shè)計(jì))專(zhuān)業(yè)人士,我們需要把握好一個(gè)尺度:什么該堅(jiān)持,什么不該堅(jiān)持,對(duì)于一些專(zhuān)業(yè)方面的東西,我們需要團(tuán)隊(duì)內(nèi)部人員都堅(jiān)持,這樣目標(biāo)會(huì)更清晰;但是對(duì)于一些比較小的設(shè)計(jì)細(xì)節(jié),有時(shí)候可以適當(dāng)妥協(xié)。

總結(jié)

如何對(duì)設(shè)計(jì)需求分析結(jié)果進(jìn)行選擇:

  • 團(tuán)隊(duì)角色分配
  • 交互方案評(píng)價(jià)標(biāo)準(zhǔn):可用性、易用性、吸引力
  • 方案的決策

  • 方案的推銷(xiāo)

文章來(lái)源:優(yōu)設(shè)    作者:Pony歐尼的日常

上億人使用的百度網(wǎng)盤(pán)會(huì)員中心,是如何做體驗(yàn)設(shè)計(jì)的?

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

以下是百度網(wǎng)盤(pán)UE團(tuán)隊(duì)近期對(duì)會(huì)員中心體驗(yàn)進(jìn)行優(yōu)化,希望對(duì)大家做商業(yè)化產(chǎn)品有所幫助。

項(xiàng)目背景

會(huì)員中心是承載著產(chǎn)品增值權(quán)益展示、購(gòu)買(mǎi)、管理的「集合地」。自2016年起推出會(huì)員和超級(jí)會(huì)員兩項(xiàng)增值服務(wù)至今已有4年時(shí)間,隨著時(shí)間推移,用戶對(duì)網(wǎng)盤(pán)會(huì)員的訴求越來(lái)越多樣,會(huì)員中心也不僅僅承載著支付能力,更多地是獲取福利信息和情感上的尊享感知,同時(shí)在產(chǎn)品框架上的拓展性和效率也有待提升,因此有了本次會(huì)員中心改版項(xiàng)目。

對(duì)于設(shè)計(jì)師而言,我們發(fā)起這個(gè)項(xiàng)目所面臨的挑戰(zhàn),不僅停留在用戶體驗(yàn)的優(yōu)化還需要兼顧商業(yè)轉(zhuǎn)化。接下來(lái)將從確定目標(biāo)、會(huì)員中心框架重構(gòu)、視覺(jué)語(yǔ)言升級(jí)、沉淀通用組件等方面,跟大家分享下改版背后的設(shè)計(jì)思考。

確認(rèn)目標(biāo)

在著手推進(jìn)項(xiàng)目設(shè)計(jì)前,我們通過(guò)定性和定量的分析,并組織多角色對(duì)本次升級(jí)的目標(biāo)進(jìn)行確認(rèn),本次升級(jí)的目標(biāo)是:提升用戶決策效率;提升用戶尊享感;沉淀設(shè)計(jì)組件庫(kù)。

1. 為什么要提升用戶決策效率?

會(huì)員中心是價(jià)值與信息的洼地,用戶需要在眾多特權(quán)、優(yōu)惠信息中做出決策。整個(gè)框架清晰、直觀、易懂,是提升用戶決策效率及滿意度的關(guān)鍵所在。

我們通過(guò)支付轉(zhuǎn)化漏斗分析并結(jié)合用戶反饋發(fā)現(xiàn),改版前,會(huì)員中心信息架構(gòu)比較扁平和單一,缺乏關(guān)鍵性信息的直觀展示,比如:優(yōu)惠信息、會(huì)員服務(wù)信息,導(dǎo)致部分用戶無(wú)法在付費(fèi)過(guò)程中更好地做決策。

此外,在支付流程上,操作鏈條較長(zhǎng),容易引起用戶厭倦,導(dǎo)致用戶流失。基于這些考慮,我們將對(duì)現(xiàn)有框架進(jìn)行升級(jí),以提升用戶的決策效率。

2. 為什么要提升用戶尊享感?

會(huì)員中心也是用戶感知身份變化、感知會(huì)員尊享的第一步。改版前,不同身份用戶(未開(kāi)通/會(huì)員/超級(jí)會(huì)員)看到的會(huì)員頁(yè)面卻是相同的,無(wú)法直觀感受到不同身份的差異。

通過(guò)UER的用戶訪談我們也發(fā)現(xiàn),很多用戶出現(xiàn)以下場(chǎng)景:

購(gòu)買(mǎi)會(huì)員后用戶,產(chǎn)生疑惑「是否購(gòu)買(mǎi)成功了嗎?」;身為超級(jí)會(huì)員用戶,「感受不到任何尊享感受」;快過(guò)期的會(huì)員用戶,「對(duì)會(huì)員/超級(jí)會(huì)員快過(guò)期的也感知不到,導(dǎo)致特權(quán)中斷,影響使用體驗(yàn)」…

因此,我們需要對(duì)整體身份的感知進(jìn)行升級(jí),讓用戶更清晰地感知到自己身份的層級(jí)。

3. 為什么要沉淀設(shè)計(jì)組件庫(kù)?

對(duì)于產(chǎn)品而言,會(huì)員中心也是會(huì)員類(lèi)活動(dòng)的主要運(yùn)營(yíng)渠道。

在日?!感〔娇炫堋沟枨笾?,為了提升項(xiàng)目組的開(kāi)發(fā)效率以及更好地實(shí)現(xiàn)產(chǎn)品側(cè)多場(chǎng)景模塊靈活調(diào)用的訴求,需要對(duì)復(fù)用率較高且靈活多變的模塊(尤其是支付模塊、特權(quán)模塊)進(jìn)行組件化。因此我們也對(duì)多個(gè)模塊進(jìn)行組件沉淀,提升產(chǎn)品迭代效率。不僅于此,組件化也能給用戶提供更加統(tǒng)一的認(rèn)知,做到產(chǎn)品體驗(yàn)上的統(tǒng)一和規(guī)范化。

設(shè)計(jì)落地

明確了目標(biāo)后,我們從以下維度進(jìn)行設(shè)計(jì)升級(jí),解決現(xiàn)存問(wèn)題:懂你所想,會(huì)員中心框架重構(gòu);凸顯尊享感知,視覺(jué)語(yǔ)言升級(jí);提升迭代效率,通用組件沉淀。

1. 懂你所想,會(huì)員中心框架重構(gòu)

我們本次框架重構(gòu)的關(guān)鍵詞就是「懂你所想」,只有更了解用戶,才能提供更符合用戶的選擇,從而提升用戶決策效率。因此,我們?cè)诮换タ蚣軐用嫔希隽艘韵聨准拢捍蛟旆謱硬季?;?qiáng)化關(guān)鍵信息;縮短支付步長(zhǎng);智能化推薦。

打造分層布局

進(jìn)入會(huì)員中心的用戶,根據(jù)會(huì)員成長(zhǎng)周期可被劃分為:歷史未付費(fèi)用戶、會(huì)員開(kāi)通中用戶、會(huì)員即將過(guò)期用戶、會(huì)員已過(guò)期用戶。

因此,在這次框架設(shè)計(jì)中,我們根據(jù)身份、動(dòng)機(jī)、行為的差異進(jìn)行分層布局。改變以往的「多人一面」的布局架構(gòu),打造出新的「多人多面」的靈活分層頁(yè)面布局。

當(dāng)用戶是歷史未付費(fèi)用戶時(shí),我們更加突出用戶的特權(quán)介紹和商品支付,便于用戶了解會(huì)員服務(wù)和商品信息;當(dāng)用戶是開(kāi)通中的用戶,我們更加突出用戶可尊享的福利信息,突出尊享感;當(dāng)用戶為即將過(guò)期用戶或已過(guò)期用戶時(shí),我們展示用戶常用特權(quán)信息,喚醒用戶付費(fèi)意愿,并為用戶提供便捷的續(xù)費(fèi)能力。

下面是改版前后效果對(duì)比,從單一身份感知到多元分層處理。

強(qiáng)化關(guān)鍵信息

關(guān)鍵信息也是用戶更為「關(guān)心」的信息,通過(guò)調(diào)研發(fā)現(xiàn),網(wǎng)盤(pán)用戶更加關(guān)注會(huì)員優(yōu)惠活動(dòng)信息、服務(wù)到期提醒以及會(huì)員之間的差異性,因此在本次升級(jí)中,我們對(duì)用戶所關(guān)心的決策信息進(jìn)行強(qiáng)化,恰如其分地展示便于用戶決策,同時(shí)提升用戶的付費(fèi)意愿。

新增運(yùn)營(yíng)渠道

通過(guò)用戶訪談,了解到很多用戶總是錯(cuò)過(guò)網(wǎng)盤(pán)的福利活動(dòng),不知道在哪里能接受到一手信息。

因此,本次升級(jí)我們?cè)跁?huì)員中心中新增了運(yùn)營(yíng)位,增加用戶關(guān)注的優(yōu)惠活動(dòng)的曝光。

服務(wù)到期提醒

針對(duì)即將過(guò)期或已過(guò)期的用戶,我們會(huì)展示用戶常用特權(quán)功能的即將到期的信息,避免用戶特權(quán)功能到期后,給用戶日常使用帶來(lái)困擾,比如使用視頻原畫(huà)備份等功能,我們也會(huì)提前告知給用戶:「3天后即將到期,將不再享有視頻原畫(huà)備份和在線解壓等11項(xiàng)特權(quán)」,讓用戶提前做決策。

強(qiáng)化特權(quán)的差異對(duì)比

此外,我們還強(qiáng)化了特權(quán)對(duì)比的差異,分別展示了普通用戶、會(huì)員用戶、超級(jí)會(huì)員用戶擁有特權(quán)功能的差異性,便于用戶根據(jù)自身需求選擇對(duì)應(yīng)更為合適的會(huì)員服務(wù),避免買(mǎi)錯(cuò)等一系列不便或者多花冤枉錢(qián)的行為。

縮短支付步長(zhǎng)

為了更方便用戶進(jìn)行支付,讓用戶付費(fèi)行為更加順暢絲滑,我們摒棄以往全頁(yè)面跳轉(zhuǎn)形式,采用了浮層收銀臺(tái)的方式,減少用戶在頁(yè)面間的跳轉(zhuǎn)而帶來(lái)的迷失感,達(dá)到簡(jiǎn)化支付路徑的目的。

也在用戶即將過(guò)期等狀態(tài),保留了原有前置展示商品和支付操作的方式,讓用戶一鍵完成續(xù)費(fèi),方便又快捷。同時(shí),也會(huì)在用戶選擇商品支付時(shí),展示用戶帳號(hào)信息,避免用戶買(mǎi)錯(cuò)的問(wèn)題。

智能化推薦

與以往不同,我們不局限于通過(guò)理性的信息展示,讓用戶自己搜尋信息、被動(dòng)匹配,同時(shí)我們也在不斷嘗試采用更加擬人化、對(duì)話感的方式觸達(dá)用戶,推送給用戶更為關(guān)注的信息,更加精細(xì)化地探索多樣的運(yùn)營(yíng)場(chǎng)景。

比如:針對(duì)已付費(fèi)用戶,結(jié)合用戶的使用場(chǎng)景,更多展示特權(quán)信息,如:「周末看視頻,2倍速、2K、極速加載缺一不可」;

當(dāng)我們上了會(huì)員新特權(quán)的時(shí)候,也會(huì)及時(shí)告知用戶,讓他們享受更加豐富的權(quán)益。

2. 凸顯尊享感知,視覺(jué)語(yǔ)言升級(jí)

本次對(duì)會(huì)員中心的視覺(jué)呈現(xiàn)也做了全新升級(jí),不僅凸顯會(huì)員的尊享感、情感化,同時(shí)兼顧用戶的識(shí)別效率及后續(xù)拓展性,針對(duì)這一目標(biāo),我們做了以下優(yōu)化:卡面升級(jí),提升身份感;品牌色優(yōu)化,確保拓展性;icon重塑,強(qiáng)化識(shí)別性;驚喜彩蛋,提升情感化。

卡片升級(jí),提升身份感

會(huì)員身份卡片是用戶直觀感受身份變化的第一步。本次卡片設(shè)計(jì)中,在卡片比例上,盡可能接近于實(shí)物卡片,并在卡面肌理表達(dá)上,采用磨砂質(zhì)地,更貼合用戶自然認(rèn)知,卡片顏色結(jié)合會(huì)員品牌色進(jìn)行設(shè)計(jì)。同時(shí)結(jié)合網(wǎng)盤(pán)品牌基因中的logo的「云」,提升品牌差異化。

當(dāng)用戶進(jìn)入會(huì)員中心時(shí),采用光影動(dòng)效,同時(shí)描繪「云」型,提升視覺(jué)層次感,同時(shí)加深用戶認(rèn)知。

品牌色優(yōu)化,確保拓展性

我們還重新定義了會(huì)員體系的品牌色,超級(jí)會(huì)員選用黑金配色來(lái)突顯最高級(jí)別身份。

主題色延續(xù)了網(wǎng)盤(pán)會(huì)員色系,超級(jí)會(huì)員為金色,會(huì)員為紅色,在此基礎(chǔ)上調(diào)整色彩明度。新配色在產(chǎn)品界面和運(yùn)營(yíng)活動(dòng)上,能給用戶帶來(lái)更加直觀的身份感知。

輔助色為黑白,因?yàn)樗巧适澜缰械?「 經(jīng)典 」 ,給人以簡(jiǎn)潔、純粹的審美感受和視覺(jué)享受。以黑白色作為會(huì)員體系的輔助色,可以襯托出黑金配色的尊享感。

icon重塑,強(qiáng)化識(shí)別性

在特權(quán)icon設(shè)計(jì)中,強(qiáng)化識(shí)別性是本次優(yōu)化的重點(diǎn),因?yàn)閳D標(biāo)的目的是用來(lái)輔助用戶識(shí)別,幫助用戶做決策的。

我們?cè)趇con表現(xiàn)手法上,從「線性」改成「面性」,增強(qiáng)視覺(jué)比重;去除底部圓形襯底,采用異型圖標(biāo),強(qiáng)化icon之前的差異化,同時(shí)異型的icon在占比較小的區(qū)域里使用更加節(jié)省空間,提升拓展性。

比如,當(dāng)用戶是未付費(fèi)時(shí),特權(quán)icon僅作為輔助圖形,因?yàn)樵谶@種場(chǎng)景下,icon遠(yuǎn)沒(méi)有文案更能幫助用戶清晰理解,避免用戶買(mǎi)錯(cuò)。

因此異型、面性、無(wú)襯底的icon處理手法,也是在拓展方面較優(yōu)選擇。

以下是icon優(yōu)化后的整體效果。

驚喜彩蛋,提升情感化

尊享感,不僅體現(xiàn)在功能、視覺(jué)層面,還體現(xiàn)在情感化關(guān)懷,因此我們通過(guò)彩蛋式翻卡的觸發(fā)形式,采用對(duì)話的方式,展示互動(dòng)文案。

當(dāng)用戶首次進(jìn)行翻卡時(shí),它會(huì)貼心問(wèn)候:「很高興你與你相遇,愿美好時(shí)光與你相伴?!?;當(dāng)用戶日?;?dòng)時(shí),它風(fēng)趣幽默:「據(jù)說(shuō)超級(jí)會(huì)員,法力無(wú)邊!」「你喜歡的樣子超級(jí)會(huì)員都有~」;當(dāng)有用戶關(guān)注的重要消息時(shí),它會(huì)及時(shí)預(yù)告式通知:「4.11日即將有一大波優(yōu)惠福利襲來(lái),超級(jí)會(huì)員最高5折哦」,從而營(yíng)造一個(gè)風(fēng)趣又貼心的小管家,也讓我們的網(wǎng)盤(pán)會(huì)員服務(wù)變得更加貼心。

3. 提升迭代效率,通用組件沉淀

會(huì)員中心包括個(gè)人信息展示、身份卡片、商品和支付、尊享特權(quán)、尊享福利、成長(zhǎng)體系、專(zhuān)屬內(nèi)容、積分兌換等模塊。

其中有多種模塊會(huì)在多場(chǎng)景中進(jìn)行復(fù)用,為了節(jié)省開(kāi)發(fā)及設(shè)計(jì)成本,同時(shí)保證體驗(yàn)一致性,我們本次也沉淀出能夠靈活調(diào)整各個(gè)模塊的位置的組件,來(lái)提升產(chǎn)品及運(yùn)營(yíng)效率。

比如:支付模塊;特權(quán)展示模塊。

支付模塊

支付模塊承載了會(huì)員類(lèi)商品信息的展示,會(huì)在多個(gè)場(chǎng)景出現(xiàn),比如:浮層收銀臺(tái)、會(huì)員中心頁(yè)面、全端收銀臺(tái),以及會(huì)員類(lèi)運(yùn)營(yíng)活動(dòng)。為了保證支付體驗(yàn)的一致性,我們優(yōu)先對(duì)支付模塊進(jìn)行統(tǒng)一和規(guī)范,包括其中的商品展示、優(yōu)惠展示、以及支付按鈕的規(guī)范化。

為了便于用戶感知到會(huì)員與超級(jí)會(huì)員之間的差異,避免錯(cuò)誤購(gòu)買(mǎi)帶來(lái)的困擾,我們通過(guò)品牌色(超級(jí)會(huì)員的金色,會(huì)員的紅色)進(jìn)行區(qū)分。

支付模塊的統(tǒng)一和差異,既能保持支付體驗(yàn)的一致性,也能避免用戶對(duì)會(huì)員權(quán)益產(chǎn)生誤解,為用戶帶來(lái)了更規(guī)范的支付體驗(yàn)。

特權(quán)展示模塊

對(duì)于特權(quán)展示模塊進(jìn)行特權(quán)展示的優(yōu)化,針對(duì)以往特權(quán)數(shù)量多占用空間大,以及特權(quán)展示信息過(guò)少用戶看不懂的問(wèn)題,不再采用平鋪的方式,而是采用利用橫向空間的側(cè)滑方式展示,節(jié)省更多空間;不再采用原有的特權(quán)圖標(biāo)+特權(quán)名稱(chēng)的方式,而是同時(shí)展示輔助特權(quán)信息,便于用戶更加了解特權(quán)內(nèi)容。

并將特權(quán)展示方式進(jìn)行組件化,當(dāng)有新特權(quán)上線時(shí),可直接通過(guò)后臺(tái)配置進(jìn)行上線,無(wú)需進(jìn)行開(kāi)發(fā),提升效率。

同時(shí),我們還完成了運(yùn)營(yíng)位、專(zhuān)享內(nèi)容、專(zhuān)屬推薦等多個(gè)模塊的組件化,也根據(jù)會(huì)員商業(yè)化的設(shè)計(jì)規(guī)范,形成會(huì)員中心的組件庫(kù),提升合作效率及用戶統(tǒng)一的認(rèn)知體驗(yàn)。

總結(jié)

以上就是本次會(huì)員中心改版項(xiàng)目的全過(guò)程,從前期用戶調(diào)研、目標(biāo)確定(1.提升用戶決策效率;2.提升用戶尊享感;3.提升迭代效率),到通過(guò)多維度地將目標(biāo)落地(1.懂你所想,會(huì)員中心框架重構(gòu);2.凸顯尊享感知,視覺(jué)語(yǔ)言升級(jí);3.提升迭代效率,通用組件沉淀),不僅優(yōu)化了體驗(yàn)、提高了效率,也對(duì)付費(fèi)轉(zhuǎn)化率有所提升。

本次會(huì)員中心改版,是網(wǎng)盤(pán)所有同學(xué)的共同努力,同時(shí)也是會(huì)員中心提供給用戶更多選擇、更率、更多服務(wù)的第一步,它不再是機(jī)械的信息展示和冰冷的支付平臺(tái),而是更懂用戶、提供給用戶更多元服務(wù)的聚集地。

目前還有很多不足和待完善的地方,我們也在盡最大努力為用戶提供更好更有價(jià)值的服務(wù),感謝大家一致以來(lái)的支持與陪伴 。

文章來(lái)源:優(yōu)設(shè)    作者:百度UE團(tuán)隊(duì)

APP數(shù)據(jù)可視化設(shè)計(jì)實(shí)戰(zhàn)分享

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

我最近一直在想自己要寫(xiě)什么,不如這次就來(lái)說(shuō)說(shuō)我最近在項(xiàng)目中遇到的問(wèn)題吧~


再給大家看看我的解決方案,如果大家有更好的方案歡迎留言,我們一起探討啊~


最近一兩年我所涉及的項(xiàng)目都是有關(guān)于將網(wǎng)頁(yè)的功能系統(tǒng)改成APP,而針對(duì)的用戶就是公司的業(yè)務(wù)經(jīng)理,是金融公司的業(yè)務(wù)經(jīng)理們,我們的甲方爸爸!

當(dāng)然這就意味著網(wǎng)頁(yè)的產(chǎn)品,會(huì)有大量的數(shù)據(jù),而且由于網(wǎng)頁(yè)產(chǎn)品的信息處理還沒(méi)有太與時(shí)俱進(jìn),所以大量的數(shù)據(jù)都是文字和數(shù)字的組合,因此要將這些數(shù)據(jù)改成APP時(shí),就覺(jué)得好難啊。

其實(shí)表單在APP上并不好放,最好的解決方法就是設(shè)計(jì)成圖表,而現(xiàn)在市面上圖標(biāo)樣式不管是網(wǎng)頁(yè)的還是APP一搜一大把,Ant Design有專(zhuān)門(mén)的數(shù)據(jù)網(wǎng)站,如下圖所示:




什么樣的都能找到,那么我為什么會(huì)覺(jué)得好難呢?因?yàn)閿?shù)據(jù)超多der~考慮的內(nèi)容又有很多,難免憂愁。



一、為什么要設(shè)計(jì)圖表?


因?yàn)閿?shù)據(jù)表單在手機(jī)上并不好展示,同時(shí)從用戶體驗(yàn)的角度上來(lái)考慮,數(shù)據(jù)本身都是數(shù)據(jù)組成,可讀性就不太好,因此如果把這些“數(shù)字”從商業(yè)目的、用戶動(dòng)機(jī)進(jìn)行有機(jī)組合、關(guān)聯(lián)或定義就使得數(shù)據(jù)變得有意義(價(jià)值),圖表只是最終的表現(xiàn)形式。



二、圖表由哪些元素構(gòu)成?


一張標(biāo)準(zhǔn)樣式的圖表基本上是如下圖所標(biāo)示的幾種元素組成,如下圖所示:



當(dāng)然這只是最基礎(chǔ)的一種圖標(biāo)形式,對(duì)于別的形式就不多介紹了,大家都有基礎(chǔ)知識(shí),本文將嘗試從圖表設(shè)計(jì)動(dòng)機(jī)的角度和大家一起探討如何更好的進(jìn)行圖表設(shè)計(jì)。



三、圖表設(shè)計(jì)?


1、明確數(shù)據(jù)指標(biāo)


首先,我們得先搞明白這些數(shù)據(jù)是怎么來(lái)的、干嘛的,盡可能要求他們給到你的是盡可能精準(zhǔn)的數(shù)據(jù),否則會(huì)導(dǎo)致接下來(lái)的工作前功盡棄。就舉我前幾天的例子來(lái)說(shuō)吧,產(chǎn)品給了我這樣一張圖,如下圖所示:


我沒(méi)有仔細(xì)的去問(wèn)一些具體的信息,比如數(shù)據(jù)最多的時(shí)候會(huì)是什么樣、業(yè)務(wù)想在這個(gè)表里看到什么信息、想要解決的問(wèn)題什么?這些我都沒(méi)有問(wèn)!


上來(lái)就是一頓設(shè)計(jì)操作,把表單設(shè)計(jì)成了這樣,如下圖所示:



結(jié)果在走查的時(shí)候,業(yè)務(wù)很明確的指出數(shù)據(jù)信息不夠多,他們想要在頁(yè)面上將所有的數(shù)據(jù)信息都能看到,而數(shù)據(jù)最多的情況,數(shù)據(jù)表單是長(zhǎng)這樣的,如下圖所示:



就是因?yàn)橐婚_(kāi)始在拿到表單的時(shí)候沒(méi)有仔細(xì)去分析,才會(huì)導(dǎo)致這種情況的發(fā)生,因此要如何改進(jìn)呢?




2、明確設(shè)計(jì)目的


其實(shí)圖表設(shè)計(jì)跟產(chǎn)品設(shè)計(jì)的思路有點(diǎn)類(lèi)似,一開(kāi)始要先明確的就是設(shè)計(jì)目標(biāo),但這個(gè)很容易被設(shè)計(jì)師所忽略,因此前期在缺少設(shè)計(jì)目標(biāo)支撐的情況下,設(shè)計(jì)師就會(huì)像一個(gè)沒(méi)有指揮的小樂(lè)手,閉著眼睛亂彈,沒(méi)有方向感。 


就像我之前設(shè)計(jì)方案被推翻,就是因?yàn)樗伎疾幻鞔_導(dǎo)致的,定義設(shè)計(jì)目標(biāo)的過(guò)程需要站在業(yè)務(wù)的角度和數(shù)據(jù)的角度進(jìn)行綜合分析從而進(jìn)行構(gòu)建,一方面需要考慮業(yè)務(wù)如何更簡(jiǎn)單的分析、理解數(shù)據(jù)從而提高決策效率;一方面又需要考慮數(shù)據(jù)本身如何更加精準(zhǔn)、一目了然的傳達(dá)給用戶。




3、規(guī)劃設(shè)計(jì)方案


我在寫(xiě)這篇文章的時(shí)候,看了很多相關(guān)的圖表文章,很多都是分析哪些不同類(lèi)型的圖表,配色上要怎么處理,或者哪些圖標(biāo)是用在什么地方的,對(duì)我都沒(méi)有太大幫助,因?yàn)閳D表設(shè)計(jì)并不是普通的只是要好看的圖表而已。



4、解決問(wèn)題


重新設(shè)計(jì)之前,我去找業(yè)務(wù)很詳細(xì)的了解了他們對(duì)于數(shù)據(jù)的需求,想要一目了然的看到所有的數(shù)據(jù)對(duì)比信息,數(shù)據(jù)在表單中要全部展示出來(lái),數(shù)據(jù)后臺(tái)每天都會(huì)刷新,針對(duì)的場(chǎng)景是來(lái)自在去拜訪客戶路途中查看客戶目前的信息,我就將圖表改成了下圖所示:



由于面對(duì)的數(shù)據(jù)信息比較多,條紋圖比較符合多數(shù)據(jù)的信息,當(dāng)然這是數(shù)據(jù)最多的時(shí)候出現(xiàn)的情況,每家公司出現(xiàn)的數(shù)據(jù)是根據(jù)業(yè)務(wù)所提交的信息展現(xiàn)的。


在功能確定了之后,就是我們的細(xì)節(jié)問(wèn)題,不是說(shuō)我們?cè)?50*1624的畫(huà)布上設(shè)計(jì)好了圖表就行了,我們還要考慮到適配的問(wèn)題,如下圖所示:



屏幕較窄的時(shí)候,將X軸的標(biāo)簽文字打斜,保證數(shù)據(jù)正常閱讀的同時(shí)也不影響美觀度。還有一種解決方案就是有連續(xù)的數(shù)字時(shí),可以有簡(jiǎn)寫(xiě)。



四、如何選深色底和淺色底


我們可以先來(lái)一個(gè)對(duì)比圖,同樣的數(shù)據(jù)在深色背景和淺色背景下的圖表可讀性做對(duì)比,如下圖所示:



很顯然淺色背景下的圖表閱讀效率更高,那么面對(duì)復(fù)雜數(shù)據(jù)的時(shí)候,情況是否一致呢?如下圖所示:



很顯然,深色更適合展示信息比較多的,突出重點(diǎn)信息的頁(yè)面,因此我們?cè)谡覕?shù)據(jù)頁(yè)面參考,在選擇深色和淺色背景里猶豫的,可以參考一下。




五、劃重點(diǎn)


這里討論的只是我在公司項(xiàng)目中的其中一個(gè)圖表設(shè)計(jì),不能說(shuō)做的很多,只是分享一下自己在試錯(cuò)的過(guò)程中的成長(zhǎng),從web端改到APP,都會(huì)說(shuō)減少一些功能,讓產(chǎn)品更好用,但是總有不想砍功能的需求方,如何滿足這些需求,是需要我們一直都在思考的事情。


轉(zhuǎn)自:ui中國(guó)-潘團(tuán)子


國(guó)外設(shè)計(jì)師分析的全新UI趨勢(shì),原來(lái)是它~

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

分享火爆Dribbble和Ins的設(shè)計(jì)趨勢(shì)




相信最近很多小伙伴在逛Dribbble時(shí)候,發(fā)現(xiàn)最近流行一波新的設(shè)計(jì)風(fēng)格,和以往不同的是,這次趨勢(shì)又回到之前擬物化了,但它與純擬物化還是有區(qū)別的,現(xiàn)在它有一個(gè)流行詞語(yǔ)叫“新擬態(tài)”,今天就和大家分享下國(guó)外一位設(shè)計(jì)師對(duì)這個(gè)趨勢(shì)的看法!





擬態(tài)化是什么?

-

雖然UI以各種擬態(tài)化的形式存在(例如,您的桌面OS垃圾桶),現(xiàn)在這種風(fēng)格的趨勢(shì)更加明顯。正如卡米爾·法拉納(Kamil Falana)指出的那樣,從無(wú)生命的“表達(dá)”到現(xiàn)實(shí)主義的過(guò)渡開(kāi)始出現(xiàn)。



不久前,我們還觀察到,這種變化開(kāi)始在我們身邊發(fā)生,蘋(píng)果(IOS13系統(tǒng))就是一個(gè)很好的例子。向最小化設(shè)計(jì)和輕擬物化發(fā)展,最終帶來(lái)了無(wú)紋理3d視覺(jué)感官。受到了大家的喜歡,來(lái)看一張高清圖。






擬物化風(fēng)格的回歸,會(huì)更好嗎?
-

如下圖設(shè)計(jì)風(fēng)格,在dribbble上獲得認(rèn)可度比較高!


Dribbble用戶alexplyuto的作品獲得了四千多次贊,并帶動(dòng)了這一趨勢(shì)。


這種設(shè)計(jì)引發(fā)了一波設(shè)計(jì)潮流趨勢(shì),盡管其中的有部分并沒(méi)有實(shí)際意義(可滑動(dòng)的后退箭頭?),但這使我們對(duì)UI 再次產(chǎn)生濃厚的興趣! 

備注:可看出目前扁平化設(shè)計(jì)過(guò)于雷同,用戶審美疲勞。偶爾出現(xiàn)新設(shè)計(jì)趨勢(shì)風(fēng)格,反而更個(gè)給各位設(shè)計(jì)師們帶來(lái)新鮮感!





新風(fēng)格的特征點(diǎn)

-

由于按鈕的視覺(jué)表現(xiàn)看著變化不大(因?yàn)樾×艘恍?,不直觀),因此我們將重點(diǎn)放在實(shí)際的卡片概念上,以使這種視覺(jué)表現(xiàn)更能直觀感受出來(lái)



- 現(xiàn)代材料卡片(右圖)
如現(xiàn)代材料(升級(jí)版)卡片,通常是在畫(huà)布中以浮層的形式出現(xiàn),厚度更加明顯。陰影既可以增加深度,也可以在很多情況下定義形狀本身,因?yàn)殛幱巴ǔJ菬o(wú)邊界的。 

- 擬態(tài)化卡片(左圖)
擬態(tài)化卡片從背景中突出。它是由與背景顏色完全相同的卡片制成的凸起形狀。當(dāng)我們從側(cè)面看時(shí),它不會(huì)浮起來(lái)。 
通過(guò)調(diào)節(jié)兩個(gè)陰影, 一個(gè)陰影為負(fù)值,另一個(gè)陰影為正值,很容易實(shí)現(xiàn)此效果。 但是要使其正常顯示,我們的背景不能是全黑或全白。它至少需要一點(diǎn)色調(diào),以便可見(jiàn)“深色”和“淺色”陰影。您可以使用任何色調(diào)作為背景,以便根據(jù)您的選擇將其變暖或變冷。但是必須能看到深色或者淺色投影。 


這是例子,根據(jù)您的喜好進(jìn)行調(diào)整:






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

-

這種風(fēng)格的主要好處是“新鮮”(至少持續(xù)很長(zhǎng)時(shí)間)。它為界面帶來(lái)了“新感覺(jué)”,并使其脫穎而出。它也可以與其他樣式混合使用,這樣就避免很呆板整個(gè)畫(huà)面變成這種柔軟凸起的效果。

到目前為止,有一些問(wèn)題需要解決。我們發(fā)現(xiàn)了兩個(gè)主要問(wèn)題:

1. 可見(jiàn)性

2. 易用性


- 可見(jiàn)性

圖形與背景對(duì)比度的主要問(wèn)題是,當(dāng)它們都是相同的顏色時(shí),就沒(méi)有可測(cè)量的對(duì)比度;客觀上存在陰影,因此我們可以近似并嘗試測(cè)量其外部的第一個(gè)像素。在上面的示例中,我們得出了這些對(duì)比度值。


如您所見(jiàn),現(xiàn)代材料卡片和新擬態(tài)化卡片的對(duì)比度都非常低。并且卡片本身并不用于主要的操作控件上(只是一個(gè)背景),只要我們保持按鈕突出并具有足夠高的對(duì)比度,就可以了。 
兩者之間的差異很小,如果我們想為卡片使用更好的對(duì)比度,我們就必須這樣做: 


而且由于幾乎沒(méi)有人會(huì)嘗試使用如此強(qiáng)烈的陰影,這意味著其余UI元素必須可訪問(wèn)。這種假設(shè)得出的結(jié)論是,如果我們通過(guò)版式,相近度和與重要元素的對(duì)比來(lái)進(jìn)行正確的層次劃分,那么這些卡片/凸起的塑料卡片并不那么重要。

尚未對(duì)此進(jìn)行測(cè)試(我將嘗試找到時(shí)間做這件事),但現(xiàn)在我們假設(shè)下面元素的兩個(gè)“版本”均為“確定”。即使有些人看不到陰影,也有足夠的對(duì)比度讓他們看到圖標(biāo)并“使用它”。



- 易用性

盡管“按鈕”看起來(lái)像按鈕,但是如果圖標(biāo)本身與背景形成鮮明對(duì)比,它將仍然有效。 因此,這里要記住的主要事情是,如果要使用這種樣式,請(qǐng)以足夠高的對(duì)比度保留所有重要元素。

畢竟,大多數(shù)“現(xiàn)代材料”卡片視圖也不會(huì)通過(guò)陰影來(lái)做對(duì)比。 





僅僅是卡片嗎?

-

但是,如果我們決定將組件用作按鈕而不是卡片,則會(huì)出現(xiàn)可訪問(wèn)性的主要問(wèn)題。

我們可以像下面的示例一樣輕松創(chuàng)建帶有內(nèi)部陰影的按下?tīng)顟B(tài)。


對(duì)比度測(cè)試


這里的問(wèn)題實(shí)際上很大。 

此按下?tīng)顟B(tài)的對(duì)比度太小,不足以表示差異。是否可以通過(guò)改變的其余部分來(lái)表達(dá)按鈕的狀態(tài),這里有一些想法,例如使用輪廓和填充圖標(biāo),下劃線或甚至用顏色填充按下?tīng)顟B(tài)。


嘗試各種想法,但狀態(tài)必須立即被識(shí)別。 




開(kāi)發(fā)

-

開(kāi)發(fā)實(shí)現(xiàn)其實(shí)它比我們認(rèn)為的在CSS中實(shí)現(xiàn)“軟陰影”外觀要容易。我們尚未研究Swift和Kotlin,但我認(rèn)為這不應(yīng)該成為問(wèn)題。

https://neumorphism.io/#55b9f3(實(shí)現(xiàn)新擬態(tài)效果CSS代碼)






其他影響

-
剛才說(shuō)的形狀只是一方面。這種設(shè)計(jì)新樣式還帶有更多的按鈕和圖標(biāo)。通常情況下,我們只需要回到“過(guò)去的美好時(shí)光”并使用位圖。這似乎是一種回歸,不必?fù)?dān)心-這是沒(méi)有必要的。 

您可以輕松地將可開(kāi)發(fā)的設(shè)計(jì)與這些卡片形狀組合在一起(新擬態(tài)卡片),從而獲得很好的效果。







我們真的需要這些嗎?

-

盡管這一新趨勢(shì)影響了許多設(shè)計(jì)師,但對(duì)比以前使用的卡片組件可訪問(wèn)性問(wèn)題相比,它的問(wèn)題并不那么嚴(yán)重。

所以去瘋狂的順應(yīng)這一趨勢(shì),并對(duì)其進(jìn)行調(diào)整以使其成為您的趨勢(shì)。UI設(shè)計(jì)師的工作就是需要不斷來(lái)回挑戰(zhàn)自我,探索潮流,以符合產(chǎn)品審美。如果沒(méi)有這種不斷的探索的精神,所有產(chǎn)品將再次看起來(lái)相同,同質(zhì)化嚴(yán)重。



但也要記住,每個(gè)新趨勢(shì)都帶有不可抗拒性因素,如果要使用,必須精心的設(shè)計(jì)探索, 驗(yàn)證后才拿去面對(duì)用戶。 



個(gè)人感悟

-

本篇文章,作者通過(guò)對(duì)新擬態(tài)設(shè)計(jì)趨勢(shì)分析,在文中提及“新擬態(tài)”和以前材料卡片的區(qū)別,同時(shí)證實(shí)了新擬態(tài)風(fēng)格優(yōu)勢(shì)!但也存在一定的弊端!如何去權(quán)衡與設(shè)計(jì)的把控,需要設(shè)計(jì)師們多去研究探索!



就我個(gè)人而言,我認(rèn)為目前新擬態(tài)設(shè)計(jì)風(fēng)格, 其實(shí)更適合像車(chē)機(jī)那種偏實(shí)體硬件的HMI設(shè)計(jì)又或者智能硬件平臺(tái),智能櫥窗,智能鏡等,但是如果在移動(dòng)端去使用,那么需要去適當(dāng)做簡(jiǎn)化。如何去簡(jiǎn)化以適應(yīng)新趨勢(shì),這需要不斷去嘗試。 



這一趨勢(shì)如果要盛行起來(lái),需要大廠來(lái)引領(lǐng), 比如今年蘋(píng)果會(huì)出現(xiàn)的IOS14或者Google材料3.0到來(lái)。 扁平化是蘋(píng)果帶來(lái)的,材料設(shè)計(jì)師google帶來(lái)的。 

如今新擬態(tài)才初出茅廬,還未被廣泛使用,需要有先驅(qū)者引領(lǐng)。畢竟國(guó)內(nèi)的環(huán)境大家都不敢冒險(xiǎn)去嘗試運(yùn)用到線上! 



轉(zhuǎn)自:站酷-功夫UX 

這些 CSS 偽類(lèi),你可能還不知道,可以用起來(lái)了!

seo達(dá)人

css 偽類(lèi)是用于向某些選擇器添加特殊的效果,是動(dòng)態(tài)的,指當(dāng)前元素所處的狀態(tài)或者特性。只有一個(gè)元素達(dá)到一個(gè)特定狀態(tài)時(shí),它可能得到一個(gè)偽類(lèi)的樣式;當(dāng)狀態(tài)改變時(shí),它又會(huì)失去這個(gè)樣式。


這篇文章在一定程度上鼓勵(lì)你在構(gòu)建UI時(shí)使用更簡(jiǎn)單的CSS和更少的 JS。熟悉 CSS 所提供的一切是實(shí)現(xiàn)這一目標(biāo)的一種方法,另一種方法是實(shí)現(xiàn)最佳實(shí)踐并盡可能多地重用代碼。


接下介紹一些大家可能還不熟悉的一些偽類(lèi)及其用例,希望對(duì)大家日后有所幫助。


::first-line | 選擇文本的第一行

::first-line 偽元素在某塊級(jí)元素的第一行應(yīng)用樣式。第一行的長(zhǎng)度取決于很多因素,包括元素寬度,文檔寬度和文本的文字大小。


::first-line 偽元素只能在塊容器中,所以,::first-line偽元素只能在一個(gè)display值為block, inline-block, table-cell 或者 table-caption中有用。在其他的類(lèi)型中,::first-line 是不起作用的。


用法如下:


p:first-line {

 color: lightcoral;

}

::first-letter | 選擇這一行的第一字

CSS 偽元素 ::first-letter會(huì)選中某塊級(jí)元素第一行的第一個(gè)字母。用法如下:


<style>

   p::first-letter{

     color: red;

     font-size: 2em;

   }

</style>


<p>前端小智,不斷努,終身學(xué)習(xí)者!</p>

clipboard.png


::selection| 被用戶高亮的部分

::selection 偽元素應(yīng)用于文檔中被用戶高亮的部分(比如使用鼠標(biāo)或其他選擇設(shè)備選中的部分)。


div::selection {

     color: #409EFF;

}

clipboard.png


:root | 根元素

:root 偽類(lèi)匹配文檔樹(shù)的根元素。對(duì)于 HTML 來(lái)說(shuō),:root 表示 <html> 元素,除了優(yōu)先級(jí)更高之外,與 html 選擇器相同。


在聲明全局 CSS 變量時(shí) :root 會(huì)很有用:


:root {

 --main-color: hotpink;

 --pane-padding: 5px 42px;

}

:empty | 僅當(dāng)子項(xiàng)為空時(shí)才有作用

:empty 偽類(lèi)代表沒(méi)有子元素的元素。子元素只可以是元素節(jié)點(diǎn)或文本(包括空格),注釋或處理指令都不會(huì)產(chǎn)生影響。


div:empty {

 border: 2px solid orange;

 margin-bottom: 10px;

}


<div></div>

<div></div>

<div>

</div>

clipboard.png


只有第一個(gè)和第二個(gè)div有作用,因?yàn)樗鼈兇_實(shí)是空的,第三個(gè) div 沒(méi)有作用,因?yàn)樗幸粋€(gè)換行。


:only-child | 只有一個(gè)子元素才有作用

:only-child 匹配沒(méi)有任何兄弟元素的元素.等效的選擇器還可以寫(xiě)成 :first-child:last-child或者:nth-child(1):nth-last-child(1),當(dāng)然,前者的權(quán)重會(huì)低一點(diǎn)。


p:only-child{

 background: #409EFF;

}


<div>

 <p>第一個(gè)沒(méi)有任何兄弟元素的元素</p>

</div>

<div>

 <p>第二個(gè)</p>

 <p>第二個(gè)</p>

</div>

clipboard.png


:first-of-type | 選擇指定類(lèi)型的第一個(gè)子元素

:first-of-type表示一組兄弟元素中其類(lèi)型的第一個(gè)元素。


.innerDiv p:first-of-type {

 color: orangered;

}

上面表示將 .innerDiv 內(nèi)的第一個(gè)元素為 p 的顏色設(shè)置為橘色。


<div class="innerDiv">

   <div>Div1</div>

   <p>These are the necessary steps</p>

   <p>hiya</p>

   

   <p>

       Do <em>not</em> push the brake at the same time as the accelerator.

   </p>

   <div>Div2</div>

</div>

clipboard.png


:last-of-type | 選擇指定類(lèi)型的最后一個(gè)子元素

:last-of-type CSS 偽類(lèi) 表示了在(它父元素的)子元素列表中,最后一個(gè)給定類(lèi)型的元素。當(dāng)代碼類(lèi)似Parent tagName:last-of-type的作用區(qū)域包含父元素的所有子元素中的最后一個(gè)選定元素,也包括子元素的最后一個(gè)子元素并以此類(lèi)推。


.innerDiv p:last-of-type {

   color: orangered;

}

上面表示將 .innerDiv 內(nèi)的的最后一個(gè)元素為 p 的顏色設(shè)置為橘色。


clipboard.png


nth-of-type() | 選擇指定類(lèi)型的子元素

:nth-of-type() 這個(gè) CSS 偽類(lèi)是針對(duì)具有一組兄弟節(jié)點(diǎn)的標(biāo)簽, 用 n 來(lái)篩選出在一組兄弟節(jié)點(diǎn)的位置。


.innerDiv p:nth-of-type(1) {

   color: orangered;

}


<div class="innerDiv">

 <div>Div1</div>

 <p>These are the necessary steps</p>

 <p>hiya</p>

 

 <p>

     Do <em>not</em> push the brake at the same time as the accelerator.

 </p>

 <div>Div2</div>

</div>

clipboard.png


:nth-last-of-type() | 在列表末尾選擇類(lèi)型的子元素

:nth-last-of-type(an+b) 這個(gè) CSS 偽類(lèi) 匹配那些在它之后有 an+b-1 個(gè)相同類(lèi)型兄弟節(jié)點(diǎn)的元素,其中 n 為正值或零值。它基本上和 :nth-of-type 一樣,只是它從結(jié)尾處反序計(jì)數(shù),而不是從開(kāi)頭處。


.innerDiv p:nth-last-of-type(1) {

   color: orangered;

}

這會(huì)選擇innerDiv元素中包含的類(lèi)型為p元素的列表中的最后一個(gè)子元素。


<div class="innerDiv">

   <p>These are the necessary steps</p>

   <p>hiya</p>

   <div>Div1</div>

   <p>

       Do the same.

   </p>

   <div>Div2</div>

</div>

clipboard.png


:link | 選擇一個(gè)未訪問(wèn)的超鏈接

:link偽類(lèi)選擇器是用來(lái)選中元素當(dāng)中的鏈接。它將會(huì)選中所有尚未訪問(wèn)的鏈接,包括那些已經(jīng)給定了其他偽類(lèi)選擇器的鏈接(例如:hover選擇器,:active選擇器,:visited選擇器)。


為了可以正確地渲染鏈接元素的樣式,:link偽類(lèi)選擇器應(yīng)當(dāng)放在其他偽類(lèi)選擇器的前面,并且遵循LVHA的先后順序,即::link — :visited — :hover — :active。:focus偽類(lèi)選擇器常伴隨在:hover偽類(lèi)選擇器左右,需要根據(jù)你想要實(shí)現(xiàn)的效果確定它們的順序。


a:link {

   color: orangered;

}

<a href="/login">Login<a>

clipboard.png


:checked | 選擇一個(gè)選中的復(fù)選框

:checked CSS 偽類(lèi)選擇器表示任何處于選中狀態(tài)的radio(<input type="radio">), checkbox (<input type="checkbox">) 或("select") 元素中的option HTML元素("option")。


input:checked {

 box-shadow: 0 0 0 3px hotpink;

}


<input type="checkbox" />

clipboard.png


大家都說(shuō)簡(jiǎn)歷沒(méi)項(xiàng)目寫(xiě),我就幫大家找了一個(gè)項(xiàng)目,還附贈(zèng)【搭建教程】。


:valid | 選擇一個(gè)有效的元素

:valid CSS 偽類(lèi)表示內(nèi)容驗(yàn)證正確的<input> 或其他 <form> 元素。這能簡(jiǎn)單地將校驗(yàn)字段展示為一種能讓用戶辨別出其輸入數(shù)據(jù)的正確性的樣式。


input:valid {

 box-shadow: 0 0 0 3px hotpink;

}

clipboard.png


:invalid | 選擇一個(gè)無(wú)效的元素

:invalid CSS 偽類(lèi) 表示任意內(nèi)容未通過(guò)驗(yàn)證的 <input> 或其他 <form> 元素。


input[type="text"]:invalid {

   border-color: red;

}

:lang() | 通過(guò)指定的lang值選擇一個(gè)元素

:lang() CSS 偽類(lèi)基于元素語(yǔ)言來(lái)匹配頁(yè)面元素。


/* 選取任意的英文(en)段落 */

p:lang(en) {

 quotes: '\201C' '\201D' '\2018' '\2019';

}

:not() | 用來(lái)匹配不符合一組選擇器的元素

CSS 偽類(lèi) :not() 用來(lái)匹配不符合一組選擇器的元素。由于它的作用是防止特定的元素被選中,它也被稱(chēng)為反選偽類(lèi)(negation pseudo-class)。


來(lái)看一個(gè)例子:


.innerDiv :not(p) {

   color: lightcoral;

}

<div class="innerDiv">

   <p>Paragraph 1</p>

   <p>Paragraph 2</p>

   <div>Div 1</div>

   <p>Paragraph 3</p>

   <div>Div 2</div>

</div>

clipboard.png


Div 1 和 Div 2會(huì)被選中,p 不會(huì)被選 中。


原文:https://blog.bitsrc.io/css-ps...


代碼部署后可能存在的BUG沒(méi)法實(shí)時(shí)知道,事后為了解決這些BUG,花了大量的時(shí)間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個(gè)好用的BUG監(jiān)控工具 Fundebug。



如何設(shè)計(jì)商品列表框架,才能讓更多人買(mǎi)買(mǎi)買(mǎi)?

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

今年已經(jīng)是 2020 了,各位作為時(shí)代的弄潮兒,上網(wǎng)沖浪是生活中的不可或缺,豐富的沖浪生活中必不可少的當(dāng)然是買(mǎi)買(mǎi)買(mǎi),面對(duì)琳瑯滿目的商品圖與文案,用戶怎樣才能快速抓到重點(diǎn)?或者說(shuō),怎么樣才能讓信息出現(xiàn)在合適的位置?

視覺(jué)瀏覽模型

首先我們要了解瀏覽信息這個(gè)動(dòng)作的本質(zhì)和特征,瀏覽的本質(zhì)就是大腦通過(guò)眼睛去提取信息,是一個(gè)傳達(dá)→解碼的過(guò)程,在這個(gè)過(guò)程中又存在一些特性,我們可以利用這些特性去進(jìn)行一些更的信息傳達(dá)。

受閱讀習(xí)慣影響,人們閱讀的起始端都是在左側(cè),結(jié)合依據(jù)尼爾森等老前輩發(fā)布的眼球軌跡研究報(bào)告可知,視覺(jué)瀏覽習(xí)慣呈「F」型且是不受控的潛意識(shí)習(xí)慣;同時(shí)可以延伸出例如「E」、「Z」等瀏覽模型,我們可以根據(jù)這些視覺(jué)模型的特性,結(jié)合產(chǎn)品的戰(zhàn)略層目標(biāo),將信息放置在合適的位置,已達(dá)到信息傳達(dá)率的最大化。

單元結(jié)構(gòu)

了解了基本的視覺(jué)瀏覽模型,那我們的地基就已經(jīng)搭建好了,接下來(lái)我們來(lái)看看地基搞定之后的結(jié)構(gòu)要怎么去布局。

首先我們需要清晰產(chǎn)品的屬性,電商平臺(tái)的本質(zhì)是物品的交易,因?yàn)榫€上的特殊性,產(chǎn)品中圖片與文案對(duì)于平臺(tái)的 GMV 就存在最直接的關(guān)系。這個(gè)時(shí)候,單元布局的輪廓就出來(lái)了,就是「商品圖+關(guān)鍵詞文案」。

同時(shí),不同平臺(tái)戰(zhàn)略方向、發(fā)展階段、團(tuán)隊(duì)規(guī)模等因素的不同,所針對(duì)的用戶群體、消費(fèi)階層、心智、審美等各個(gè)因素都會(huì)大不相同,有時(shí)候甚至在同一平臺(tái)中針對(duì)不同的活動(dòng)、不同的品類(lèi)進(jìn)行細(xì)致的場(chǎng)景劃分,產(chǎn)生不同的單元結(jié)構(gòu)以滿足商業(yè)目的上的需要。

720° 全方位了解平臺(tái)的屬性特征后,我們就可以開(kāi)始利用這么信息來(lái)搭建基本的單元結(jié)構(gòu)了。

例如平臺(tái)主攻下沉市場(chǎng),用戶群體多為三四線,這個(gè)時(shí)候用戶吸引點(diǎn)在于商品的價(jià)格與賣(mài)點(diǎn)關(guān)鍵詞,這時(shí)候我們就可以拉大關(guān)鍵詞文案的占比,縮小圖片的占比,讓他們關(guān)注的內(nèi)容盡可能多的進(jìn)入他們的眼睛,吸引購(gòu)買(mǎi)意向模糊的用戶點(diǎn)擊,增加購(gòu)買(mǎi)意向明確的用戶匹配商品的速度,已達(dá)到 GMV 的提升。

簡(jiǎn)單來(lái)說(shuō),過(guò)程中需要考慮到平臺(tái)因素所產(chǎn)出的圖片尺寸/比例/精致度/是否統(tǒng)一等,與文案搭配所呈現(xiàn)的是否適用當(dāng)前消費(fèi)場(chǎng)景及用戶心智,是否可以提升用戶的轉(zhuǎn)化率,是否可以提升平臺(tái)的下單率。

單元的架構(gòu)是多樣且復(fù)雜的,就像一塊七巧板。重點(diǎn)就在于對(duì)于產(chǎn)品屬性和用戶行為、場(chǎng)景、心理等特征的分析,需要權(quán)衡各個(gè)關(guān)鍵點(diǎn)的重要性,把用戶需要看到的信息、我們想讓用戶看到的信息、用戶希望看到的信息以合適的結(jié)構(gòu)狀態(tài)呈現(xiàn)給他。

點(diǎn)睛標(biāo)簽

我們將大體架構(gòu)搭建好之后,剩下的就是要把細(xì)節(jié)元素給點(diǎn)亮,讓他們起到一個(gè)點(diǎn)睛的效果。

細(xì)分一下,其中涉及到的細(xì)節(jié)元素大致為活動(dòng)標(biāo)簽、折扣標(biāo)簽、跳轉(zhuǎn)按鈕等常規(guī)的分子部件,在結(jié)構(gòu)中,圖片、商品名稱(chēng)、價(jià)格是用戶關(guān)注的重點(diǎn),其他的部件則起到輔助刺激的作用。圖片和商品名稱(chēng)的大體結(jié)構(gòu)我們?cè)谏弦徊揭汛罱?,剩下?lái)我們看看這些小部件該如何合理歸置。

先從標(biāo)簽說(shuō)起。整體框架出來(lái)了,用戶所需要了解的商品信息就已經(jīng)基本呈現(xiàn)了,這個(gè)時(shí)候用戶心智上更多的主觀意向,尋找合適的商品,而標(biāo)簽的出現(xiàn),更像是一劑興奮劑,強(qiáng)烈告訴用戶:「這個(gè)品熱度第一!」、「這個(gè)品是款!」等我們刺激用戶的聲音,增強(qiáng)用戶查看的欲望。

這個(gè)時(shí)候疑問(wèn)來(lái)了,那放哪里合適呢?

活動(dòng)標(biāo)簽,多為顯示該商品的熱度、促銷(xiāo)主題、排名等一些大的狀態(tài)性的信息,為的是在用戶心理層面給這個(gè)商品帶來(lái)更多的好感度,放置的位置可以結(jié)合具體場(chǎng)景去分析,可以考慮與商品圖進(jìn)行結(jié)合放置。

遵循由上而下滑動(dòng)的交互原理,我們可知在每個(gè)單元的頂部會(huì)是滑動(dòng)瀏覽時(shí)第一被眼睛識(shí)別的信息,而且可以利用這個(gè)心理去給還沒(méi)看到具體商品的用戶進(jìn)行一個(gè)心理鋪墊,比如商品的品質(zhì)、權(quán)威性等,先入為主的進(jìn)行心理建設(shè),再結(jié)合視覺(jué)瀏覽模型,合適的位置就出來(lái)了。

次要信息比如倒計(jì)時(shí)、商品折扣、商品特點(diǎn)等輔助信息,結(jié)合布局場(chǎng)景考慮,有的可與圖片一起放置增強(qiáng)品質(zhì)感,有的可與文案一起放置增加決策信息,有的可與價(jià)格一起放置,刺激用戶進(jìn)行決策,是很有靈性的一個(gè)點(diǎn)睛之筆。

最后是按鈕,在這里的按鈕可以理解為瀏覽過(guò)程的一個(gè)閉環(huán)節(jié)點(diǎn),也是一個(gè)操作的終結(jié)點(diǎn),是最后的臨門(mén)一腳。位置當(dāng)然是在右側(cè)最為合適,降低操作難度,同時(shí)也是整個(gè)單元的一個(gè)視覺(jué)終結(jié)點(diǎn),瀏覽完流程之后決定是否點(diǎn)擊跳轉(zhuǎn)。當(dāng)然,你可以利用你的方式去引導(dǎo)或刺激用戶點(diǎn)擊,你可以的。

總結(jié)

  • 多方面的了解戰(zhàn)略目標(biāo)、市場(chǎng)因素、用戶目標(biāo)、畫(huà)像、場(chǎng)景、心智等等信息;
  • 利用視覺(jué)瀏覽模型進(jìn)行信息的合理規(guī)劃和引導(dǎo);
  • 根據(jù)平臺(tái)的特性對(duì)框架進(jìn)行布局,左右結(jié)構(gòu)、上下結(jié)構(gòu),依據(jù)平臺(tái)特性而定;
  • 標(biāo)簽可以起到很合適的輔助作用,放在相應(yīng)的位置可以起到多樣的效果;

  • 按鈕作為閉環(huán)節(jié)點(diǎn),降低操作的難度,有需求的話可以用你的方式去刺激或者引導(dǎo)。

文章來(lái)源:優(yōu)設(shè)    作者:阿類(lèi)雜碎面

日歷

鏈接

個(gè)人資料

存檔