他的龙根本太大了_动漫美女被吸乳视频漫画_欧美xxxx性疯狂bbbb_天天看天天爽天天摸天天添

首頁

從這 3 個角度,找到提高用戶體驗的訣竅

資深UI設計者

用戶體驗是用戶在使用產品或者服務中的所有的主觀感受。因此我們設計的過程中要以用戶為中心進行設計,不能單單為了設計一個產品而設計,只關注產品設計本身的功能性。

在生活中好的用戶體驗設計的產品讓人使用舒適,而用戶體驗不好的設計往往讓人很糟糕。

用戶體驗比較好的:比如我們坐地鐵的過程中很準時,這就是好的用戶體驗;在吃海底撈時,看到好吃的西瓜,他們會給你打包,這就是好的用戶體驗。

用戶體驗比較不好的設計:比如在生活中有些插座設計,一個兩孔一個三孔,只能一次插一個,很氣人有沒有,難道上下錯位和間距拉大有這么難嗎?再比如蚊香的設計,很容易斷,每到夏天不斷幾個,都不好意思!

提升用戶體驗的方向

在產品設計中是否滿足用戶需求我們可以分為 3 個點來進行分析,主要是有用性;易用性;滿意度。

1. 有用性

有用性就是產品有用的設計功能,也是產品基礎的設計原則。

對于有用性而言,我們在這個過程可以主要在三個方向進行把控,就是:基本需求;期望需求;興奮需求。

基本型需求

基本型需求是用戶必需需求,用戶在產品中認為這是必需的功能,(這些基本需求是用戶認為必備的,有了用戶覺得是應該的,如果沒有這些需求,那么用戶在使用產品過程中間大部分會直接放棄,選擇其他家產品)。

比如淘寶產品中的訂單和商品功能就是基本型需求;微信中的聊天和通訊錄就是基本型需求;QQ 音樂中的播放頁、播放菜單就是基本需求。

期望型需求

基本型需求是用戶意愿型需求,用戶自己也不知道,但是期望獲得的功能。(這類需求就沒有基本需求那樣必備,是產品中期望需求體驗越多越好,用戶越滿意,反之用戶滿意度也會下降)。

這類需求是期望型需求,也是我們產品競爭力所在,因此往往人們在談論哪個產品好不好,通常是期望需求和興奮型需求。比如淘寶產品中能買到便宜產品,而且符合詳情頁中描述;比如微信產品中聊天語音/微信/視頻,聊天更加方便;比如 qq 音樂中的曲目和歌單數量增加,用戶就會很滿意,這也是期望需求。

興奮型需求

興奮型需求是用戶非常期望的需求。(這類需求滿意度高,有這些興奮型需求時即使不太完善,用戶也會滿意,做得非常好就會讓用戶興奮;沒有這些需求用戶也不會表現得不滿意)。

比如淘寶產品能夠更多滿足用戶多樣化的生活,各種生活服務提供給用戶;商品評價頁用戶互動,方便用戶可以熟悉產品好壞;比如微信產品中暗黑模式,滿意希望黑暗模式體驗的用戶需求;比如 qq 音樂中單曲熱評,讓我們對歌曲背后的故事,歌友的心路有了了解互動。

此外興奮性需求在產品中還有一些重要的點,比如微動效、情感化設計等等這些都可以讓產品提升很大的用戶體驗,和宣傳力度,因為用戶在談論產品好壞時候比較多的是說產品的興奮型需求。

需求分析模型

需求分析工具 KANO 模型,主要是幫助我們直觀的了解產品不用類型需求實現程度和用戶滿意度的對比,我們了解這些需求的時候,可以讓我們更好的看到這些功能點有哪些影響力。

2. 易用性

易用性就是產品好不好用,容易使用嗎。同時我覺得在有用性上產品經理需要考慮得比較多一點,而易用性上就是我們 UI、UE 需要重點負責和掌握的東西。

對于易用性而言,我們可以主要在三個方向進行把控,就是:上手快 ;操作快;負擔少。

上手快

上手快就是用戶使用產品容易上手,沒有啥學習成本。簡單的意思就是讓用戶不怎么動腦去想就知道下一步我要做什么,用戶操作滿足自己的心智模型。

心智模式是指深植我們心中關于我們自己、別人、組織及周圍世界每個層面的假設、形象和故事。并深受習慣思維、定勢思維、已有知識的局限。簡單理解就是在使用產品中滿足我們對產品的認知思維。當然文中介紹的只是心智模型的很一小部分,主要是想讓大家多去了解心智模型,更好地在以后的產品設計中運用它們。

比如淘寶的下單彈窗、微信的紅包、QQ 音樂的音樂播放,都是用戶容易上手,即使小白用戶在使用時,根據它們簡單的提示就可以操作,沒有太多復雜選項,一目了然。

操作便捷

操作便捷就是用戶在使用產品中操作效率高,沒有太多干擾項目。(這類設計一般就是操作方便,盡可能地減少干擾項目,增加快捷入口等)。

比如淘寶產品中的物流信息,沒有太多干擾直接出現在訂單的頭部位置,提高用戶查看商品物流信息的操作效率,提升了用戶體驗。比如微信聊天中的發送圖片功能,直接顯示最近圖片,快捷發送,提高用戶發送圖片的操作效率。比如 QQ 音樂的播放直接在首頁出現,方便用戶選歌切換,操作效率高。

負擔少

負擔少通常是減少記憶負擔,不讓用戶累著,為用戶分憂。

比如淘寶紅包展示就是在我的頁面里面直接顯示;比如微信錢包余額直接在錢包按鈕下方顯示,不用進入三級頁面;比如 qq 音樂自建歌單顯示歌單數量,減少用戶記憶負擔。

3. 滿意度

滿意度簡單理解就是用戶需求被滿足后的愉悅感。它是相對的概念,就是用戶需求和產品完成度之間的衡量。

對于滿意度而言,在產品設計上有很多方面,今天我們簡單講一下兩個方向的把控:視覺感官的刺激;獎勵。

視覺感官刺激

視覺感官刺激主要是超乎用戶想象的好看的視覺。而在 UI 設計中主要體現在動效設計、插畫等等。

比如淘寶產品中的圖標動效,趣味設計,提升用戶對產品的情感交流。比如微信聊天中的表情包功能,簡單的動作表達用戶的心理,好看又好玩。比如 QQ 音樂的加載像音符一樣有韻律地跳動著,給用戶帶來不一樣的審美體驗。

獎勵

獎勵是指用戶在完成一些操作時給予獎勵的設計。超出用戶預期,帶來愉悅。

比如淘寶用戶每次下單/參加活動獲得淘氣值,滿 1000 可以購買 88 會員,原件 888。比如 QQ 音樂的活動中心,用戶每日簽到累計可以獲得會員體驗獎勵,更優質內容的聲音享受激勵。

總結

用戶體驗設計最根本的就是以用戶為中心進行設計,本文主要從有用性、易用性、滿意度三個維度來把控用戶體驗設計,但是在日常工作中,因為產品業務的復雜程度,我們要因地制宜地進行設計,深入挖掘我們產品自己的體驗設計特色,增加自己的設計市場競爭力。

文章來源:優設    作者:阿韓設計

如果使用 JavaScript 原型實現繼承

seo達人

在這篇文章中,我們將討論原型以及如何在 JS 中使用它們進行繼承。我們還將會看到原型方法與基于類的繼承有何不同。


繼承

繼承是編程語言的一個顯著特征,隨著面向對象編程語言的引入而出現。這些語言大多是基于類的語言。在這里,類就像一個藍圖,對象是它的展現形式。就是說,要創建一個對象,首先我們必須創建一個類,然后我們可以從一個類創建任意數量的對象。


想象一下,我們有一個表示智能手機的類。這個類具有像其他智能手機一樣的可以拍照、有GPS定位等功能。下面是使用 c++ 來描述這樣的一個類:


class SmartPhone {

 public:

 void captureImages() {}

}


SmartPhone x;

x.captureImages()

我們創建了一個名為SmartPhone的類,它有一個名為capturePictures的方法用來拍照。


如果我們需要一個iPhone類,它可以捕捉圖像和一些特殊的功能,比如面部ID掃描。下面是兩種可能的解決方案:


1.將捕獲圖像功能與其他常見的智能手機功能,以及iPhone的特定功能一起重寫到一個新類中。但是這種方法需要更多的時間和精力,并且會引入更多的bug。


重用SmartPhone類中的功能,這就是繼承的作用,繼承也是重用其他類/對象中功能的一種方式。

這里是我們如何從SmartPhone類中繼承capturePictures方法,使用 c++ 實現如下:


class Iphone: public SmartPhone {

 public:

 void faceIDScan() {}

}


Iphone x


x.faceIDScan()


x.captureImages()

上面是一個簡單的繼承示例。 但是,它表明繼承可以使我們以某種方式重用代碼,從而使所生成的程序更不易出錯,并且花費更少的時間進行開發。


以下是關于類的一些重要信息:


繼承該功能的類稱為子類

被繼承的類稱為父類

一個類可以同時從多個類中繼承

我們可以具有多個繼承級別。 例如,類C繼承自類B,而類B繼承自類A

值得注意的是,類本身并沒有做任何事情。在從類創建對象之前,實際上沒有完成任何工作。我們將看到它為什么不同于JavaScript。


大家都說簡歷沒項目寫,我就幫大家找了一個項目,還附贈【搭建教程】。


原型是什么?

在 JS 中,所有對象都有一個特殊的內部屬性,該屬性基本上是對另一個對象的引用。 此引用取決于對象的創建方式。 在 ECMAScript/JavaScript規范中,它表示為[[Prototype]]。


由于[[Prototype]]鏈接到一個對象,所以該對象有自己的[[Prototype]]引用。這就是建立原型鏈的方式。


這個[[Prototype]]鏈是 JS 中繼承的構建塊。


__proto__ 對象

為了訪問對象的[[Prototype]],大多數瀏覽器都提供__proto__屬性。訪問方式如下:


obj.__proto__

需要注意的是,這個屬性不是 ECMAScript 標準的一部分,它實際上是由瀏覽器實現的。


獲取和設置原型方法

除了__proto__屬性外,還有一種訪問[[Prototype]]的標準方法:


Object.getPrototypeOf(obj);

對應的有個類似的方法來設置對象的[[Prototype]]:


Object.setPrototypeOf(obj, prototype);

[[Prototype]]和.prototype屬性

[[Prototype]] 只不過是一種用來表示物體原型的標準符號。 許多開發人員將其與.prototype屬性混淆,這是完全不同的事情,接著我們來研究一下.prototype屬性。


在 JS 中,有許多創建對象的方法。一種方法是使用構造函數,像這樣使用new關鍵字來調用它:


function SmartPhone(os) {

 this.os = os

}


let phone = new SmartPhone('Android')

在控制臺打印 phone 對象:


{

 os: "IPhone"

 __proto__{

   constructor: ? SmartPhone(os)

  __proto__: Object

 }

}

現在,如果我們希望在phone對象上有一些方法,我們可以在函數上使用.prototype屬性,如下所示:


SmartPhone.prototype.isAndroid = function () {

 return this.os === 'Android' || 'android'

}

再次創建phone對象時,打印 phone 對象如下:


{

 os: "Android"

 __proto__{

   isAndroid: ?()

   constructor: ? SmartPhone(os)

  __proto__: Object

 }

}

我們可以在對象的[[Prototype]]中看到isAndroid()方法。


簡而言之,.prototype屬性基本上就像由給定的構造函數創建的[[Prototype]]對象的藍圖。 在.prototype屬性/對象中聲明的所有內容都會在對象的[[Prototype]]中彈出。


實上,如果將 SmartPhone.prototype 與phone 的[[Prototype]]進行比較,就會發現它們是相同的:


console.log(Object.getPrototypeOf(phone) === SmartPhone.prototype);

// true

值得注意的是,我們還可以在構造函數中創建方法:


function ObjectA() {

 this.methodA = function () {}

}


let firstObj = new ObjectA()

console.log(firstObj)

這種方法的問題是當我們初始化一個新對象時。所有實例都有自己methodA的副本。相反,當我們在函數的原型上創建它時,對象的所有實例只共享方法的一個副本,顯然使用原型的方式效率會過高。


大家都說簡歷沒項目寫,我就幫大家找了一個項目,還附贈【搭建教程】。


當我們訪問屬性時這里發生了什么?

當我們訪問一個屬性以獲取它時,會發生以下情況:


JS 引擎查找對象上的屬性,如果找到了該屬性,然后返回它。否則,JS 引擎將通過查看[[Prototype]]來檢查對象的繼承屬性,如果找到該屬性,則返回它,否則,它會查找 [[Prototype]]的[[Prototype]]。 找到屬性或沒有[[Prototype]]時,該鏈結束,這意味著我們已經到達原型鏈的末端。


當我們設置/創建屬性時,JS 總是在對象本身上進行設置。 即使[[Prototype]]鏈上存在相同的屬性,下面是一個例子:


function MyObject() {}

MyObject.prototype.propA = 10; // 在原型上創建屬性


let myObject = new MyObject();

console.log(myObject.propA); // [[Prototype]]上的屬性

// 10


myObject.propA = 20; // 對象的屬性

console.log(myObject.propA);

// 20

在上面的示例中,我們創建了一個構造函數,該函數的[[Prototype]]上具有屬性propA。 當我們嘗試對其進行讀取操作時,會在控制臺中看到該值。 但是,當我們嘗試在對象本身上設置相同的屬性時;JS 使用給定值在對象上創建一個新屬性。 現在,如果我們不能直接訪問[[Prototype]]上的屬性。


值得注意的是,普通對象的[[Prototype]]鏈的末尾是內置的Object.prototype。 這就是為什么大多數對象共享許多方法(例如toString())的原因。 因為它們實際上是在Object.prototype上定義的。


使用原型繼承的各種方法

在 JS 中,無論我們如何創建對象,只有原型繼承,但這些方式還有一些區別,來看看:


對象字面量

在JavaScript中創建對象的最簡單方法是使用對象字面量:


let obj = {}

如果在瀏覽器的控制臺中打印obj,我們將看到以下內容:


clipboard.png


基本上,所有用文字面量創建的對象都繼承了Object.prototype的屬性。


需要注意的是__proto__對象引用了創建它的構造函數。 在這種情況下,constructor屬性指向Object構造函數。


使用對象構造函數

另一種不太常見的創建對象的方法是使用對象構造函數。JS 提供了一個名為Object的內置構造函數方法來創建對象。


let obj = new Object();

這種方法的結果與對象字面量的方式相同。它從Object.prototype繼承屬性。因為我們使用Object作為構造函數。


Object.create 方法

使用此輔助方法,我們可以創建一個帶有[[Prototype]]的對象,如下所示:


let SmartPhone = {

 captureImages: function() {}

}


let Iphone = Object.create(SmartPhone)


Iphone.captureImages()

這是在 JS 中使用繼承的最簡單方法之一。猜猜我們如何在沒有任何[[Prototype]]引用的情況下創建對象?


構造方法

與 JS 運行時提供的對象構造函數相似。 我們還可以創建自己的構造函數,以創建適合我們需求的對象,如下所示:


function SmartPhone(os) {

 this.os = os;

}


SmartPhone.prototype.isAndroid = function() {

 return this.os === 'Android';

};


SmartPhone.prototype.isIOS = function() {

 return this.os === 'iOS';

};

現在,我們想創建一個iPhone類,它應該有'iOS'作為它 os 屬性的值。它還應該有faceIDScan方法。


首先,我們必須創建一個Iphone構造函數,在其中,我們應該調用SmartPhone構造函數,如下所示:


function Iphone() {

  SmartPhone.call(this, 'iOS');

}

這會將Iphone構造函數中的this.os屬性設置為’iOS‘。


之所以調用SmartPhone.call方法,是因為我們需要更改 this 值以引用Iphone。 這類似于在面向對象的世界中調用父級的構造函數。


接下來的事情是,我們必須從SmartPhone構造函數繼承方法。 我們可以在此處使用Object.create朋友,如下所示:


Iphone.prototype = Object.create(SmartPhone.prototype);

現在,我們可以使用.prototype為Iphone添加方法,如下所示:


Iphone.prototype.faceIDScan = function() {};

最后,我們可以使用Iphone創建一個對象,如下所示:


let x = new Iphone();


// calling inherited method

console.log(x.isIOS()):

// true


ES6 class

使用ES6,整個過程非常簡單。 我們可以創建類(它們與C ++或其他任何基于類的語言中的類不同,只是在原型繼承之上的語法糖),然后從其他類派生新的類。


下面是我們如何在ES6中創建類:


class SmartPhone {

 constructor(os) {

   this.os = os;

 }

 isAndroid() {

   return this.os === 'Android';

 }

 isIos() {

   return this.os === 'iOS';

 }

};

現在,我們可以創建一個派生自SmartPhone的新類,如下所示:


class Iphone extends SmartPhone {

  constructor() {

    super.call('iOS');

  }

  faceIDScan() {}

}

我們不是調用SmartPhone.call,而是調用super.call。 在內部,JavaScript引擎會自動為我們執行此操作。


最后,我們可以使用Iphone創建一個對象,如下所示


let x = new Iphone();


x.faceIDScan();


// calling inherited method

console.log(x.isIos()):

// true

該ES6示例與先前的構造方法示例相同。 但是閱讀和理解起來要干凈得多。


原文:https://javascript.info/proto...


代碼部署后可能存在的BUG沒法實時知道,事后為了解決這些BUG,花了大量的時間進行log 調試,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug。

jquery,ajax請求并處理跨域

前端達人

自己寫了段jquery的ajax請求,并輸出到頁面的表格中



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery實現JSONP</title>
</head>
<body>
<div id="mydiv">
    <button id="btn">點擊</button>

    <div id="container">
        <!--每個條目-->
        <div class="item">
            <div class="item-title">作業名字</div>
            <div>
                <span class="item-content">創建時間</span>
                <span class="item-content">發布老師</span>
            </div>
        </div>
    </div>
</div>
</body>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<script type="text/javascript">
    $(function(){
        $("#btn").click(function(){

            $.ajax({
                async : true,
                url : "xxxxxxxxxxx",
                type : "GET",
                dataType : "json", // 返回的數據類型,設置為JSONP方式
                jsonp : 'callback', //指定一個查詢參數名稱來覆蓋默認的 jsonp 回調參數名 callback
                jsonpCallback: 'handleResponse', //設置回調函數名
                data : {
                    q : "javascript",
                    count : 1,
                    city:'北京'
                },
                success: function(response, status, xhr){
                    // console.log('狀態為:' + status + ',狀態是:' + xhr.statusText);
                    // console.log(response);

                    var group = response.hourly_forecast;

                    console.log(group,111111111)
                    console.log(group.length,222222222222)

                    //拼接字符串
                    var str = '';
                    //對數據做遍歷,拼接到頁面顯示
                    for(var i=0;i<group.length;i++){
                        str += '<div class="item">'+
                                '<div class="item-title">'+ group[i].date +'</div>'+
                                '<div>'+
                                '<span class="item-content">'+ group[i].hum +'</span>'+
                                '<span class="item-content">'+ group[i].pop +'</span>'+
                                '</div>'+
                                '</div>';
                    }
                    //放入頁面的容器顯示
                    $('#container').html(str);

                }
            });
        });
    });

    function handleResponse(response){
        // 對response數據進行操作代碼
        alert("jsonp success!");
    }
</script>
</html>


jquery中ajax處理跨域的三大方式


一、處理跨域的方式:

1.代理

2.XHR2

HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已經實現了跨域訪問。但ie10以下不支持

只需要在服務端填上響應頭:

header("Access-Control-Allow-Origin:*");

/*星號表示所有的域都可以接受,*/

header("Access-Control-Allow-Methods:GET,POST");

        

3.jsonP

原理:

 ajax本身是不可以跨域的, 通過產生一個script標簽來實現跨域。因為script標簽的src屬性是沒有跨域的限制的。

其實設置了dataType: 'jsonp'后,$.ajax方法就和ajax XmlHttpRequest沒什么關系了,取而代之的則是JSONP協議。JSONP是一個非官方的協議,它允許在服務器端集成Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問。

 ajax的跨域寫法:

(其余寫法和不跨域的一樣):

比如 


設計中該如何運用材質?

資深UI設計者

在很多設計作品中,我們不難發現對于材質的運用是十分廣泛的,合理地運用材質可以很大程度地提升作品的質感、細節感!但是相反,如果使用不得當它也可以毀掉一個原本不錯的作品,很多人對于材質的理解存在著一定局限性,那么本期內容:設計中材質有哪些運用形式?應該如何合理地運用材質?

材質運用的誤區

很多人對于材質并不陌生,但是每次使用后最終結果總是差強人意,這里首先要說的就是材質運用的幾個常見誤區:

  • 誤區一:材質種類用的越多越好,這是很多人容易走進的一個誤區,材質的運用要結合畫面整體,運用材質的目的是提升設計作品的出彩度,而非刻意使用,過多不同形式的材質會使得畫面雜亂。
  • 誤區二:不了解材質所傳遞的信息,其實不同形態的材質所傳遞的信息是不同的,有些材質也會存在一定的使用局限性。
  • 誤區三:一味地追求材質表現,而忽略了主體,材質在很多時候只是輔助畫面,提升整體細節感的一種手法,不能因為過度強調材質而搶了主體。

那么應該如何合理地運用材質呢?

背景添加材質

在日常工作中,背景添加材質、肌理的手法是很常用的,但是表現手法上也是有所不同的,表現形式一:將材質、肌理作為背景形象的一部分,也就是將材質做得足夠明顯,這么做的目的是豐富畫面視覺層次變化,增強畫面整體對比,比如我們常見的:

通過對比不難發現有無材質對于整體的影響,同樣的構圖,沒有材質變化的畫面給人一種很單薄、視覺形象不夠鮮明的感覺,但是通過添加材質、肌理,畫面整體的豐富度大大提升,背景畫面的變化增強,通過材質的變化,也使得主體的視覺形象也更加鮮明;將材質作為背景的組成部分,一定要切記時刻圍繞主體展開,主體的位置是不可撼動的。

表現形式二:將材質、肌理作為畫面視覺中相對較弱的表現形式,也就是做得不明顯,縮小看幾乎沒有,正常看的情況下又有一定的變化,這種表現形式目的在于增加畫面細節感,使得畫面不會因為缺少變化而略顯單調,比如:

這種表現手法放小了看對于畫面的影響并不大,但是如果 1:1 正常比例看,有材質的畫面會給人一種細節感豐富、畫面充滿不同層次的變化感受,這樣帶給作品更多的可塑性,使得畫面給人的視覺感受更深刻,同時也起到了一定的豐富畫面的作用。

文字添加材質

對于在文字中疊加材質在一些作品中是很常見的,同樣的文字,給予不同的材質也會呈現出不同的視覺感受,更多的目的是提升文字與整體形象的契合度,增強整體視覺沖擊力,比如:

材質在很大程度上可以提升文字的立體形象,使得文字在整體的視覺形象更加鮮明,但是對于材質的運用也要做到有所選擇,每種材質所傳遞的視覺信息都有所不同,要讓材質與文案、主題相契合才能將材質的效果發揮得淋淋盡致,這一點很重要,比如:

這里只考慮材質對文字的影響,首先我們解讀文字「第一戰場」,讓我們首先聯想到的就是破損、狼藉、金屬等等,那么在給這一文字添加材質時我們就要結合主題;上面兩種的材質分別是木紋和大理石,給人的感覺是太過干凈、簡約,與戰場主題不相符,所以說材質使用不得當,而后面兩個的材質分別是破損的石灰墻以及金屬,就能在很大程度上加強「戰場」這一主題的視覺形象,在視覺上屬于強調的作用。

材質使用技巧

材質的選擇和使用也是有一定技巧可言的,這里首先要說下:當我們想要使用材質時,應該如何選擇呢?

結合整體風格選擇,比如畫面整體偏簡約、干凈的感覺,我們就可以嘗試:大理石、木紋、石灰墻、花紋、木紋等等;再比如想要炫酷效果,那么我們就可以嘗試:金屬、破損墻壁、石頭等等,也就是說盡可能讓材質本身的風格偏向畫面整體風格,這樣可以讓材質更加融合畫面,不會給人一種很突兀、刻意的感覺。

結合產品選擇,一切的手法、技巧都是要服務于產品、主體的,結合產品選擇材質也是很常用的;比如一些化妝品海報,我們可能用到的材質會有:水、植物、大理石、木紋或者產品本身所固有的材質等等,目的是凸顯產品的美觀、功效,讓用戶能夠在背景及產品之間產生共鳴、聯想,這樣也能起到對產品的強調輔助作用。

關于使用:通常找到合適的材質后,會銳化一下,目的是增強材質的質感,然后會用不同的圖層模式去試,(一般情況下會用「正片疊底、濾色、疊加、柔光的模式」)以便找到最佳的使用形式;當然如果只用材質的紋理感覺,不用材質本身顏色的話,也可以去色后再去選擇圖層模式。

案例演示

結合本期內容,做了一個簡單的化妝品的海報,充分利用材質的不同表現形式,用分析的角度去觀察,第一步,通過運用 C4D 軟件,做一個簡易場景:

簡易場景搭建完成,因為只是黑白稿的場景,那么接下來就要通過分析產品確定材質的選擇:

產品的感覺是干凈、簡約的,那么就圍繞這個整體感覺,展開材質的貼合及制作,這里我選擇紋理相對不復雜的大理石為主要材質,結合用到木紋、金屬作為豐富畫面的材質:

這樣一個畫面給人的感覺是輕飄飄的,因為沒有影子,沒有將畫面做出光感的效果,而且整體缺少色感,這里我選擇把原本無色的材質換成有色材質,目的是增加畫面整體色感,其次將投影、倒影做好,光源定在左側,最終呈現的效果:

最終的呈現幾乎是用不同材質做出來的一個場景,雖然這里用到了很多不同顏色的材質,但是最終用到的材質屬性只有三種:大理石、木紋 、金屬,而且依舊貫徹干凈、簡約的視覺感受,將同種材質的不同形態運用在一起會給人視覺聯系的作用,不會給人一種雜亂的感覺!

總結

材質對畫面是輔助、豐富、增加細節感的作用,合理地運用材質可以提升設計作品的視覺層次、增強畫面質感!但是不管是哪種形式的材質,都要做到切合主題,要讓設計的每個元素做到有理有據,切記不要因為材質的過于凸顯而搶了主體。

文章來源:優設    作者:

又發現一個!攝影師出品的免費可商用圖庫!

資深UI設計者

大家平常都習慣去哪些免費圖庫網站找圖呢?雖然有一些老牌、圖片數量充足的圖庫,像是 Unsplash、Pixabay、Pexels,但后來經過人工智能和大數據學習的搜尋工具更深得我心,也能通過算法將質量較低、不適合使用的圖庫圖片先排除掉,大幅節省搜尋時間。如果在尋找圖片素材時想盡量避免使用和其他人重復的內容,試試看由攝影師親自拍攝的小型圖庫或許是個不錯的方法。

往期回顧:

本文要介紹的「DesignersPics」是一個持續更新、每個月都會加入新相片的圖庫,由攝影師 Jeshu John 親自拍攝修圖,收錄各種類型的相片,包括建筑、商業活動、概念、美食和飲料、大自然、人物、科技等等,照片數量不多,但有一定的獨特性。

DesignersPics 的相片都具有非常高的分辨率和畫質,可自由下載用于個人或商業用途,例如網站、投影片、包裝、標簽、HTML/PSD 模版、T-Shirts、廣告橫幅、商店或辦公室裝飾等等,無需標示出處來源。

DesignersPics

網站鏈接:http://www.designerspics.com/

使用教學

開啟 DesignersPics 從右上角的「Categories」選擇要瀏覽的相片分類,或是直接從首頁以日期方式瀏覽,網站亦提供搜尋功能,不過圖庫本身相片量不多,瀏覽上不會耗費太多時間。

每張相片會有預覽圖、標題和免費下載的按鈕。

進入圖片頁面,還能看到圖片尺寸、大小等等信息,點選「Download」就能下載取得 .jpg 格式的圖片文件。雖然 DesignersPics 沒有硬性規定必須標示作者來源,但如果你喜歡可以協助推廣。

值得一試的三個理由:

  • 由 Jeshu John 親自拍攝,每個月都會更新加入新的相片素材
  • 相片都具有大尺寸及高畫質,免費下載取得 .Jpg 格式

  • 可自由使用于個人或是商業用途

文章來源:優設    作者:Pseric

用戶行為分析和以用戶為中心的設計

ui設計分享達人

用戶行為分析,認識用戶滿足用戶最直接要求為設計中心

用戶行為分析

一、了解用戶需要什么
二、遵循用戶的習慣
1、用戶的生活背景及文化背景
2、用戶的生理狀況與需求狀況
2、以“自我為中心”的心理
二、顛覆用戶的習慣
1、改變一些有獨特性的頁面設計
2、發展中的知識和技術


用戶行為是指用戶在使用產品時的行為,針對網站而言,就是用戶在進入網站后所有的操作。網站用戶行為分析,就是在獲得網站王文量基本數據的情況下,對有關數據進行統計、分析,從中發現用戶訪問網站的規律,并將這些規律與產品目標及策略相結合,從中發現目前網站存在的問題,為進一步改善網站,滿足用戶需求,提升用戶體驗提供依據。


常見的用戶分析內容包含以下幾個方面內容:

(1)用戶在網站的停留時間、跳出率、回訪率、新用戶、回訪次數、回訪相隔天數;

(2)注冊用戶和非注冊用戶,分析二者之間的瀏覽習慣;

(3)用戶所使用的搜索引擎、關鍵詞、關聯關鍵詞和站內關鍵詞;

(4)用戶選擇什么樣的入口形式(廣告或者網站入口鏈接)更有效;

(5)用戶訪問網站流程,用來分析頁面結構和網頁覆蓋數據;

(6)用戶在頁面上的網頁熱點圖分部數據和網頁覆蓋圖數據;

(7)用戶在不同時間段的訪問量情況等;

(8)用戶對于網站的設計及字體配色的喜好程度等。


通過研究發現,80%的用戶僅僅使用了軟件20%的功能,而那些沒用的功能不僅浪費開發時間,也使軟件更加難以使用。一個成功的軟件應該是簡練精干的,可以單獨職能化的化解決的單個問題,要以滿足用戶最直接要求為 i設計中心。

很多網站往往為了滿足不同用戶的需求而增加功能,增加的功能必然需要再界面中用視覺呈現出來,這就會使網頁內容越來越多,很多的功能摻雜在一起,如果不經過過濾,必然會違背原來閱讀的初衷,所以每一個功能的增加都要慎重。


用戶對于互聯網功能需求也和對軟件的功能要求一樣。既喜歡簡單的,也喜歡復雜的。而且用戶的體驗需求也會隨時隨地的發生變化。這里的復雜不是指很難用、流程超級復雜、容易出錯的用戶體驗,而是指豐富的功能。


首先如何讓用戶體驗更簡單呢?當然將復雜的功能去除是最好的,如果實在無法去除某個復雜的功能,那就應該將其隱藏。因為大多數情況下,不常用的功能要比經常使用的功能占據更多的空間。


真正好的用戶體驗其實是給用戶所需的任何功能,為用戶設計一款“復雜”的產品,并將這款產品從表現上簡化,讓基礎功能操作簡化,給擴展功能保留使用入口即可。這個設計思路最具代表性的例子就是Microsoft Office和Adobe

系列產品。

              


用戶的需求并不是一層不變的,短期內用戶會因為某種強烈的需求要一個產品。隨著市場和行業的不斷發展,用戶對于一個產品的評價也會隨之發生變化。例如肯德基剛進入中國市場,被人們認為是一種的象征,小朋友以吃一次肯德基為榮。隨著經濟條件的發展,人們對于肯德基的體驗就完全不一樣了,熱量過高,不利于健康。這是一個很典型的對一個產品評價的變遷的過程。


用戶的期望值會因為因素而發生變化,有的來自外部的環境,有的來自產品自身,有的來自用戶成長。這些影響期望值的因素都會相輔相成的影響。有的時候不是我們的體驗或者產品變了,而是用戶發生了變化,所以用戶體驗的設計,除了要考慮產品本身以外,還要考慮用戶所需要的。


用戶通常會根據個人喜好做事,這就是習慣。習慣沒有好壞之分,關鍵要看根本的是什么。從用戶體驗的角度來說,任何產品都可以分兩種:遵循現有用戶習慣的產品和顛覆用戶習慣的產品。


在設計網站時可以在技術上創新,在業務模式上改變,也要在以下幾點上遵循用戶的習慣。


生活和文化背景是必須要遵循的習慣。想去顛覆或是磨滅一個群體甚至是民族的習慣,基本上會付出慘重的代價。例如使用紅色表現喜慶,白色表現悲傷,是中華民族幾千年的一種傳統習慣。如果想去改變這個習慣,使用其他顏色肯定起不到好效果。比如:可口可樂官網就是用紅色做的主色調,而紅色也與“可口可樂”品牌主色調相統一,點綴少量黃色,非常符合中國的傳統文化,也更容易使中國人接受。


在設計網站頁面時,還要考慮到網站用戶群體的基礎屬性,例如年齡層、身體承受力等。可以將頁面中的文字和圖片做放大處理,使老年人可以清楚的看到內容。比如一些老年網站,會采用大號字體,強對比色便于閱讀,而且在設計的時候也不會使用過多的色彩,雖然整體視覺可能顯得簡陋不夠豐富,但是充分的考慮了老年人人群的特點。


人在評定事情好壞的時候,通常喜歡以自我為中心,所以用戶體驗設計時,必須滿足用戶這種需求。使每個用戶可以體會到以“自我為中心”的優越感,這樣用戶就會成為最忠實的客戶。例如很多人沉迷于網游就是因為在現實生活中會受到各種各樣的限制,而無法實現真正的以自我為中心,而在網游的世界里卻可以完全實現。



在設計網站時,設計師通常會根據網站內容把網站劃分為不同的區塊,然后在分別進行美化。設計師在思維定勢中 自我感覺良好,一旦突破了思維定勢就會有新的收獲。作為用戶體驗的設計師來說,有下面兩個方面可以顛覆。


 在設計網站時,有很多頁面都具有獨特性,例如注冊頁、登錄頁和搜索頁。這些頁面用戶只會訪問一次或者幾次,而且這些網頁本身也是在網站發展的同時逐步完善的。所以,在用戶體驗的設計中,這些習慣就可以顛覆的。設計師可以根據個人的喜好對這些頁面進行設計、優化和修改,而不會影響用戶的習慣。


在網站設計中需要結合當前的潮流趨勢和的技術來表現網站,這樣才能給用戶帶來全新的體驗。頁面中流暢惡化便捷的交互應用,可以給用戶帶來良好的體驗。

尊重用戶秀感可以快速讓用戶接受網站,同時也會由于尊重了用戶的習慣而減少產品對用戶的刺激,會使得用戶很難成為網站的忠實用戶。另一方面,如果不尊重用戶習慣,用戶可能很難馬上接受。所以在用戶體驗設計時,要根據網站具體情況自我權衡。

最好的辦法就是在網站核心用戶體驗不變的基礎上,增加新功能、設計風格逐步變化、進行網站整體融合。

轉自:-zhan k


2020潘通年度流行色經典藍出爐!附配色方案

ui設計分享達人

2020潘通流行色




一覺醒來,2020 年潘通年度色就這么發布了。

2020年年度潘通色:「經典藍」

這款被命名為為「經典藍」(Classic Blue)的色彩沉穩耐看,雋永優雅,按照潘通官方的說法,「經典藍」仿佛暮色四合時的天空,寧神靜心,讓人駐足。「經典藍」是一種穩固可靠的色彩,給人確信感,撫慰著每一個期待穩定者的心靈。

為什么會選擇這樣一種藍色,潘通色彩研究所的執行董事 Leatrice Eiseman 在潘通官網上,予以詳細的解釋。

解讀「經典藍」

「我們生活在一個亟需信念和信任的時代。潘通 19-4052 經典藍 ,這種色彩正是自信和恒久的外化體現,這種堅實可靠的藍色調,更能與人產生深層的共鳴,令人心安。一望無際的藍色能夠喚起人類對于廣袤無垠夜空的無限遐想,經典藍鼓勵著我們透過顯而易見的事實,拓展思維,放飛想象。

經典藍敦促著我們更加深入地思考,開闊視野,進行更加深入的交流。」

——Leatrice Eiseman 潘通色彩研究所執行董事

從色彩心理學的角度上來看,藍色色相本身有著信任、信念的含義,也是的色相。在此之前,潘通曾經多次選擇藍色作為年度色, 2000 年的時候選擇天藍色(Cerulean),在 2005 年的時候則選擇了藍綠色(Blue Turquoise),2008 年的年度色叫鳶尾藍(Blue Iris),2016 年的年度色則是靜謐藍(Serenity)。

相比于這4種藍色,「經典藍」更為沉靜穩重,沒有一點攻擊性,也不顯得沉重,輕松而易于互動。

「經典藍」無疑是一個略顯保守,但是非常貼合當下語境的色彩。它充滿了確信感,讓人覺得安全,屏蔽了焦慮。同 2019 年充滿前進感的「活力珊瑚橙」相比,「經典藍」更加內斂和篤定,悄無聲息地增加每一個的信心。

除了發布這一年度色彩之外,潘通色彩研究所還專門制定了5套配色方案,這些配色方案應該會在接下來的 2020 年,得到更加廣泛的應用。

「經典藍」的5套官方配色方案

沉思

這是一套舒緩的配色方案,涼爽的藍色調和同樣柔和的暖色組合到一起,給人以沉靜的感覺。


呼吸

這套名為呼吸的配色方案當中,加入了更為經典的黑白色,選擇了對比更加強烈、更加富有活力的搭配方式。這樣的色彩搭配更容易喚起觀者的幸福感,讓你的設計更加具有田園牧歌的氣息。

沙漠暮色

「經典藍」的靈感來源之一就是夜幕降臨時的天空。而這套名為沙漠暮色的配色方案,就與此相關。充滿金屬質感的潘通色更能夠凸顯「沙漠」的閃亮質感,而恰為對比色的「經典藍」讓這套配色方案優雅無比。

異域風情

這套配色方案比起之前的配色更加豐富,更顯混搭,仿佛加入了天然的調味料。這種健康而自我的色彩搭配方式,讓人仿佛身在異域,不同于此地的文化,迥異與此時的感覺,獨特卻令人著迷。


非傳統

打破常規的桎梏,選擇異乎尋常的色彩搭配,而足夠傳統的「經典藍」恰恰構成了這種搭配方式當中,作為基礎的底色。這套配色方案指向時尚,突破規則,如同小品,有趣而俏皮。

「經典藍」的9套精選配色方案

為了更加方便線上的設計師來使用這些配色方案,優設的小編從官方提供的這些配色方案當中,精心挑選了 9 套適合進行數字設計的配色方案,并且標注上了相應的 HEX 值便于精準取色,請盡情取用:


轉自:站酷——hicatherine86 




Emscripten教程之emcc編譯命令

seo達人

語法


emcc [options] file ...

這個輸入文件file,既可以是clang可以編譯的C/C++語言,也可以是二進制形式的llvm bitcode或者人類可讀形式的llvm assembly文件。

參數

大部分clang或者gcc的選項(option)都是可以工作的,比如:

# 顯示信息 emcc --help # 顯示編譯器版本信息 emcc --version

如果想看當前Emscripten中clang版本支持的全部選項列表,可以直接使用命令:
clang --help.

emcc修改的或者emcc中新的選項列在下面:

首先是一些編譯優化flag,它們-O0,-O1,-O2,-Os,-Oz,-O3。

-O0:
不進行編譯優化(這是默認情況)。當你剛開始移植項目是推薦使用它,因為它會包含許多斷言。

-O1:
簡單優化。推薦你在既想縮短編譯時間又想編譯優化時使用。它畢竟比-O2級別的優化編譯起來快多了。它會進行asm.js和llvm的-O1進行優化,它會relooping,會刪除運行時斷言和C++異常捕獲,它也會使得-s ALIASING_FUNCTION_POINTERS=1。

想要C++異常捕獲重新可用,請設置:-s DISABLE_EXCEPTION_CATCHING=0。

-O2:
和-O1類似,不過多了JavaScript級別的優化以及一些llvm -O3的優化項。當你想發布項目的時候,推薦使用本級別優化。

-O3:
和-O2類似,不過比-O2又多了一些JavaScript優化,而且編譯時間明顯比-O2長。這個也推薦在發布版本的時候使用。

-Os:
和-O3類似,不過增加了額外的優化以減小生成的代碼體積,代價是比-O3性能差一點。-Os優化會同時影響llvm bitcode 和JavaScript文件的生成。

-Oz:
和-Os類似,不過進一步減小了代碼體積。

-s OPTION=VALUE
傳給編譯器的所有涉及到JavaScript代碼生成的選項。選項列表,請見settings.js

對于某個選項的值,不僅可以直接在emcc命令行里面設定,也可以把他們寫成json文件。比如下面,就是將DEAD_FUNCTIONS選項的值放到了path/to/file文件里,emcc里面傳這個文件的路徑。

-s DEAD_FUNCTIONS=@/path/to/file
note: 1、文件內容可以是:["_func1","_func2"]; 2、文件路徑必須是絕對的,不能是相對的。

-g:
這是保留調試信息flag。

  • 如果只是編譯到bitcode,那就和clang和gcc中的-g一樣。
  • 如果是要編譯到JavaScript,-g就等于-g3。

-g<level>
控制打印的調試信息數量,每一個level都是在前一個level的基礎上編譯的:

  • -g0:不保留調試信息。
  • -g1:保留空格,不壓縮。
  • -g2:保留函數名。
  • -g3:保留變量名,與-g同。變量名一般不是必須編譯后保留的,但是如果保留了,可以推斷變量的目的,對吧。
  • -g4:保留llvm 調試信息,這是能調試的最高級別。
note:
優化級別越高,編譯時間越長

--profiling:

--profiling-funcs:

--tracing:
啟用Emscripten的tracing API。

--emit-symbol-map:

--js-opts<level>:
允許JavaScript優化,有兩個值:
0:不允許JavaScript優化器允許;
1:使用JavaScript優化器。
通常用不到我們設置這一項, 因為設置-O后面的level的時候,這個項就能順便取到一個合適的值。

note:
有些選項會重寫這個flag的值,比如EMTERPRETIFY, DEAD_FUNCTIONS, OUTLINING_LIMIT, SAFE_HEAP 和 SPLIT_MEMORY會將js-opts=1,因為他們依賴js優化器。

--llvm-opts<level>:
啟用llvm優化。它的取值有有:

  • 0:不使用llvm優化
  • 1:llvm -O1優化
  • 2:llvm -O2優化
  • 3:llvm -O3優化

和--js-opts<level>一樣,通常用不到我們設置這一項, 因為設置-O后面的level的時候,這個項就能順便取到一個合適的值。

--llvm-lto<level>:
啟用llvm 連接時 優化。可以取值0,1,2,3。

--closure <on>:
運行壓縮編譯器(Closure Compiler),可能的取值有,0,1,2:

  • 0:是不啟用壓縮編譯器。
  • 1:啟用。
  • 2:啟用。

--pre-js <file>
生成代碼前,指定一個要把內容添加進來的文件。

--post-js <file>
生成代碼后,指定一個要把內容添加進來的文件。

--embed-file <file>
指定一個帶路徑的文件嵌入到編譯生成的js代碼里。路徑是相對于編譯時的當前路徑。如果傳的是一個目錄,則目錄下所有文件的內容都會被嵌入到將來生成的js代碼中。

--preload-file <name>
異步運行編譯代碼前,指定一個預加載的文件。路徑是相對于編譯時的當前路徑。如果傳的是一個目錄,則目錄下所有文件的內容都會被預加載到一個.data文件中。

--exclude-file <name>
從 –embed-file and –preload-file后面的目錄中排除一些文件,支持使用通配符*。

--use-preload-plugins
告訴文件打包器當文件加載時,運行預加載插件。它用來執行諸如使用瀏覽器解碼器解碼圖片和音頻等。

--shell-file <path>
指定要生成HTML的模板文件。

--source-map-base <base-url>

--minify 0
等于-g1。

--js-transform <cmd>
優化之前,生成代碼之后,設定這一條命令。這條命令可以讓你修改JavaScript代碼。之后,編譯器會將修改的和未修改的一起進行編譯優化。

--bind
啟用bingdings編譯源代碼。bingings是Emscripten中連接C++和JavaScript代碼的一類API。

--ignore-dynamic-linking
告訴編譯器忽視動態鏈接,之后用戶就得手動鏈接到共享庫。

--js-library <lib>
定義除了核心庫(src/library_*)以外的js庫。

-v
打開詳細輸出。
這個設置為把-v傳給clang,并且啟用EMCC_DEBUG生成編譯階段的中間文件。它也會運行Emscripten關于工具鏈的內部的完整性檢查。

tip: emcc -v是診斷錯誤的有用工具,不管你是否附加其他參數。

--cache

--clear-cache

--clear-ports

--show-ports

--save-bc PATH

--memory-init-file <on>
規定是否單獨生成一個內存初始化文件。取值包括0和1.

  • 0:不單獨生成.mem文件。
  • 1:單獨生成.mem文件。

-Wwarn-absolute-paths
啟用在-I和-L命令行指令中使用絕對路徑的警告。這是用來警告無意中使用了絕對路徑的。在引用非可移植的本地系統頭文件時,使用絕對路徑有時是很危險的。

--proxy-to-worker

--emrun
使生成的代碼能夠感知emrun命令行工具。當運行emran生成的應用程序時,這樣設置就允許stdout、stderr和exit(returncode)被捕獲。

--cpuprofiler
在生成的頁面上嵌入一個簡單的CPU分析器。使用這個來執行粗略的交互式性能分析。

--memoryprofiler
在生成的頁面上嵌入內存分配跟蹤器,使用它來分析應用程序Emscripten堆的使用情況。

--threadprofiler
在生成的頁面上嵌入一個線程活動分析器。當進行多線程編譯時,使用它來分析多線程應用程序。
--em-config

--default-obj-ext .ext

--valid-abspath path
設置一個絕對路徑的白名單,以防止關于絕對路徑的警告。

-o <target>
編譯輸出的文件格式。target可以取值為:

  • name.js:JavaScript文件;
  • name.html:HTML+js文件。把js單獨生成是為了減小頁面加載時間。
  • name.bc:llvm bitcode。這是默認值。
  • name.o:和上面一樣。
note:
如果你用了--memory-init-file,則還會從js文件中再單獨分出一部分代碼為.mem文件。

-c
生成llvm bitcode代碼,而不是JavaScript。

--separate-asm
把asm.js文件單獨生成到一個文件中。這樣可以減少啟動時的內存加載。

--output_eol windows|linux
規定生成的文本文件的行尾,如果是–output_eol windows,就是windows rn行尾,如果是–output_eol linux,則生成Linux行尾的文本文件。

--cflags

環境變量


emcc會受到幾個環境變量的影響,如下:

  • EMMAKEN_JUST_CONFIGURE
  • EMMAKEN_JUST_CONFIGURE_RECURSE
  • EMCONFIGURE_JS
  • EMCONFIGURE_CC
  • EMMAKEN_CXX
  • EMMAKEN_COMPILER
  • EMMAKEN_CFLAGS
  • EMCC_DEBUG

這幾個里面比較有意思的是EMCC_DEBUG。比如,如果你在編譯之前設置set EMCC_DEBUG=1,那么編譯的時候會把編譯過程的調試信息和編譯各個階段的中間文件輸出到一個臨時目錄,這算是給開發者提供一些編譯期間的幫助或者說調試信息吧。


Emscripten主題系列文章是emscripten中文站點的一部分內容。
第一個主題介紹代碼可移植性與限制
第二個主題介紹Emscripten的運行時環境
第三個主題第一篇文章介紹連接C++和JavaScript
第三個主題第二篇文章介紹embind
第四個主題介紹文件和文件系統
第六個主題介紹Emscripten如何調試代碼

界面該不該加彈窗?來看高級設計師的總結

資深UI設計者

這幾天在工作中處理了一個歷史遺留問題:彈窗適配,幾經折騰終于落定發包。于是我也趁著這個機會把彈窗體系梳理研究了一遍。

我們常見的彈窗有對話框,提示框,有時候在需求溝通中經常會聽到產品同學說,給這里加個彈窗,那里加個提示框吧。實際上,這個彈窗到底該不該加?這個彈窗承載的是提示說明文字內容,還是需要引導用戶下一步操作?接下來我們從彈窗的屬性來聊聊我們的彈窗到底在什么時候加比較合適?用什么形態展示體驗會更好?

彈窗體系:模態與非模態

模態彈窗:是指在用戶任務中,終止了用戶的上一步行為。也就是說,這個模態彈窗必須要用戶操作才可以進行下一步動作。所以在產品設計中,我們通常會用模態彈窗引導用戶去做我們要他做的操作。

常見的模態彈窗有這幾種:對話框、動作欄、浮層。

對話框:對話框主要是給用戶提供選項、相關的操作。另外,在一些對話框中,也可以展現圖片、頭像、步驟圖、其它輸入項等。

動作欄:常見的動作欄一般會出現屏幕下方,比如選擇某個內容時候,出現的選擇。

浮層:彈出窗口,浮動于頂層窗口,氣泡。

非模態彈窗:是指不強制用戶操作,他的作用相當于內容信息提示,他的出現不打擾用戶的當前操作,并且有時間限制,在一定時間里能自動消失。比如「xxx 功能已更新哦」,這種提示是不需要用戶點擊操作,讓用戶看到就可以了。

常見的非模態彈窗有這幾種:toast/hud、snackbar、notice(通知)

toast/hud:iOS 用戶更習慣于在中間感知反饋信息,通常在信息提示完 3 秒左右后會消失,安卓通常會出現在屏幕頂部或者下部,不會遮擋主體內容。需要注意的是 toast 只有文字,hud 是可以帶有圖標的。

snackbar;可以理解為加強版的 Toast

notice:系統消息、通知推送,也是不干擾用戶行為,有消失時間,是非模態的彈窗。

什么場景下使用什么彈框

了解完彈窗體系后,我們就可以針對具體場景來看產品同學說加個彈窗到底合適不合適?我們可以從下面的幾個使用場景來看用什么樣的彈窗合適。

1. 重要打斷用戶操作

在一些重要操作,避免用戶操作失誤。不過目前很多人都覺得這類彈框有利有弊,有的地方出現得不合時宜,打斷了用戶的使用狀態。所以在設計這類彈框時要非常謹慎,得通過多研究確認是否有必要出現。

對話框相對來說比動作欄更重要,因為在視覺中心,更能強烈引起用戶的重視,對于十分重要的內容需要打斷用戶上一步任務的,采用對話框的彈窗,對于不是特別重要信息露出又需要終止用戶上一步動作的情況下,一般采用動作欄彈框。

2. 定制化廣告彈窗

如功能更新、升級、優惠券彈窗。這一類一般是強制用戶看到的,要展示出與眾不同的特色,在視覺上比較突出,會使用模態的彈窗浮層形式。

3. 給予一定提示

比如提示用戶狀態、信息、反饋,確保用戶知曉自己所處的狀態,并可以做出相應的措施。一般使用非模態的彈窗。

4. 用戶操作反饋

出現在用戶操作完之后的反饋,比如提醒用戶頁面正在加載中、保存成功、已刪除、已刷新等等。

可以不用彈窗的反饋例子:完成頁

比如已支付成功、下載完畢、簽到成功,這一類是告訴你上個動作結束了,下一步不需要進行引導了,這種反饋大多數都不采用彈窗形式展現了。

需要注意事項

1. 層級關系

彈框是內容和導航的補充,用于通知、操作菜單、成功或加載狀態的 toast,他是寫在蒙層上面的一層內容。

2. 適配方式

下面我們需要了解的是這幾種彈窗在開發那的實現形式。我們可以理解為 2 種形式:

一種是開發直接用系統的接口,缺點是具有不可定制,形式美觀度不夠好。

另一種是開發用代碼會單獨寫出一個模態彈框系統,這套系統與整體設計語言具有一致性,可以復用在各個任務中,可以定制化設計。

需要注意的是,代碼寫出來的模態樣式要考慮在不同機型的適配情況,考慮不同機型的邊界。這個適配也有兩種實現形式,一種是固定寬高尺寸,展示在不同機型尺寸中,另一種是常用的等比例縮放。這個就需要開發與設計進行密切的溝通,能盡量合理地在不同機型展現更加合適,避免出現極限的情況。

我們是這樣操作的,為了避免尺寸比例混亂的情況,會設計一個彈窗的寬高尺寸范圍,開發同學代碼寫出的這套彈窗的適配在各個機型中,是在一定縮放比例下,適用各個不同情況下的視覺展示。這套彈窗可以調用在首頁引導、升級等各個頁面的彈窗設計中。

文章來源:優設    作者:詠舍

設計師要懂的“產品導流”背后知識點。

ui設計分享達人

設計師不僅要低頭畫圖,也要了解“圖”背后的邏輯和需求本質 。嗯,下面用直白的語言跟大家聊一波相關知識點。




說到產品導流,大家都不陌生。



身為設計師,應該經常聽到產品同學提需求:“在這里給XX功能加個入口吧”,“這個宣傳新產品的banner可以再大一些嗎”,“這個場景可以宣傳下我們的新功能誒”…


很多設計師在不了解背景的情況下往往內心是排斥的,心想怎么老是在犄角旮旯里加這么多小廣告啊,都不關心用戶體驗的嘛,balabala...



但是有誰在吐槽時,深究其背后的原因呢,舉起小爪子讓大牙康康。比如:什么是產品導流?為什么需要產品導流?它有哪些的形式?如何做效果好又能兼顧產品體驗呢?



最近正好在搞相關的事情,所以擼一篇文章,分享一波相關思考。





什么是產品導流? 



“產品導流”指的是:一款產品采用某種形式,增加對另一款產品/功能的曝光,使自己的用戶群體(流量)去使用或探索另一款產品/功能。



眉頭一緊,感覺上面的描述有點拗口,善良的牙嘗試著用大白話,把導流和被導流的關系,分為兩種形式解釋下:1.父子關系;2.兄弟關系。

1.父子關系


畫風是:“爸爸,大腿借我一抱吧”,比如:“抖音”里增加“多閃”入口,“微信”里增加“微視”入口,通過自家體量大的產品(爸爸)給自己導流。



2.兄弟關系


畫風是:“外面環境惡劣,是好兄弟,就互導一下吧”,比如:京東的會員可以享受愛奇藝的會員福利,同輩之間互相導流。



所以,這么說就好理解什么是產品導流,和它們之間的關系了吧。






產品為什么需要導流? 


產品之間導流的目的,大致分為兩種:1.獲得新增;2.企業生態。




1.獲得新增



試想你費勁巴拉的搞了個新產品,沒人知道,也沒人來用,就算你產品做的再妖嬈,是不是也白搭,更不用說后續的商業變現之類的。


所以,這個時候如果你有一個相對成熟的產品(爸爸)大腿,讓它給你導流,實現一波冷啟動,是順利邁過第一個坎兒的手段。


當然,在目前激烈的競爭環境下,不僅是新產品需要導流,擴大規模和獲得新增流量,是每一個互聯網企業里產品或運營同學OKR中必不可少且另他們頭禿的一項指標。



所以,不管是新產品,還是相對成熟的產品,都需要通過導流的手段,來獲得新增用戶。





2.企業生態


“產品導流”除了為了獲得新增,還有就是為了企業生態的體驗閉環。


做成一款產品的公司很牛逼,但是如果能夠持續做出一系列牛逼產品的公司,一定有成功的基因,或者有一套做事兒的邏輯。


比如:亞馬遜的飛輪效應,要想形成飛輪,打造自己的生態,業務上就得有自己的閉環,并且閉環上的每一個步驟都可以為其它步驟助力,其次就是以第一個飛輪作為根據地,拉動周邊其它業務,形成第二個或者更大的飛輪。


這個時候,就需要各個業務線之間的互通及聯動(互相導流)了。






比如,阿里也是在打造自己的生態,產品之間相互賦能和聯動,一旦建立起來這些基礎設施后,壁壘和護城河就非常堅固。



整體來看,“產品導流”不僅有助于新產品獲得冷啟動,還有助于相對成熟的產品擴大規模,同時從整個企業生態來看,矩陣產品的互相導流,協同發揮優勢,也有利于打造體驗閉環,建立企業壁壘。





產品導流的形式有哪些? 



目前,市面上導流形式大致有以下幾種:1.場景化導流;2.會員制捆綁;3.固定入口扶持;4.廣告位推薦。


1.場景化導流


場景化導流,翻譯成大白話就是,讓導流的過程更加無縫銜接。


這種做法,能兼顧用戶體驗,同時對導流量也更有利,一般用于“功能”層面的互通。比如,用戶正好需要XX產品或功能,你見縫插針的增加導流入口,同時功能和設計元素也跟母產品保持一致,這樣用戶不會覺得干擾或反感。


類似這種做法的產品比如:QQ&微云,抖音&剪映;視頻號&公眾號...


QQ&微云


我們用QQ聊天時,好友之間總會有一些分享文件的行為,有“分享”就有“接收”,有“接收”就有“保存”的訴求,在這種場景下,QQ聊天頁面里用戶長按當前“文件”,就可以將文件保存到“微云”上。






除此之外,QQ首頁點擊左上角的側邊欄,能看到一列與“我”相關的功能入口,其中有一項是“我的文件”,點擊進去后就能看到“我”在QQ里消費過的歷史文件。


同時還有“微云”小程序的入口,點擊直接跳轉至微云小程序(做的很服帖,跟自體脂肪填充似的,導流過程不會讓用戶感到突兀)。




除此之外,微云作為基礎的云存儲能力,也在跟騰訊系的QQ音樂互通,滿足用戶將下載的歌曲保存到“微云”。





這么做,不僅滿足了QQ音樂用戶的存儲訴求,還提升了QQ音樂的登錄率(用戶想要使用音樂網盤,必須先登錄),同時增加了QQ音樂用戶粘性(用戶一旦在一款產品上存下自己的東西,就會存在遷移成本),最后還為微云帶來了新增用戶(更多QQ的用戶使用微云進行存儲),擴大其規模。


這樣的互通/導流手段,就實現了產品間1+1大于2的效果。





抖音&剪映


刷抖音的兄弟們應該經常見很多視頻下面有一個小標簽,叫“剪映-抖音出品”(意味著博主的那條短視頻是用剪映做的)。


很多人看到好玩好看新奇的短視頻,都會覺得真香我也要剪同款,因此抖音就是這種恰到好處的投喂給你,點擊標簽,直接跳轉到下載頁,如果已經安裝了的用戶,可以直接進行剪同款。




抖音不僅送你出去,還負責接你回來,一條龍服務給你安排(導)的明明白白的。


比如,當你剪輯完成后,就引導你回抖音里分享,畢竟他們不希望你剪完之后保存到本地然后美滋滋去競品(快手之類的)分享吧。





他們的目的就是,不管你怎么折騰,也逃不出我大字節的手掌。


包括,最近的視頻號,發完視頻號還能附帶公眾號的鏈接,高頻帶低頻,通過公域流量,幫助作者往私域導流(順便做個廣告,快去關注我的視頻號:大牙兄,哈哈哈)。





所以微信現在的導流方式是:視頻號能夠鏈公眾號,公眾號能夠掛小程序,小程序又能開直播,直播又能去變現。


整體來看,場景化的進行導流,更適合“功能”層面的互通,滿足用戶和企業的訴求,還平衡了產品體驗,相對更加絲滑。





2.會員制捆綁


會員制捆綁,已經成為互聯網常見導流+變現的方式了,指的就是用戶在你這買了會員,在別的合作產品里也享有它們的特權福利。利用用戶“愛占小便宜”的心理,產品間互相導流。


比如我們常見的方式有:88會員、聯合會員...

88會員


開過88會員的同學舉個爪!好,放下吧,反正我也看不到。


88會員算是阿里生態體系的重要布局了,也就是你開通了88會員,阿里系的很多產品你可以劈著叉去用,而且很劃算。


比如,餓了么會員每年108元,蝦米每年128元,優酷每年也差不多180元,還不算其它的,這些價格在用戶心中已經是錨定價格,加到一起怎么著也大1000了吧,跟88元一比,穩賺不賠啊!






我們來看看88會員里包含什么,各種阿里系的七大姑八大姨的產品都包含進去了,從吃飯、購物、娛樂、旅行再到看病,生活里的方方面面都包含了。





所以,我身邊的人開了88會員后,畫風是這樣的:明明想用QQ音樂聽歌呢,不!我是88會員!我要去用蝦米!明明想用美團點個外賣呢,不!我要去餓了么!明明我想去愛奇藝看看視頻呢,不!我要去優酷看!(不過他們如果想看“淡黃色長裙蓬松的頭發”還是得去愛奇藝)。


可以看出,阿里用這套會員體系,把用戶死死的框在(導流)自己的產品矩陣中了,產品群們被自己爸爸carry的明明白白的。





聯合會員


聯合會員跟上面說的88會員有點類似了,只是88是自己企業內產品的互相導流,而很多聯合會員是跨公司,跨界整合資源。 

比如,京東的PLUS京典卡,就是跨公司跟別人合作,有和騰訊視頻、酷狗音樂、喜馬拉雅、攜程、愛奇藝的聯合會員。 





其實也能看出,京東和其它產品這么搞,也是對阿里系的反擊,沒有爸爸,只能兄弟之間互相導流,抱團取暖,一致對外了。



3.固定入口扶持


固定入口扶持,一般出現在規模較大的平臺級產品上,它們利用自己的流量優勢,在固定位置給自己的子孫/兄弟產品們導流。


扶持下一代,努力做到子又生孫,孫又生子,子子孫孫無窮盡也。



比如:淘寶、支付寶、美團,在首頁金剛位給自己企業相關產品導流,同時也補足/豐富自己產品的其它場景。






比如,各家的小程序,也是相對固定的入口給自己的產品或第三方產品進行導流,完善自己的產品生態。






4.廣告位推薦


廣告位推薦的導流方式應該是大家非常熟悉的了,它區別于上面的導流方式的核心點在于一般是產品/活動的介紹,引導安裝之類的,形式大致分為:閃屏、 banner、角標、feed流...




閃屏

閃屏指的是用戶在使用產品時,打開的第一個啟動頁。


用它進行導流的優點就是全屏沉浸展示,用戶的目光就聚焦到這里了,但缺點是:時間短,如果在短時間內傳達不清晰的話,很容易一閃而過,錢就白花了。



所以,閃屏的導流,最好找重疊用戶較高的產品,比如,在汽車之家閃屏投個刮胡刀啊,在親寶寶閃屏投奶粉啊之類的,用戶在短時間內好接受好理解。


投放越精準,對產品體驗和對廣告主的導流效果越好。





角標

角標導流這種形式,在電商類平臺搞活動的時候經常見,各種小角標紛紛出來拉客,角標的著陸頁一般都是活動H5類型的居多。




這種形式的優點在于能夠一直常駐,不像閃屏,閃一下就沒了,它只要用戶不手動關閉就一直在這杵著。


但對于設計師的挑戰就是,如何在小小的區域里,把被導流的產品/活動核心利益點傳遞清楚,吸引用戶點擊。

而且,這種形式也要謹慎使用,如果亂八七糟的飚小角標也挺傷害體驗的。





Banner


Banner位的導流大家更常見了,一般都是自己家產品/業務,夾雜著第三方廣告推廣,無限輪播著進行導流,大家都太熟悉了,我就不啰嗦的說了。





Feed流


一般資訊類或者社區類產品,喜歡用這種方式進行導流,因為用戶在其產品上的核心操作就是擼Feed。


所以,擼著擼著給用戶投喂一個通過算法推薦的廣告,然后再把廣告包裝成跟Feed內容很相近的設計,吸引(pian)用戶點進去,從而進行導流。


比如: 知乎、最右、百度、頭條 ...




不得不說第二張“最右”的推薦內容,讓我不禁撫摸了下自己的胡子。

不過除了最右給我推“大胸妹子”,百度給我推“游戲”,頭條給我推“汽車”,難道在他們的算法中,我是個油膩中年男???


看來他們的人工還不夠智能,機器還得再學習學習,大牙對你萌hin失望。





總結  


總的來說,“產品導流”不僅有助于新產品獲得冷啟動,還有助于相對成熟的產品擴大規模,同時從整個企業生態來看,矩陣產品的互相導流,協同發揮優勢,也有利于打造體驗閉環,建立企業壁壘。


形式大致分為:1.場景化導流,無縫銜接式的體驗,讓用戶在產品功能間絲滑的流轉;2.會員制捆綁,低價獲得跨產品福利,利用用戶占小便宜的心理跨界導流;3.固定入口扶持,平臺型產品常用手段,豐富自己產品場景又能給自己小弟帶流量;4.廣告位推薦,靈活可配形式多變的導流方式(閃屏、 banner、角標、feed流)但搞不好很傷用戶體驗。



但是,不管什么導流形式,導進來的用戶,只有看到滿足他們訴求和預期的著陸頁才是最關鍵的,不然就算給你再大的流量入口,用戶搞不明白該走還是會走。


同時,也不能為了導流而不分場景的尬導,這樣很容易傷害原有產品的用戶體驗,撿了芝麻,丟了西瓜。

轉自:站酷-蘇大牙


日歷

鏈接

個人資料

藍藍設計的小編 http://m.ssll180.com

存檔