<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          首頁

          JavaScript操作符in:由一個問題引發的探究

          前端達人

          事情是這樣的:大家都知道“內存泄露”這回事吧。它有幾個常見的場景:

          1. 閉包使用不當引起內存泄漏
          2. (未聲明的)全局變量
          3. 分離的DOM節點
          4. (隨意的)控制臺的打印
          5. 遺忘的定時器
          6. 循環引用

          內存泄漏需要重視,它是如此嚴重甚至會導致頁面卡頓,影響用戶體驗!

          其中第 3 點引起了我的注意 —— 我當然清楚地知道它說的是比如:“假設你手動移除了某個dom節點,本應釋放該dom節點所占用的內存,但卻因為疏忽導致某處代碼仍對該被移除節點有引用,最終導致該節點所占內存無法被釋放”的情況

          <div id="root"> <div class="child">我是子元素</div> <button>移除</button> </div> <script> let btn = document.querySelector('button') let child = document.querySelector('.child') let root = document.querySelector('#root') btn.addEventListener('click', function() { root.removeChild(child) }) </script> 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14

          該代碼所做的操作就是點擊按鈕后移除.child的節點,雖然點擊后,該節點確實從dom被移除了,但全局變量child仍對該節點有引用,所以導致該節點的內存一直無法被釋放。

          解決辦法:我們可以將對.child節點的引用移動到click事件的回調函數中,那么當移除節點并退出回調函數的執行上文后就會自動清除對該節點的引用,自然也就不會存在內存泄漏的情況了。(這實際上是在事件中實時檢測該節點是否存在,如果不存在則瀏覽器必不會觸發remove函數的執行)

          <div id="root"> <div class="child">我是子元素</div> <button>移除</button> </div> <script> let btn = document.querySelector('button') btn.addEventListener('click', function() { let child = document.querySelector('.child') let root = document.querySelector('#root') root.removeChild(child) }) </script> 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15

          這段代碼很完美么?不。因為它在每次事件觸發后都創建了對child和root節點的引用。消耗了內存(你完全可以想象一些人會狂點按鈕的情況…)。
          其實還有一種辦法:我們在click中去判斷當前root節點中是否還存在child子節點,如果存在,則執行remove函數,否則什么也不做!

          這就引發了標題中所說的行為。

          怎么判斷?
          遍歷?不,太過麻煩!
          不知怎的,我突然想到了 for...in 中的 in 操作符,它可以基于原型鏈遍歷對象!

          我們來還原一下當時的場景:打開GitHub,隨便找一個父節點,并獲取它:
          mygithub
          圖中畫紅框的就是我們要取的父元素,橘紅色框的就是要判斷是否存在的子元素。

          let parent=document.querySelector('.position-relative'); let child=document.querySelector('.progress-pjax-loader'); 
          
          • 1
          • 2

          這里注意,因為獲取到的是DOM節點(類數組對象),所以我們在操作前一定要先處理一下:
          object

          let p_child=[...parent.children]; 
          
          • 1

          array
          然后

          console.log(child in p_child); 
          
          • 1

          not
          !?。?br style="box-sizing:border-box;outline:0px;user-select:text !important;overflow-wrap:break-word;" /> 為什么呢?(此時筆者還沒有意識到事情的嚴重性)
          我想,是不是哪里出了問題,用es6的includes API驗證一下:

          console.log(p_child.includes(child)); 
          
          • 1

          yes
          沒錯啊!
          再用一般的數組驗證一下:
          Verification
          ???
          此時,筆者才想起到MDN上查閱一番:
          mdn
          進而我發現:in操作符單獨使用時它檢測的是左側的值(作為索引)對應的值是否在右側的對象內部(屬性 & 原型上)!

          回到上面的代碼中,我們發現:
          vertification_2
          這驗證了我們的結論。
          很顯然,“子元素”并不等同于“存在于原型鏈上” —— 這又引出了一個知識點:attribute和property的區別!

          所以經過一番“折騰”,源代碼還是應該直接這樣寫:

          <div id="root"> <div class="child">我是子元素</div> <button>移除</button> </div> <script> let btn = document.querySelector('button') let child = document.querySelector('.child') let root = document.querySelector('#root') let r_child = [...root.children] btn.addEventListener('click', function() { if(r_child.includes(child)){ // 或者你這里直接判斷child是否為null也可以...吧 root.removeChild(child) } }) </script> 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17



















          轉自:csdn論壇   作者:恪愚


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服



          JavaScript逐點突破系列之this是什么?了解完這7點很多疑惑都解決

          前端達人

          前言

          本章將專門介紹與執行上下文創建階段直接相關的最后一個細節——this是什么?以及它的指向到底是什么。

          了解this

          也許你在其他面向對象的編程語言曾經看過this,也知道它會指向某個構造器(constructor)所建立的對象。但事實上在JavaScript里面,this所代表的不僅僅是那個被建立的對象。

          先來看看ECMAScript 標準規范對this 的定義:

          「The this keyword evaluates to the value of the ThisBinding of the current execution context.」
          「this 這個關鍵字代表的值為當前執行上下文的ThisBinding?!?

          然后再來看看MDN 對this 的定義:

          「In most cases, the value of this is determined by how a function is called.」
          「在大多數的情況下,this 其值取決于函數的調用方式?!?

          好,如果上面兩行就看得懂的話那么就不用再往下看了,Congratulations!

          … 我想應該不會,至少我光看這兩行還是不懂。

          先來看個例子吧:

          var getGender = function() {
              return people1.gender;
          };
          
          var people1 = {
              gender: 'female',
              getGender: getGender
          };
          
          var people2 = {
              gender: 'male',
              getGender: getGender
          };
          
          console.log(people1.getGender());    // female
          console.log(people2.getGender());    // female 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17

          what?怎么people2變性了呢,這不是我想要的結果啊,為什么呢?

          因為getGender()返回(return)寫死了people1.gender的關系,結果自然是’female’。

          那么,如果我們把getGender稍改一下:

          var getGender = function() {
              return this.gender;
          }; 
          
          • 1
          • 2
          • 3
          • 4

          這個時候,你應該會分別得到femalemale兩種結果。

          所以回到前面講的重點,從這個例子可以看出,即便people1people2getGender方法參照的都是同一個getGender function,但由于調用的對象不同,所以執行的結果也會不同。

          現在我們知道了第一個重點,**this實際上是在函數被調用時發生的綁定,它指向什么完全取決于函數的調用方式。**如何的區分this呢?

          this到底是誰

          看完上面的例子,還是有點似懂非懂吧?那接下來我們來看看不同的調用方式對 this 值的影響。

          情況一:全局對象&調用普通函數

          在全局環境中,this 指向全局對象,在瀏覽器中,它就是 window 對象。下面的示例中,無論是否是在嚴格模式下,this 都是指向全局對象。

          var x = 1
          
          console.log(this.x)               // 1
          console.log(this.x === x)         // true
          console.log(this === window)      // true 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          如果普通函數是在全局環境中被調用,在非嚴格模式下,普通函數中 this 也指向全局對象;如果是在嚴格模式下,this 將會是 undefined。ES5 為了使 JavaScript 運行在更有限制性的環境而添加了嚴格模式,嚴格模式為了消除安全隱患,禁止了 this 關鍵字指向全局對象。

          var x = 1
          
          function fn() {
              console.log(this);   // Window 全局對象
              console.log(this.x);  // 1
          }
          
          fn(); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9

          使用嚴格模式后:

          "use strict"     // 使用嚴格模式
          var x = 1
          
          function fn() {
              console.log(this);   // undefined
              console.log(this.x);  // 報錯 "Cannot read property 'x' of undefined",因為此時 this 是 undefined
          }
          
          fn(); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10

          情況二:作為對象方法的調用

          我們知道,在對象里的值如果是原生值(primitive type;例如,字符串、數值、布爾值),我們會把這個新建立的東西稱為「屬性(property)」;如果對象里面的值是函數(function)的話,我們則會把這個新建立的東西稱為「方法(method)」。

          如果函數作為對象的一個方法時,并且作為對象的一個方法被調用時,函數中的this指向這個上一級對象。

          var x = 1
          var obj = {
              x: 2,
              fn: function() {
                  console.log(this);    
                  console.log(this.x);
              }
          }
          
          obj.fn()     
          
          // obj.fn()結果打印出;
          // Object {x: 2, fn: function}
          // 2
          
          var a = obj.fn
          a()   
          
          // a()結果打印出:   
          // Window 全局對象
          // 1 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22

          在上面的例子中,直接運行 obj.fn() ,調用該函數的上一級對象是 obj,所以 this 指向 obj,得到 this.x 的值是 2;之后我們將 fn 方法首先賦值給變量 a,a 運行在全局環境中,所以此時 this 指向全局對象Window,得到 this.x 為 1。

          我們再來看一個例子,如果函數被多個對象嵌套調用,this 會指向什么。

          var x = 1
          var obj = {
            x: 2,
            y: {
              x: 3,
              fn: function() {
                console.log(this);   // Object {x: 3, fn: function}
                console.log(this.x);   // 3
              }
            }
          }
          
          obj.y.fn(); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14

          為什么結果不是 2 呢,因為在這種情況下記住一句話:this 始終會指向直接調用函數的上一級對象,即 y,上面例子實際執行的是下面的代碼。

          var y = {
            x: 3,
            fn: function() {
              console.log(this);   // Object {x: 3, fn: function}
              console.log(this.x);   // 3
            }
          }
          
          var x = 1
          var obj = {
            x: 2,
            y: y
          }
          
          obj.y.fn(); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16

          對象可以嵌套,函數也可以,如果函數嵌套,this 會有變化嗎?我們通過下面代碼來探討一下。

          var obj = {
              y: function() {
                  console.log(this === obj);   // true
                  console.log(this);   // Object {y: function}
                  fn();
          
                  function fn() {
                      console.log(this === obj);   // false
                      console.log(this);   // Window 全局對象
                  }
              }
          }
          
          obj.y(); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15

          在函數 y 中,this 指向了調用它的上一級對象 obj,這是沒有問題的。但是在嵌套函數 fn 中,this 并不指向 obj。嵌套的函數不會從調用它的函數中繼承 this,當嵌套函數作為函數調用時,其 this 值在非嚴格模式下指向全局對象,在嚴格模式是 undefined,所以上面例子實際執行的是下面的代碼。

          function fn() {
              console.log(this === obj);   // false
              console.log(this);   // Window 全局對象
          }
          
          var obj = {
              y: function() {
                  console.log(this === obj);   // true
                  console.log(this);   // Object {y: function}
                  fn();
              }
          }
          
          obj.y(); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15

          情況三:作為構造函數調用

          我們可以使用 new 關鍵字,通過構造函數生成一個實例對象。此時,this 便指向這個新對象。

          var x = 1;
          
          function Fn() {
             this.x = 2;
              console.log(this);  // Fn {x: 2}
          }
          
          var obj = new Fn();   // obj和Fn(..)調用中的this進行綁定
          console.log(obj.x)   // 2 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10

          使用new來調用Fn(..)時,會構造一個新對象并把它(obj)綁定到Fn(..)調用中的this。還有值得一提的是,如果構造函數返回了非引用類型(string,number,boolean,null,undefined),this 仍然指向實例化的新對象。

          var x = 1
          
          function Fn() {
            this.x = 2
          
            return {
              x: 3
            }
          }
          
          var a = new Fn()
          
          console.log(a.x)      // 3 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14

          因為Fn()返回(return)的是一個對象(引用類型),this 會指向這個return的對象。如果return的是一個非引用類型的值呢?

          var x = 1
          
          function Fn() {
            this.x = 2
          
            return 3
          }
          
          var a = new Fn()
          
          console.log(a.x)      // 2 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12

          情況四:call 和 apply 方法調用

          如果你想改變 this 的指向,可以使用 call 或 apply 方法。它們的第一個參數都是指定函數運行時其中的this指向。如果第一個參數不傳(參數為空)或者傳 null 、undefined,默認 this 指向全局對象(非嚴格模式)或 undefined(嚴格模式)。

          var x = 1;
          
          var obj = {
            x: 2
          }
          
          function fn() {
              console.log(this);
              console.log(this.x);
          }
          
          fn.call(obj)
          // Object {x: 2}
          // 2
          
          fn.apply(obj)     
          // Object {x: 2}
          // 2
          
          fn.call()         
          // Window 全局對象
          // 1
          
          fn.apply(null)    
          // Window 全局對象
          // 1
          
          fn.call(undefined)    
          // Window 全局對象
          // 1 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31

          使用 call 和 apply 時,如果給 this 傳的不是對象,JavaScript 會使用相關構造函數將其轉化為對象,比如傳 number 類型,會進行new Number()操作,如傳 string 類型,會進行new String()操作,如傳 boolean 類型,會進行new Boolean()操作。

          function fn() {
            console.log(Object.prototype.toString.call(this))
          }
          
          fn.call('love')      // [object String]
          fn.apply(1)          // [object Number]
          fn.call(true)          // [object Boolean] 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8

          call 和 apply 的區別在于,call 的第二個及后續參數是一個參數列表,apply 的第二個參數是數組。參數列表和參數數組都將作為函數的參數進行執行。

          var x = 1
          
          var obj = {
            x: 2
          }
          
          function Sum(y, z) {
            console.log(this.x + y + z)
          }
          
          Sum.call(obj, 3, 4)       // 9
          Sum.apply(obj, [3, 4])    // 9 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13

          情況五:bind 方法調用

          調用 f.bind(someObject) 會創建一個與 f 具有相同函數體和作用域的函數,但是在這個新函數中,新函數的 this 會永久的指向 bind 傳入的第一個參數,無論這個函數是如何被調用的。

          var x = 1
          
          var obj1 = {
              x: 2
          };
          var obj2 = {
              x: 3
          };
          
          function fn() {
              console.log(this);
              console.log(this.x);
          };
          
          var a = fn.bind(obj1);
          var b = a.bind(obj2);
          
          fn();
          // Window 全局對象
          // 1
          
          a();
          // Object {x: 2}
          // 2
          
          b();
          // Object {x: 2}
          // 2
          
          a.call(obj2);
          // Object {x: 2}
          // 2 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33

          在上面的例子中,雖然我們嘗試給函數 a 重新指定 this 的指向,但是它依舊指向第一次 bind 傳入的對象,即使是使用 call 或 apply 方法也不能改變這一事實,即永久的指向 bind 傳入的第一次參數。

          情況六:箭頭函數中this指向

          值得一提的是,從ES6 開始新增了箭頭函數,先來看看MDN 上對箭頭函數的說明

          An arrow function expression has a shorter syntax than a function expression and does notbind its ownthis,arguments,super, ornew.target. Arrow functions are always anonymous. These function expressions are best suited for non-method functions, and they cannot be used as constructors.

          這里已經清楚了說明了,箭頭函數沒有自己的this綁定。箭頭函數中使用的this,其實是直接包含它的那個函數或函數表達式中的this。在前面情況二中函數嵌套函數的例子中,被嵌套的函數不會繼承上層函數的 this,如果使用箭頭函數,會發生什么變化呢?

          var obj = {
            y: function() {
                  console.log(this === obj);   // true
                  console.log(this);           // Object {y: function}
          
                var fn = () => {
                    console.log(this === obj);   // true
                    console.log(this);           // Object {y: function}
                }
                fn();
            }
          }
          
          obj.y() 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15

          和普通函數不一樣,箭頭函數中的 this 指向了 obj,這是因為它從上一層的函數中繼承了 this,你可以理解為箭頭函數修正了 this 的指向。所以箭頭函數的this不是調用的時候決定的,而是在定義的時候處在的對象就是它的this

          換句話說,箭頭函數的this看外層的是否有函數,如果有,外層函數的this就是內部箭頭函數的this,如果沒有,則this是window。

          var obj = {
            y: () => {
                  console.log(this === obj);   // false
                  console.log(this);           // Window 全局對象 
          
                var fn = () => {
                    console.log(this === obj);   // false
                    console.log(this);           // Window 全局對象 
                }
                fn();
            }
          }
          
          obj.y() 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15

          上例中,雖然存在兩個箭頭函數,其實this取決于最外層的箭頭函數,由于obj是個對象而非函數,所以this指向為Window全局對象。

          同 bind 一樣,箭頭函數也很“頑固”,我們無法通過 call 和 apply 來改變 this 的指向,即傳入的第一個參數被忽略。

          var x = 1
          var obj = {
              x: 2
          }
          
          var a = () => {
              console.log(this.x)
              console.log(this)
          }
          
          a.call(obj)       
          // 1
          // Window 全局對象
          
          a.apply(obj)      
          // 1
          // Window 全局對象 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18

          上面的文字描述過多可能有點干澀,那么就看以下的這張流程圖吧,我覺得這個圖總結的很好,圖中的流程只針對于單個規則。

          小結

          本篇文章介紹了 this 指向的幾種情況,不同的運行環境和調用方式都會對 this 產生影響??偟膩碚f,函數 this 的指向取決于當前調用該函數的對象,也就是執行時的對象。在這一節中,你需要掌握:

          • this 指向全局對象的情況;
          • 嚴格模式和非嚴格模式下 this 的區別;
          • 函數作為對象的方法調用時 this 指向的幾種情況;
          • 作為構造函數時 this 的指向,以及是否 return 的區別;
          • 使用 call 和 apply 改變調用函數的對象;
          • bind 創建的函數中 this 的指向;

          • 箭頭函數中的 this 指向。
          • 轉自:csdn 論壇  作者:蛋黃酥要不要來一口阿

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服

          想做SEO但又不知道從何下手的朋友可以看看!

          seo達人

          在網站上線之前,我們要對網站做出合理的規劃,并做出完美的SEO優化計劃,并按照這個SEO計劃逐步實施,使網站穩定發展,是我們制定SEO規劃的重要作用。制定完美的SEO計劃,不僅能使你的網站有明確的發展方向,還能提高網站的關鍵詞排名基本情況。那么,我們應該要如何制定一份完美的SEO計劃呢?下面,陳老師就給大家詳細的講解一下。




          一、分析SEO關鍵詞


          網站搭建前期,我們先要分析SEO關鍵詞。我們提議逐一詳細列出要做的SEO關鍵詞,然后分析每個SEO關鍵詞,篩選出用戶比較搜索的SEO關鍵詞,淘汰比較不受歡迎的SEO關鍵詞。然而,在此建議適當制作無指數詞匯。然而,未來可能有一定程度的發展。最后,要了解站點中每個列頁面的SEO需求,也就是說,要確定站點中每個列應該做什么,然后將關鍵詞放在該列中以進一步匹配。




          1、分析用戶搜索的需求


          分析用戶的搜索需求是最重要和最基本的。應如何分析用戶的搜索需求呢?這里我就給大家講一下吧,我們可以使用百度搜索下拉框,搜索結果在頁面顯示,相關的搜索結果顯示內容分析,當然也可以使用百度索引進行分析。這里我們就不講百度指數了,主要講前面三個方法:


          我們利用百度下拉框,分析哪些關鍵詞對用戶感興趣,即用戶在搜索,百度根據搜索頻率從高到低排列,根據搜索結果頁面的內容,哪些關鍵詞的排名狀況好,結果,這些單詞是用戶感興趣還是最后得出了相關檢索結果的結論,這是分析用戶檢索需求的輔助板塊,通過分析百度相關檢索結果,可以得出檢索該關鍵詞的用戶對什么樣的關鍵詞感興趣的結論。




          2、盡量不要設置過多的關鍵詞


          在分析了用戶的搜索需求之后,接下來是設置關鍵詞。當我們設置網站主關鍵詞時,如果你的關鍵詞設置索引很高,而你的網站仍然是一個新的站點,那么,建議你不要設置太多的關鍵詞,因為,這更有利于你的網站的高索引關鍵詞排名,如果設置了大量的關鍵詞,會導致關鍵詞匹配度分散,從而影響你的高索引關鍵詞排名,因此,在滿意度的關鍵詞是高索引和你的網站是一個新的站點,如果你的網站想得到一個好的排名,最好不要設置太多的關鍵詞。




          3、注意關鍵詞的搜索熱度


          在完成了上面兩點之后,接下來就是注意事項了,我們在設置關鍵詞的時候,一定要注意關鍵詞的搜索熱度,也就是關鍵詞的指數了,如果,你所選擇的關鍵詞搜索熱度過高的話,那么,這樣的關鍵詞是比較難優化上首頁的,因為,這樣高指數的關鍵詞一般競爭程度都很大,甚至有的都是投放百度競價的,所以,我們盡量拓展這類高指數關鍵詞的長尾詞,或是選擇另外一個同義詞了,當然,我們也不能選擇一些沒有什么搜索熱度的詞,也就是沒有指數的關鍵詞了,因為,這類詞既然沒有搜索熱度,也就是比較沒有用戶搜索的,并且是相對比較冷門的關鍵詞,如果設置了這樣的關鍵詞的話,就會導致你網站沒有什么自然用戶點擊瀏覽量了,所以,我們在設置關鍵詞的時候,一定要注意分析關鍵詞的整體搜索熱度。




          4、注意關鍵詞和網站的相關性


          在分析關鍵詞的整體搜索熱的基礎上,關鍵詞和站點的相關性是什么意思呢?所謂的關鍵詞和網站的相關性我們只能理解關鍵詞和網站的相關性,例如:你的網站是SEO等網站,然后,你設置關鍵詞必須與SEO相關的關鍵詞,如SEO優化、SEO技術,不能設置一些與SEO相關的關鍵詞,如:裝飾、婚禮等。當然,這里只是給你一個更夸張的例子,在正常情況下,我們不會用這么大的區別詞來做關鍵詞,特定的人可以做比較和分析。




          二、網站內容和關鍵詞的策略


          分析SEO關鍵字后,下一個重要因素是網站內容和關鍵詞排列。這就需要重視策略。具體而言,可分為以下幾點:




          1、分析用戶搜索行為


          首先,我們需要分析用戶的搜索行為,我們可以換位思考,當用戶進入我們的網站時,用戶一般會搜索站內的關鍵詞,瀏覽什么樣的內容,當然,這里是你想確定站點的用戶群的前提,然后,針對主要用戶群部署關鍵詞,我們可以增加關鍵詞的用戶搜索。




          2、重視網頁三要素TDK的寫作


          在配置關鍵字之后,接著重視網頁的3要素TDK的寫作,其中,在網頁的3要素中T(title)是網頁的標題是重要的,現在,由于最直接地影響關鍵字的排名狀況,所以網頁標題的關鍵字然后是網頁的三個元素中,d(description)網頁的描述和k(keywords)網頁的關鍵字。這兩個網頁的元素同樣重要,因為它們有助于提高關鍵字的匹配度和關鍵字的順序。




          3、網站內容和關鍵詞的融合


          文章內容和關鍵詞必須融合是什么意思呢?也就是說,我們寫文章的時候,要把我們應該做的關鍵詞放在文章里?,F在讓我們來談談技巧。我們一般可以在文章里放三個關鍵詞。這是因為文章的字數不同,1500字能夠輸入3~4個關鍵詞,2000字以上能夠輸入5~6個關鍵詞是極限的。我們可以分別在文章的首尾給加入一個關鍵詞,然后,在文章的中間加入2-4個關鍵詞,這樣就是可以提高關鍵詞的出現頻率,也就是適當提高關鍵詞的密度了。




          4、給關鍵詞添加錨文本


          我們也可以在關鍵詞中添加錨定文本,但在這里需要說明一些注意事項,即在文章中向關鍵字中添加錨定文本,錨定關鍵字與其文章的關聯性會增強,并且,關鍵字錨點文本的數量不能超過三個,錨點的關鍵字必須是自然的,可以在關鍵字的開頭創建錨點文本,錨點文本可以在文章的開頭和結尾各添加一個,當然,具體得看你的關鍵詞出現在哪里了。




          三、網站內鏈的合理建設


          合理構建網站的站內鏈接也非常重要,因為在網站站內鏈接完成后,可以使網站無形化,有利于搜索引擎蜘蛛爬行,并且為了增加文章的包容性,如果網站的站內鏈接良好,還可以有效地降低用戶網站的建設速度。


          四、網站全站地圖的制作




          在合理建設網站內鏈后,下一步是制作網站地圖了。這里主要介紹兩種形式的網站地圖制作。具體可以往下看!




          1、XML格式的站點地圖


          XML格式的網站地圖一般被稱為蜘蛛地圖,主要用于搜索引擎的蜘蛛爬行。制作這個XML形式的網站地圖的好處是加大搜索引擎蜘蛛蠕動的深度,提高網站內文章的收錄狀況。




          2、HTML格式的站點地圖


          HTML格式的網站地圖通常被稱為用戶地圖,主要是向訪問我們網站的用戶展示,創建這種HTML格式的網站地圖的好處在于,用戶可以查看我們網站的所有文章內容,提高了網站的用戶體驗




          五、網站外鏈的合理建設


          完成以上所有操作后,接著合理建設網站外部鏈接,這個也就是我們常說的發外鏈了,那么,具體應該要怎么做呢?現在讓我告訴大家。網站外鏈接建設的主要目的是引出蜘蛛和流量。當然,這里有注意事項。在我們提出外聯的時候,一定要注意外聯的文章質量,還要注意發表的外聯與第三方外聯平臺的關聯性很強。例如,因為我們的網站是裝修的,所以我們發送的外部鏈接必須在裝修類的論壇和公告欄等平臺上發表,不能在婚禮等網站上發表。




          這里我給你們一個補充說明,當我們做網站外鏈的建設時,主要的工作是交換鏈接和到第三方平臺發布外鏈,你們應該知道,鏈接也是外鏈的一部分,是外鏈的最高質量,而且可控性是外鏈的一種相對強烈的形式,這里討論一些需要注意的事項的鏈接的交換。




          當我們交換友情鏈接時,我們必須注意檢查其他網站是否受到搜索引擎的懲罰,我們可以用SITE指令來檢查,看看對方的網站主頁是否在搜索引擎的第一頁,如果不是,受到懲罰;檢查對方的網站是否有權重,大家都知道我們交換友情鏈接就是為了是網站與網站之間互相傳遞權重;


          另外,通過檢查對方網站的運行速度,如果對方網站的運行速度慢或不穩定,我們也不要和他交換。因為搜索引擎對運行速度慢的網站和不穩定的網站的印象不好,這樣的網站對搜索引擎蜘蛛爬行也不利




          還有,檢查對方網站友情鏈接交換的數量,如果對方網站友情鏈接交換的數量過多,我們也不要和他交換。由于對方網站不怎么交換友誼鏈接,所以我們和他交換的話,對方網站傳遞的權重也會減少,另外,友誼鏈接交換的數量過多的話,搜索引擎會考慮作弊行為,也就是優化過度了。




          在文章的最后,讓我們總結全文的重點。在網站上制定完美的SEO計劃很重要。因為完美的SEO計劃不僅能為網站提供明確的發展方向,還能提高網站關鍵詞排名。那么,我們應該要怎么才能給網站制定出一份完美的SEO計劃呢?




          例如:


          1、分析SEO關鍵詞,主要的內容包括:分析用戶搜索需求、盡量不要設置太多關鍵詞、注意關鍵詞的整體搜索熱度、注意關鍵詞與網站的相關度;


          2、網站內容和關鍵詞的部署策略,主要的內容包括:分析用戶搜索行為、重視“網頁三要素TDK”的寫作、文章內容和關鍵詞的融合、給關鍵詞添加錨文本;


          3、網站“站內鏈接”的合理建設;


          4、網站全站地圖的制作,主要的內容包括:XML格式的網站地圖的制作、HTML格式的網站地圖的制作;


          5、網站“外部鏈接”的合理建設。

          文章來源:淘金網  作者:淘小白

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

           

          圖標設計如何快速過稿?來看看這篇文章的錦囊妙計

          周周


          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          最近遇到一個同學,說做了很多稿圖標的方案最終還是沒有確定下來,但眼看著產品馬上就要上線了,該怎么辦。經過一輪溝通,發現他陷入幾個新手設計師在畫圖標比較容易犯的問題:

          • 面對產品提出的疑問,不知道如何拆解,僅停留在表面的理解,“美”or“丑”
          • 思考的方案呈現不夠系統,導致多次修改,也未被采納
          • 對于圖標多方案的設計輸出缺乏方法,漫無目的的設計方案
          • 思考不夠發散,存在局限性,不敢大膽突破
          • 過度糾結,都在做方案,做出了但方案都不過關

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          從以上這幾個問題,我們進行深入思考,會發現其實這些只是表面上的問題,實際上是在說什么呢?

          • 美 or 丑:實際上是我們對于圖形或圖標的設計趨勢是否了解,我們設計的圖標設計是否符合現在的趨勢,我們闡述方案的時候是否足夠的自信這個是現在流行的風格?
          • 多次修改:這個實際上是反饋我們呈現方案的功力或者能力,我們做的設計是否足夠系統性,多套方案中是否有命中對方想要的點
          • 漫無目的的設計:基于上述第 2 點的框架下,我們在輸出圖標的時候設計呈現的維度是否足夠全面,從表意到圖形美觀度上是否有足夠多的思考
          • 局限性:因為日??吹蒙?,所以在實際案例設計的時候也會受到局限,因此養成日常積累的習慣比臨時思考會更好
          • 過度糾結:這種表現是表明你已經陷入到了設計本身,而缺乏跳出來看看更多參考的勇氣了,這時應該先停住,找找參考,幫助打開思考壁壘

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          基于以上這個案例,分享下我在日常設計中常用的一些方法,希望可以幫助遇到相同問題的小伙伴們進行一些答疑,從而幫助你們打破壁壘,高效成長。

          下面發改分成 3 個部分來進行闡述:思考維度的鍛煉;圖形的設計方法;系統化方案呈現

          思考維度的鍛煉

          當我們要設計一個圖標的時候最容易入手的就是圖標的表意,從表意延伸到圖形的設計,然后再加以不同的設計手法(線、面、線面等等)。

          1. 圖標的表意

          圖標的表意方式,大概可以拆分為以下幾種:具有普識性的圖標、可進行表意延伸的圖標、通過組合的圖標、抽象的需要關聯的圖標。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          2. 普識型圖標

          即我們在現實生活中常見且具有常識性性的圖標,例如:刪除、添加、放大、搜索、筆記本、手機、眼睛、禮物等等。這類的圖標重點在于形體的打磨上需要多花一些時間,從不同的角度進行嘗試,比如以刪除為例子,同樣的造型但可以有不同的設計表現。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          3. 表意延伸的圖標

          即一個事物可以被延伸為一個或者多個圖形表現的圖標,例如:點贊、瀏覽、設置、收藏、評論、事件等等。例如點贊-延伸為你很棒用大拇指來表達,游戲延伸為游戲手柄、設置-延伸為機械操作用齒輪來表達,評論延伸為對話使用對話框來表達,瀏覽-延伸為用眼睛的圖標表達。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          除此之外延伸表意的圖標可以有多種設計方式,例如以事件為案例。

          • 方案 A:事件具有時間性,所以可以考慮用日歷來置換;
          • 方案 B:事件具有告知的行為,所以考慮用喇叭來突出這個行為;
          • 方案 C:事件具有檔案的意味,所以我們可以用表單的圖形來做沿用。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          4. 組合型圖標

          主要是指該類圖標的表意需要通過 2 個以上的圖形進行組合才能更加準確進行表現,例如:群、群聊、好友、添加聯系人、情侶、轉賬、紅包。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          5. 創造類圖標

          特指認識中沒有,因為產品需要被二次創造出來的圖標,一般在一些新生業務中會常出現,這類圖標初期往往需要伴隨文字一同出現。例如:微信的朋友圈、視頻號、小程序、手機系統的 Wi-Fi、藍牙等類型等圖標。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          圖標的表現方法

          常規的圖標表現方法(線形、線面、面形、插圖、疊色等等)我們基本都了解,但作為設計師更應該知道潮流趨勢,清楚現在流行什么類型的設計,這樣才能讓你作出更加出彩的設計。

          這里分享幾種目前最流行的圖標設計類型:

          1. 磨砂質感圖標

          磨砂質感圖標作為 2020 年底最流行的圖標,已經在不少 APP 中看得了相關的設計,從設計方法上并不難,重點還是在于是否有需要和應用場景。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          2. 插圖+磨砂質感

          圖標使用小插圖的方式進行繪制,然后再結合高斯模糊的視覺表現手法,整體讓圖標更具有層次感和通透感。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          3. 3D 質感圖標

          3D 作為這 2 年最流行的設計趨勢,自然也牽動著設計師的心。但 3D 的打磨相對會比較耗費時間,不過仍然是值得一試的設計方式之一,目前在 APP 的設計中比較少見到應用,或許會成為 2021 的趨勢之一。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          4. 3D 磨砂質感圖標

          基于 3D 與毛玻璃圖標的結合,整體的表現結合了這 2 種風格的特點,既保留了毛玻璃圖標的通透,同時也具有 3D 的空間感。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          5. 流光溢彩的圖標

          算是屬于漸變類型的一種,但顏色和細節的跨度相比常規的漸變圖標更加豐富,整體讓人感覺具有流光的效果,更加具有未來感。不過從目前來說,更適合作為獨立的應用 APP 設計,作為常規的圖標設計需要一定的接受度。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          圖標的設計方法

          想要了解設計的方法之前,我們得了解有哪些類型的圖標,具體大家可以查看我之前撰寫過的文章,里面有詳細的分析了圖標的設計類型。除此之外,這里還可以分享下我日常中設計圖標使用的方法。

          這個專題也有超詳細的分類和教程 → https://www.uisdc.com/zt/icon-drawing-guide

          1. 表意+基礎形

          基礎形體使用普適性較高的圖標造型,在圖標的亮點或者點綴處通過表意關聯進行創意設計,從而讓圖標獲得新的感受,但又具有較高的識別性。案例:例如我們以日歷圖標為案例,可以比較直觀的使用日歷的普識圖形,然后通過日期的方式來進行強調賦予圖標生命力,然后再疊加上顏色和質感,并且增加一點小趣味的折角設計。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          2. 關聯延展

          基于實際場景的認識來進行圖形關聯延展,并且進行一定的美感升級及圖形的優化,延展出最終的圖標設計,這種方法可以大大提高大家對于圖標的識別度。案例:設計一個快速聊天表意的圖標,聊天我們常規使用氣泡,快速我們可以關聯為閃電,然后把氣泡和閃電進行結合。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          3. 組合升級創意

          利用一些正負形的創意方法,使用 A、B 圖形的進行有機融合或剪切,使其獲得新的圖標造型,讓整體的圖標感受更具有創意點。案例:例如我們嘗試畫一個具有宇宙感受的游戲圖標,可以通過手柄和星球的有機結合讓整體的圖標帶有游戲和星球的意思,整體提升了表達的創意。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          系統化方案呈現

          方案的呈現屬于設計的一部分,雖然不能起到決定性的作用,但好的呈現效果往往可以幫助我們得到更好的印象分,這里分享一下我在設計過程中嘗試的一些方法。方案的大小或者輸出的類型也決定著我們呈現方案的類型,下面根據不同的類型分享不同的呈現案例。

          1. 縱橫對比法

          適用于需要大量嘗試的時候,以窮舉輸出為典型案例,我們可以用最基礎的圖形為中心點,結合圖形的表意和圖形風格進行縱橫的發散性擴展,例如橫向為表意、縱向為圖形風格,中間部分屬于交叉部分。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          案例模版

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          2. 單個圖標創意思考

          對于一些標志類或重要的圖標,我們需要闡述我們的設計想法或者來源,這種呈現的方式就可以很直觀且簡潔的表現我們的思考。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          案例模版

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          3. 整套輸出

          對于一整套的圖標,我們需要在案例上呈現圖形的設計規則,包括但不限于有:圓角、角度、組合規范、斜度等等。除了呈現圖形之外,請補充上顏色的應用規則、顏色的表意等等。

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          案例模版

          圖標設計如何快速過稿?來看騰訊設計師的私藏方法

          總結

          圖標設計雖然是一個小內容但卻很重要,反映著著整個頁面的精致度,在 UI 界面來說是除界面排版之外最重要的一環,因此是很值得我們去研究的設計之一,建議在日常工作中多練習多看。



          文章來源:優設網     作者:ID設計站


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

          場景化設計

          資深UI設計者

          前言

          ——

          隨著科技的進步和互聯網的發展,過去機械的單向交互方式逐漸被打破,用戶使用移動端的場景越來越豐富,設計師也開始需要通過主動的觀察用戶所處的不同場景,感受用戶情感,預判用戶意圖,來為用戶提供更智能更便捷更貼心更高效的服務,場景化設計已經融入互聯網設計的方方面面,下面的文章當中,我將從三個方向去闡述和列舉場景化設計。



          隨著移動端的不斷發展,從固定電話到移動電話,移動端的設計漸漸的融入在用戶的身邊,深度的跟隨著用戶,陪伴著用戶,慢慢的,開始觀察用戶,感受用戶,在這個過程背后當中,場景設計逐漸產生,設計師通過針對用戶所在的實際場景來設計,建立用戶與場景之間的聯系,給用戶帶來更貼心,更高效的體驗設計。



          1-1  基于不同用戶的場景化設計

          ——————————————


          騰訊視頻 - 播放器護眼模式

          如今各大產品都在上線了“青少年模式”,越來越多的產品關注到了成人與兒童這兩個不同的用戶群體,騰訊視頻在青少年模式中推出的播放器護眼模式,通過攝像頭來獲取用戶當前距離手機屏幕的距離,當用戶離屏幕太近會有提醒并停止播放,當用戶位置在正常距離以后,提醒消失。幫助青少年養成合理觀看手機,愛護視力的好習慣。


          滴滴打車 - 關懷模式

          滴滴打車新增了“關懷模式”,在關懷模式下,整體的頁面字號放大,在功能上,更極簡的打車模式,將復雜的任務拆分為拆分為目標清晰的子任務,并提供清晰的反饋,來方便用戶的使用,關懷模式更有利于老年用戶以及視障用戶使用產品。

          產品在體驗上的提升不應該僅僅是針對主要群體,跟多的是考慮到特殊群里的體驗,以上兩個案例,根據不同的年齡人群“青少年和老年”,適應了不同的產品體驗模式,讓更多的用戶群體都能夠得到更好的產品體驗。


          騰訊地圖 - 左手操作功能

          當用戶在騰訊地圖設置中開啟左手操作功能,首頁地圖上的側方操作控件會移動到屏幕的左側,方便左手用戶點擊和操作,人性化的設計容納了擁有不同使用習慣的用戶。


          高德地圖 - 視覺障礙模式

          在地圖軟件當中,我們通常都會用紅色表示路段擁堵,綠色表示通暢,在色盲色弱人群當中,紅綠色盲也是比較常見的色盲類型,所以在高德地圖中,為色盲色弱用戶做了專屬的路況配色,貼心的考慮到了特殊人群的體驗。


          優酷視頻 - 色弱模式

          優酷視頻在更多模式選擇中,為用戶提供了“色弱模式”,并有不同色弱人群的細分“紅色弱”“綠色弱”“藍黃色弱”


          餓了么 - 無障礙色盤

          在餓了么送貨騎手中,約8%受色盲色弱的困擾(全國男性群體中紅綠色盲色弱占比達8%-9%,餓了么騎手男性占比90%),為此餓了么設計團隊在2019年對app的進行了重新設計,包括使用WCAG無障礙色彩對比度,以及無障礙色盤,以及調整字階,使用輔助圖形等設計手段來解決部分騎手在送貨途中使用APP的痛點問題。



          1-2  基于不同時間的場景化設計

          ——————————————


          美團/美團外賣 - 不同時間段展示不同推薦

          外賣行業本身就具有一定的時間屬性細分,用戶早中晚點餐上肯定會有不同的訴求,美團外賣在不同的時間順應用戶的不同訴求來推薦不同的內容,幫助用戶挑選在該時間段內的用餐。

          美團在一些周末和特殊節日上,用戶在不同時間的訴求不同的,相關推薦也會有所不同。


          QQ音樂 - 不同時間的個性化push推薦

          QQ音樂會根據不同的時間,給用戶推薦不同的個性化push通知,早上是“每天起床氣一句”“最氣不過起床氣” 冬日是“冬夜需要”。結合用戶當前時間段下推薦相關的push,不僅增加了用戶的點擊欲望,也拉近了和用戶的距離,讓用戶時而暖心,時而感到有趣,這么可愛的push通知,也是辛苦QQ音樂的運營小編了~



          1-3  基于不同地點的場景化設計

          ——————————————


          iOS - 勿擾模式新增位置屬性

          在iOS12系統當中,新增了地點勿擾模式,長按勿擾模式的按鈕,可以選擇“直至我離開此位置”,用戶在看電影,會議或一些特定的地點可以靈活的使用該功能。


          大眾點評 - 首頁根據地理位置個性化推薦

          在使用大眾點評時,當我的地理位置在我的常駐地北京時和將地理位置切換到“重慶”時,首頁展示的信息和內容框架都發生了變化,產品根據我的地理位置推斷出我現在搜索的目標地不是我的常駐地,預判到我可能存在即將出游到當前定位的城市,會直接給我推薦一些攻略,和一些“怎么玩”“”訂住宿“”游景點“的旅游攻略向內容。



          1-4  基于不同環境的場景化設計

          ——————————————


          iPhone -  接聽功能

          iPhone在用戶接電話的場景下,根據用戶所處環境不同,適配了不同的方案。不同的當iPhone處于息屏狀態接電話時滑動接聽,防止誤觸;當iPhone在使用時接聽電話為按鍵接聽。減少用戶操作成本。


          支付寶 - 收款碼功能鍵盤

          在支付寶的收款碼掃一掃功能中,用戶向他人展示收款碼時,手機向下傾斜后,掃碼的提示文字和用戶的頭像會發生旋轉,其他功能會相應弱化或者直接消失,以便方便付款人閱讀,充分考慮到了現實中的操作環境,保證了雙方的使用體驗。


          支付寶等金融類產品 - 后臺運行下模糊處理

          支付寶等金融類的產品,在用戶開啟后臺后,會對頁面進行高斯模糊處理,避免了后臺場景下用戶無意中泄漏自己的信息,也防止了被偷窺。(支付寶在頁面底端還添加了溫馨提示:支付寶全力保護你的信息安全)



          1-5  基于不同事件的場景化設計

          ——————————————


          支付寶 - 停車繳費功能

          在輸入車牌省份時,會直接彈出各省/直轄市的縮寫專用鍵盤,并且可以直接進行大寫字母與城市簡稱的切換,降低了用戶的輸入成本,提高了整個功能的使用效率。


          百度鍵盤 - 橫屏游戲模式

          百度鍵盤在游戲模式下,會接入游戲快捷回復語并自動開啟和諧模式,增加趣味性的同時方便了我們在游戲進程中的快捷輸入,將九宮格按鍵進行等比縮小展示,方便用戶點擊。


          iPad OS鍵盤 - 浮動式鍵盤/速滑輸入

          Pad OS鍵盤在使用中,可雙指捏合可以快速縮小鍵盤,然后將它移到合適的位置,即能單手打字,又能給你的app留出更多的空間,并且增加了快速輸入的功能,只需要在鍵盤之前輕掃,即可打字。



          情景預判的交互設計是建立在整個產品的框架上和對用戶深刻理解上的細節迭代。預判設計主要有兩類目的:一是在用戶初次體驗某種功能時引導用戶,避免用戶陷入困惑;二是提前判斷用戶行為,縮短行為路徑。新功能引導更傾向于產品功能本身的邏輯和價值,這次我們主要主要講第二點,提前判斷用戶行為。



          預判設計強調主動性和智能性,是決定產品是否體貼、聰明的重要因素,是走向人工智能的基礎,對微交互中的預判設計進行分類研究有助于加深對其了解和認識,進而在實踐中應用以提升用戶體驗。預判設計可以很好的在用戶的操作過程當中進行簡單高效的引導和預判,幫助用戶更流暢舒適的使用產品。



          2-1  順應用戶行為的預判設計

          ——————————————


          在互聯網發展中,產品功能的流程越長,操作步驟越多,越要求用戶的理解能力和學習成本更大,耗時也會相應增加。因此體驗設計師在理解用戶行為的交互設計的基礎上能夠做到減少冗余步驟,簡化操作流程。順應用戶行為的預判設計也可總結為四個字:以簡馭繁。拋開繁雜的操作過程,運用更少的任務和行為來達成用戶目標。簡約不僅僅是視覺的形容詞,同樣適合行為。


          支付寶 - 轉賬功能

          聊天頁轉賬:在支付寶聊天頁,很多時候我們想給對方轉賬,會習慣性的在輸入框中輸入相應的數字,但在操作錯誤之后,支付寶會在輸入框上方彈出相應數字的轉賬,點擊之后會直接進入轉賬頁面進行操作。對我來說,這個功能已經不是簡單的幫助用戶糾錯,現在更像是一個快捷鍵一樣方便著我們的操作。


          手機號轉賬:當我們復制手機號后打開支付寶轉賬功能,會彈出該號碼的轉賬氣泡引導,提前判斷了用戶通過手機號去轉賬的路徑。用戶可以點擊氣泡一鍵跳轉到轉賬頁面。


          消息頁 - 找人轉賬:在消息頁面,當用戶開始上滑操作時,會出現「找人轉賬」的氣泡提示,點擊進入用戶列表的簡約頁面,去掉了一些生活號服務號企業號等無用的對話框,提高了用戶尋找的效率。

          一個轉賬的功能,在不同的頁面不同的場景下,支付寶在體驗上把用戶情景預判設計做到了極致,事實上,用戶的行為中滲透了意識。從用戶的行為推斷用戶意圖,將用戶的意圖結果化,結合用戶的使用場景,順應用戶的行為,縮短用戶的路徑,才能給用戶帶來最流暢的交互體驗。

          正如《一目了然》中所說,“當一個軟件設計得很糟的時候,我們往往能立刻指出哪里做的很差;但一個優秀的軟件,你卻往往難以解釋優秀從何而來”,因為沉浸式的流暢體驗為你減輕了很多思考的路徑與時間。


          淘寶 - 智能填寫地址功能

          在新建收貨地址的場景下,填寫復雜的地址信息的過程往往都是繁瑣而費時的,而設計師在此場景下考慮到用戶需要地址的多樣性,以及用戶行為背后的含義,當用戶復制了一段收貨地址,打開新建地址頁面時,App將主動提示彈窗“是否粘貼剛復制的信息”點擊“確認粘貼”即可粘貼收貨地址到對應列表項,這種預判設計對于用戶來說是自然且讓人愉悅的。我們不僅順應了用戶的操作行為,還在其中大大的幫助用戶減少了很多操作。



          2-2  分析用戶行為的預判設計

          ——————————————

          預判設計的主體是用戶行為,從用戶的視角出發,分析用戶行為,是設計師建立在整個產品的交互里路程和功能框架上,對用戶的行為深刻洞察后進行細節的改進。


          Mac - 鼠標放大功能

          當我們使用電腦時,總會發現找不到鼠標位置的情況,iMac設計師在識別到用戶開始連續晃動鼠標時,分析到用戶當前的狀態可能是在尋找鼠標的位置,會對鼠標做一個放大的效果,幫助用戶快速定位到鼠標的位置。


          抖音 - 剛剛看過功能

          在抖音我們刷到一些連載視頻后,我們都會去進入作者的個人頁去尋找上下集,在作者個人頁作品很多的情況下,可能要尋找好久,抖音在個人頁的作品卡片上添加“剛剛看過”的提示,方便了用戶在瀏覽中能夠更快速的定位到剛才的視頻。方便繼續銜接觀看。雖然一個小小的功能提示,我們從用戶行為,預判到用戶的需求,帶給用戶更方便更快捷的體驗。


          美團外賣 -「再來一單」和「相似商家」

          在美團外賣中用戶可以在訂單頁面直接點擊「再來一單」按鈕選擇和上次一模一樣的商品加入購物車,如果一家店沒有營業的話那么則會顯示一個「相似商家」按鈕。

          結合實際我們操作的場景,外賣產品,我們重復下單的頻率會比較高,當我們來到這個訂單頁面,「再來一單」的按鈕可以更方便更快速的幫助我們下單,但當商家休息的時候,這個時候繼續展示「再來一單」按鈕對用戶來說也是無效的,我們往往會回到首頁去搜索相關類似的相關產品,然后再重新下單,而這時候「相似商家」按鈕直接幫助用戶一鍵定位到后續的一系列操作,真正的做到在分析用戶行為中,預判用戶操作。



          2-3  符合用戶行為的預判設計

          ——————————————


          設計師做需求時,往往需要考慮在特定情景下,用戶行為背后的思考與需求。因此符合情景的預判,我們也可稱其為“符合用戶感知的預判”。思考用戶使用產品的情景,及時而高效的迎合用戶對于當前場景的需求。


          墨跡天氣 - 降水雷達圖

          墨跡天氣的降水雷達走勢圖,進入之后,放大、縮小屏幕就可以查看全中國的云圖了,墨跡天氣的云圖可以查看到降水情況、閃電、積雪(冬天才有的功能),并且伴有文字提示,在未來兩個小時的天氣情況,方便了有出門需要的同學實時查看天氣。


          微信聊天 - 用戶撤回消息/避免誤點刪除

          在微信聊天功能中,我們可以對兩分鐘以內的消息進行撤回,但相信大家都有跟我一樣的尷尬經歷,發了錯誤的內容想要撤回,卻一不小心點了刪除,再也沒有機會撤回了。

          微信在這個功能上做了很好的改進,當我們的發出的消息小于兩分鐘時,該消息只能撤回,去掉了刪除功能,在該消息超過兩分鐘后,則撤回按鈕消失,只能進行刪除操作,兩個功能進行了互斥處理,很好的避免了這個場景下用戶會誤觸。


          寶 - 評價操作

          當我們選擇好評的時候,會自動勾選到“公開狀態”,當我們勾選差評時,系統會自動取消”公開“狀態勾選,默認匿名發送該評價,很好的保障了差評用戶的人身安全問題和個人隱私問題。


          寶 - 搜索結果頁標簽展示

          當我們在淘寶搜索電腦包時,展示的內容下方會自動展示商品的容量標簽“可放14寸電腦”,幫助用戶在列表頁面就能篩選到更合適自己的商品,當搜索玩具時,也會展示當前商品適用的年齡段。產品根據用戶搜索的內容,自動匹配能夠幫助用戶進行篩選的標簽。


          小結

          ——

          預判設計當中我們從三個層面進行了分析,從順應用戶行為的預判設計,到分析用戶行為的預判設計和符合用戶行為的預判設計。一個好的產品,往往會更多的使用用戶語言,通俗易懂地讓用戶可以對整體的使用方式一目了然,而不是產生一系列的問題,迫使用戶停下來,進行不必要的思考。用戶的每一次停頓對我們來說可能都是一次用戶流失。而預判設計要做的,是根據用戶的行為/用戶所在的場景,讓功能主動找到用戶,并讓用戶與之產生自然的交互。



          場景化設計中,以情感化為目標的設計同樣需要具體場景具體分析,通過細節上的改變使得產品在當前場景下能夠與用戶產生更多共鳴,主要從細節出發滿足用戶在當前場景下的情感需求,讓用戶感動,給用戶驚喜。

          其實用戶在使用產品的過程中,同樣渴望在使用產品時能夠得到情感上的互動,這反映在設計上即是產品情感化設計。情感化把握得好的產品往往更能抓住用戶的心。



          3-1  本能層的情感化設計

          ————————————


          躺平 - 空狀態頁面

          躺平是一款阿里旗下的生活方式APP可愛的小人和擬人的語氣,設計師讓每一個空白枯燥的空頁面瞬間變得可愛和有趣起來。


          快手 - 節日開屏設計

          快手在每一個特殊的節日都會給用戶送來精美的開屏祝福,讓用戶在節日當天打開app就能接受感受到產品滿滿的心意和祝福。


          B站/快手/網易云音樂 - 生日祝福

          在用戶生日的這個特定時間和特定場景下,很多產品都給予了用戶不同的生日祝福,B站是一張有關于星座的動漫海報,快手給用戶定制了專屬生日開屏,網易云音樂的每日推薦為用戶獻上生日快樂歌,不同的產品結合自身不同的產品屬性,給一位用戶都帶來了不同的生日祝福。



          3-2 行為層的情感化設計

          ————————————


          騰訊視頻 - 夜深了提示

          想必大家都有熬夜刷劇的經歷,在騰訊視頻中,在全屏模式下點擊退出清屏模式下,頁面上方的時間旁邊會顯示夜深了,只是簡簡單單的三個字,這深夜在這個場景下,感覺內心也有一瞬間被人關心的觸動,體驗了一個產品的人文關懷和對用戶的體貼。


          QQ音樂 - 會員到期彈窗

          QQ音樂的綠鉆到期挽留彈窗真的是別出心裁,推薦了4首歌曲,連起來就是VIP我們舍不得重要的你,用歌曲的的名字來表達對用戶的訴求,趣味化的設計讓這個小小的挽留彈窗不僅沒有感覺到打擾,還感覺很有趣。


          美團外賣 - 訂單頁面的天氣

          當有特殊天氣時,我們打開美團外賣的配送頁面時,頁面會在頁面中做當前天氣的擬實物效果,下雨天整個頁面也是下著大雨,下雪天整個頁面飄著雪花,甚至霧霾天氣整個頁面是是伴著黃黃沉沉的云,設計師預判到用戶打開該頁面是想看外賣到了哪里,看到外面的天氣如此糟糕,大家都不忍心催促外賣小哥了,大大減少了特殊天氣下配送不及時的投訴率。


          Bibilibi - 密碼輸入

          在B站輸入密碼的時候,頁面上方的小人會遮住眼睛,潛臺詞:我不看,你放心輸入吧。在輸入密碼的情景下,設計師用趣味生動的卡通形象給用戶帶來了更信任更安全的感知。


          Bibilibi - 黃油相機加載動畫

          黃油相機的加載動畫,是一個可愛的切黃油的小人,并且加載當中的文案,會告訴用戶當去前正在加載的內容是什么,能夠讓用戶對于加載的時間有預期,讓等待加載的過程不會枯燥。


          3-3 反思層的情感化設計

          ————————————


          蘋果 - 殘章人士emjio

          蘋果新增 13 個與殘障人士相關的 emoji,包括導盲犬、輪椅、義肢、戴著助聽器的耳朵等。有意思的是,蘋果不僅按照以往的做法為涉及人物的 emoji 按照性別和膚色提供多個版本,而且在表示輔助器具的 emoji 中還做了細節上的區分,比如輪椅有手動和自動之分,不同導盲犬的導盲鞍樣式也有所不同。

          回看歷年蘋果emoji的更新,從膚色平等,到性別、性向平等,再到為殘疾人設計,這讓我想起了蘋果為殘章人士做的廣告 - 科技屬于任何人



          豆瓣 - 悼念已故用戶

          最近,快手B站豆瓣等都陸續上線了“紀念賬號”,產品的意義不僅僅是留住生者的精彩瞬間,更多的也是留住逝者的人生印記,對已故用戶的賬號進行保護,豆瓣在已故賬號上做了悼念用戶的活動“在他/她的頭邊放一束山茶花”的方式來紀念已故的用戶。


          騰訊公益 - 404頁面

          騰訊公益的404頁面,這個項目的靈感源于歐洲失蹤兒童聯合會主導的,名為“NotFound Project”的網絡公益工程。就是利用404頁面展示那些被拐賣兒童、失蹤兒童的信息,幫助那些孩子重新找到家人。


          丁香園 - 404頁面

          丁香園404頁面界面展現了因惡性醫患遇害的醫生同道,文案是“你所訪問的頁面就如那些遇害的同道,已離我們遠去。”下面還會有這些白衣天使的照片和名字。以這樣的方式悼念亡者,也側面展現了丁香園的社會價值。

          在頁面走失的這種特殊場景下,404頁面視作可被利用的空間,來呈現公益信息,這種方法暫時減弱了用戶對產品頁面走失的憤怒,將注意力轉向對弱勢群體或社會問題的關心,側面感受產品的社會價值,這種方法適用于社會公益性質或相關業務的產品。以上的騰訊公益和丁香園對于這塊的設計都是很好的案例參考。


          快手 - 搜索頁負面情緒引導

          在快手搜索一些負面的情緒詞匯時,會提示用戶“別怕,我們都在”。并附有24消失免費心理危機咨詢熱線,從推薦位banner點擊后會進入一個群聊,里面都是其他用戶留下的暖心話語,這些情感化的設計讓那些正在經歷困難,或者想要終止生命的人傳遞以溫暖。我們可以幫助你,你并不是孤單一人。微信/知乎等搜索引擎下都有不同的對于該情況的情感化設計。


          京東/淘寶 - 搜索頁面瀕危動物保護

          在京東搜索穿山甲,會直接挑戰到保護瀕危動物頁面,傳遞出了一個企業對動物的保護意識。頁面中的穿山甲≠治病,向全民科普瀕危動物的現狀和對于人們對于野生動物的錯誤認知。淘寶更是對野生動物保護啟動了綠網計劃,搜索穿山甲/象牙等都會進入到該活動頁面。


          小結

          ——

          情感化離不開場景化設計,上面四個案例分別是兩個404頁面以及兩個搜索引擎的不同設計,不同的產品賦予了不同的含義。不同的場景下設計師也需要有不同的思考,陪伴產品一同進步。

          情感化設計更多的是帶給用戶瞬間感動,很難形成長期的用戶激勵或用戶增長,因此情感化設計主要目的是通過情感累加,提升產品品牌形象;產品不僅是所有功能的集合,他們真正的價值可以是滿足人們的情感需求,而其中最重要的需求就是建立自我形象與社會地位。 反思層是包含并超越前兩個層次,我們要經常思考,為什么同類型的產品,我們要選擇它,為什么它給我留下了很深刻的印象,這都是反思水平的設計需要做的。


          文章來源:站酷  作者:劉狗蛋

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務


          攝影術的誕生和發展

          資深UI設計者

          對第一回還有印象的朋友應該知道,平面設計的定義簡單說來就是:“以某種法則,將文字、圖案、攝影圖片在平面空間中進行編排設計,以達成信息傳達或者行為引導等目的的活動”。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 圖文結合的平面設計作品

          這個定義大致在 1970 年代才成熟,但相信隨著科技進一步發展,這個定義還會修正變化,但當前可以肯定的是,平面設計中有三個核心元素,分別是文字、圖案跟攝影圖片。

          文字跟圖案都已經歷史悠久,其中圖案最早,文字次之,而攝影則到了 19 世紀中期才被發明,發明之前有著漫長的醞釀演變過程。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 圖文結合的平面設計作品

          我們本次一起來了解一下攝影術的誕生過程,還有其對平面設計發展產生的一些影響。攝影術的發展其實主要分為幾個階段,史太濃把他們總結為三段,分別是:

          • 探索者的探索。
          • 商用后的進化
          • 與平面設計的結合

          從小孔成像出發

          根據歷史記錄看來,歐洲在古希臘時期就有人嘗試捕捉真實世界的影像,這個人很知名,就是大哲學家亞里士多德(Aristotle)。

          亞里士多德發現的其實就是“小孔成像”原理,物理課大家有學過,因為光是成直線射入的,當人站在小孔前,頭部擋住上面的光,成影在下邊,腳擋住下面的光,成影在上邊,所以成像是倒立的。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 小孔成像原理

          神奇的是,跟亞里士多德接近同期的中國思想家墨子也同時發現了這個情況,并且比亞里士多德還早一些做了這個實驗,記錄在「墨子·經說下」書中,這種文明發展不約而同的狀態非常多,很難解釋,似乎冥冥之中自有主宰。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 墨子關于小孔成像原理的研究

          隨后有藝術家基于這個原理制作一種叫“暗箱”的東西來輔助自己進行繪畫創作,這樣可以高效的畫出相當準確的圖形來,好比我們設計師有時候也會使用“透寫臺”輔助臨摹一樣。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 畫家制作的暗箱裝置

          時間一直去到 19 世紀初,有人基于這個“小孔成像”原理完成突破性探索,他就是來自法國的約瑟夫·尼伯斯(Joseph Niepce)。這個突破性發展跟一些現代材料的發展密切相關,就是他嘗試將一些感光材料涂在暗箱的平面上,通過曝光的化學變化嘗試將影像捕捉下來。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 尼伯斯的攝影探索試驗

          這種方式被認為是最早有記載的攝影技術,尼伯斯將這種方法命名為“陽光腐蝕法”(sun engraving),通過這個方式尼伯斯在 1822 年制作出世界上最早的人物攝影作品,名為《紅衣主教》。(Cardinald Ambroise)

          用一篇文章,幫你了解攝影術的誕生和發展

          1826 年他再如法炮制,完成世界上第一張風景攝影,拍攝的就是其房間窗外的街道,圖像朦朧不清,但是完成了歷史的突破。

          用一篇文章,幫你了解攝影術的誕生和發展

          尼伯斯本身是一名印刷家,他這方面的探索動機其實是為了尋求一種替代手工插圖的方法,以提升印刷效率,因為手工插圖不但時間長,成本也很高,比如要邀請技術精湛的藝術家創作。

          不幸的是,尼伯斯的探索還沒去到實用性階段本人就因為心肌梗塞在 1833 年去世了,幸好此時他已經有了一位合伙人,可以繼續他的研究,那就是畫家出身同為法國人的路易斯·達貴爾(Louis Jacques Daguerre)。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 路易斯·達貴爾

          商用之路

          達貴爾基于尼伯斯的探索基礎進一步深化,首先改善感光材料,比方使用銀金屬成分的感光版,同時優化制作過程,對感光后的銀版再做工藝處理,出來的攝影效果讓精確度大幅提高。

          1839 年時候,達貴爾采用自己打磨了 7 年的技術對巴黎街景進行拍攝,出來的效果可以說非常好,清晰度很高,讓他非常振奮。

          用一篇文章,幫你了解攝影術的誕生和發展

          獲得這樣的成果后,在一些經商朋友的建議下,他果斷向法國科學院呈報自己與尼伯斯的攝影研究成果,科學院的院士看到作品后大為震驚,一致表示肯定,而且迅速向全世界自豪的宣布法國人發明了攝影術。

          與此同時,達貴爾也馬上開始努力的推動攝影術商業化,首當其沖的自然就是生產“攝影機“進行銷售,因為有法國科學院支持,過程很順利,第二年就生產并賣出 50 萬臺,讓達貴爾一下子名成利就。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 達貴爾相機

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 達貴爾相機拍攝的作品

          這事情讓一位叫塔波特(WilliamHenry fox talbot)的英國人氣得吐血,因為他早在 1833 年也開始探索攝影技術,并且在 1835 年就設計出一種小型攝影機,可以拍攝到很小的物體。

          其原理連暗箱都不需要,屬于一種化學反應的直接曝光,產生的圖像是黑白負片,但是很精確,他獲得這些成就后居然不認為有商業價值,所以丟在一旁好幾年。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 塔波特相機拍攝的作品

          當通過媒介聽聞達貴爾的事跡時候,他匆匆將自己的技術向英國皇家學院匯報,英國人也趕忙向世界宣布發明了攝影術,但也只能成為發明者之一,而并非世界第一了。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 很不開心的塔波特

          但塔波特痛定思痛,發力追趕,1840 年時候更新了感光材料,居然可以將感光之后的底片取出來在暗房沖洗,也發明出負片變成片的方法,雖然多了一道程序,但是得到的效果完勝達貴爾相機,正負片這樣的攝影方式一直到 20 世紀 90 年代都還存在著。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 塔波特相機完成的作品

          正負片的核心競爭力在于可以無限復制,而達貴人爾的銀版攝影只有一張圖片,所以塔波特相機的商業價值也完勝達貴爾,真正做到后來居上,可見事在人為啊。

          上一期說過,當一件事情體現出商業價值,就會吸引到一大堆能人參與,讓事情的發展速度快速提升,攝影的發展也不例外。1880 年時候有人發明出干底片,因為之前的感光材料都是濕涂的,很不方便,再后來就是大家感覺相機體積太大,一起去研究怎么變小。1888 年世界第一臺小型照相機出現,發明者叫喬治·伊士曼(George Eastman),后來他成立了一間公司,就是大名鼎鼎的“柯達公司“(EastmanKodak Company)。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 喬治·伊士曼

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 柯達公司 EastmanKodak Company

          柯達公司同時也主力生產后來風行世界的膠卷,記得小時候我還能在家里找到很多這樣的小圓筒包裝的膠卷,很后悔沒有好好保存一些下來,現今的還能零星找到的卡帶在不久的將來也會消失,建議大家可以收藏。

          用一篇文章,幫你了解攝影術的誕生和發展

          攝影術與平面設計的結合

          首先將攝影與平面設計結合的是美國人約翰·莫斯(John Calvin Moss),他在 1871 年時候首先嘗試將有影像的底片投射到有敏感感光材料的金屬版上,通過腐蝕獲得正片樣式的畫面,這個金屬板就可以直接用于印刷,從而獲得插圖。

          這種方式比金屬雕刻與木刻插圖都快很多倍,而且成本低,制作出來的插圖非常真實,還有一種特殊的類似鋼筆畫一般的藝術效果,廣受社會大眾的歡迎。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 莫斯結合攝影技術制作的印刷品

          當攝影技術走向成熟的時候,有一些藝術家也開始嘗試基于底片為藍本,將其再創作為版畫,這樣就獲得了準確與藝術化的平衡,而且效率也很高。

          世界上現存最早以攝影底片為藍本創作的木刻版畫作品叫《里什蒙運河邊的自由人》(Freemen on the Canal Bankat Richmond),創作時間是 1865 年,主題是一個黑人家庭合照,大家可以看到有很好的藝術韻味。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 《里什蒙運河邊的自由人》

          而大部分印刷廠也在探索怎么直接將攝影圖片印刷在紙張上的方法,據聞這種方法其實約翰·莫斯已經掌握,但一直高度保密,沒有釋放到商業應用中。到了 1880 年時候,美國的《紐約每日圖畫報》第一次以攝影直接制版方法刊載了一個城鎮風景照片,因為地位特殊,這張印刷照片也歷史留名,叫《尚地鎮的風景》(A scenenin shanty town)。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 《尚地鎮的風景》

          我們從圖片細節看來會發現圖像好像由一個個小點構成,如果這樣就對了,因為這種印刷照片的方法就是大名鼎鼎的“絲網制版”。這種方式是把攝影底片通過絲網照射形成很多細小的格子,格子黑白明暗程度不同,在感光底版上通過曝光就形成金屬印刷版,繼而就可以將照片印刷出來。

          這種方式慢慢被不斷優化,越來越多印刷廠都廣泛采用。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 絲網制版與印刷

          當攝影可以順利變成印刷品后,其媒介地位日益提升,因為采用照片方式做插圖有很多好處,其一是節省成本,其二是真實,其三則是效率很高。

          所以攝影作品就跟之前任何一種媒介形式的發展路徑一樣,從追求有到追求好,再由追求好變成追求個性,大家都在努力探索一些新鮮的攝影方法,如今單純攝影的學問絕對不比平面設計低,而且兩者之間的關系非常密切,很多法則也可以相互引用。

          世界上第一位探索人造光源攝影的人是來自法國的納達(F.T.Nadar),他在 1886 年做了世界上第一次攝影采訪,對象就是我們在「風格列傳」新印象派篇談到過的化學家謝弗勒爾(Michel Eugene Chevreul)。

          用一篇文章,幫你了解攝影術的誕生和發展

          △ 納達采訪謝弗勒爾

          過程中完成了 21 張由人造燈光配合的現場照片,最后配以文字發表在法國刊物《插圖雜志》上,讓那一期的刊物銷量大增,因為讀者可以配合生動的照片更好了解內容,當時而言顯得非常有趣。

          從此之后,照片與平面設計的關系變得越來越重要,越來越多平面設計師也開始進一步探索照片與排版之間的法則。

          文章來源:優設  作者:土撥鼠

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務


          讓動畫生動的技巧

          ui設計分享達人





          前言

          前人早已總結了讓動畫生動的技巧,早在1981年由兩位迪士尼動畫師所撰寫的《The illusion of life:Disney Animation》一書就提到了動畫的12項基本法則,該法則也是受用至今。法則雖是針對傳統動畫而制定,但對于我們日常需求中所接觸的動效/動畫需求也同樣受用。


          目錄

          1)動畫原則介紹

          2)結合案例應用原則

          3)流程方法論沉淀

          4)結語








          01: 擠壓與伸展

          擠壓與伸展是我們最常用的運動技巧。使用擠壓與拉伸來強調物體的質感、重量、速度。擠壓和拉伸會給予物體運動時具備質量感和體積感的錯覺。例如當一個皮球正在進行下落運動,在運動過程中讓皮球體積產生一定拉伸來表現它的速度感,皮球落地后則因力的作用產生擠壓變形。






          技巧建議

          擠壓與伸展的幅度影響著物體的質感、重量。設計師們可根據物體的質感去決定擠壓伸展的幅度。動畫雖存在夸張性,但對于物體擠壓拉伸的體積盡可能保持視覺統一,避免較大的體積誤差導致運動的突兀。











          02: 預期動作

          預期動作可告知觀者物體運動即將發生,增強觀者的場景代入感,使運動更加生動真實。如果我們去除前期的預備過程物體所呈現的運動感知像是突然被前方磁鐵所吸引。






          技巧建議

          預期動作可對觀者視線進行引導,設計師可以根據預期動作所引導的方向來銜接鏡頭/場景的轉場。反之預期動作也可以用來欺騙觀眾,當用戶預期與畫面不符時也可增加動畫舞臺的趣味性。








          03: 演出方式

          每個角色/運動元素在運動過程中都會流露出獨特的態度和氣質。針對不同的角色/元素的運動特性運用不同的運鏡、表演技巧、時間節奏以及舞臺的編排技巧,傳遞貼合角色/元素氣質的動態感知。








          04: 持續動作與關鍵動作

          在現今動畫工作流程中,考慮到流程效率及技巧利弊,我們可以使用兩者相互結合的方式。關鍵動作描述的是設計師們熟知的關鍵幀動畫的方式(類似AE)。在動畫設計前進行基本運動的關鍵動作提煉,再進行細化,一層層的遞進。底層的關鍵運動越完善,在后續添加細節時才不會耗費大量時間調整。而對于持續動作(逐幀動畫)的技巧,我們可以利用它處理一些復雜效果例如(涉及到運動空間的變化、形狀上的靈動變化等)。






          1)持續動作(Frame by Frame)

          逐幀動畫。

          優點:自由且流暢的動態。

          缺點:難以把控時間長短、體積大小。


          2)關鍵動作(Key Frame)

          關鍵幀動畫。

          優點:清晰、可靠、規范。

          缺點:修改成本略高。









          05: 跟隨與重疊動作

          跟隨動作指的是元素運動結束后不會立刻停止,會因為質量、慣性等因素,元素會慢慢進行振動減幅的過程。重疊動作則指的是運動不會同一時間發生,主體與附屬部分的運動會因質感、外力等因素產生不同的速率。






          技巧建議

          1)表達運動的力量、速度感

          當一個人跳躍的時候,自身的衣帽等附屬物也會隨之擺動。跟隨&重疊動作反應著運動的力量感和速度感,利用好跟隨與重疊動作,可以更好地表現角色/元素主要動作/運動。當主要動作/運動力量大、速度快的時候,跟隨與重疊的物體運動幅度大,反之則運動幅度小。









          06: 緩動

          真實世界的運動遵循著緩動運動的規律,而并非勻速運動。根據物體運動情況、動態質感去編排元素合適的運動速率。關于運動的速率編排相關內容,可以看看過往的文章-《動效的質感》。








          07: 弧形運動

          仔細觀察可發現自然界中的運動多為弧形運動的組合,而勻速運動只存在于機械運動中。






          技巧建議

          1) 弧形運動路徑

          角色動畫:

          在人物運動過程中使用弧形運動增添角色動畫表現力。比如當人物抬頭或轉頭時,通過弧度的變化映射人物的情感,是充滿好奇心的還是沮喪的。


          交互動效:

          在交互動效中,弧形運動路徑會給予觀者運動表現力較年輕活潑的感知隱喻。設計師可根據品牌調性及產品屬性去選擇運動路徑類型。









          08: 附屬動作

          當主體在運動時,設計師可通過附屬物運動來輔助表達主體運動氣質。比如人物敲門時,捏緊拳頭的敲(代表生氣)與翹起蘭花指敲的(代表精致)區別。








          09: 時間控制

          在上篇文章其實我們有提到影響動效質感的原因之一就是時間,控制好物體的運動時間也是表現良好動畫節奏感的關鍵。








          技巧建議

          1) 時間偏差(角色動畫側)

          使用「時間偏差」的技巧,可以讓你的動畫更加生動。因為受力、質感等因素影響,主體運動時附屬部分的運動不會同時發生。比如當人物正在打哈欠時,首先是從嘴巴發力,再擴散至五官眉毛。






          2) 時間偏差(體驗動效側)

          為保持動效的連續性以及營造自然流暢的交互體驗,適當的使用時間偏差,可避免動效元素變化過程出現空檔期,提升信息傳遞效率減少認知負荷。








          10: 夸張

          通過夸張手法增添動畫表現張力,加強運動元素的吸引力令動畫更有代入感和戲劇性。








          11: 多維表現

          動畫設計時可通過營造鏡頭透視感、景深感模擬真實的空間感打破二維扁平視覺效果,提升畫面表現力。








          12: 吸引力

          一部好的動畫作品一定會有令人吸引的人事物,比如動態氣質或視覺風格等它們都能很好的吸引觀眾。除此之外,如何講好一個故事,通過趣味幽默的故事表達手法也可以增添動畫的吸引力。








          原則歸類

          通過對十二大基本原則的學習,我將技巧分為以下兩大類:設計技巧和表演技巧。

          設計技巧:動畫設計的技法,增添動畫細節令動畫表現更生動自然。

          表演技巧:舞臺表演的技巧,提升動畫舞臺全局的表現力。












          結合案例

          接下來我們結合上述所提及的動畫原則,根據實際案例進行結合應用。一起來探討下當接到動效設計需求時,我們需要思考哪些點?才能使我們的動效表現力更上一層樓。








          腳本背景

          假設在項目中我們需要對設計元素(豬豬存錢罐)添加動效以提示用戶已省錢成功的情感氛圍。設計前我們先來分析下元素以什么動態/動作表現會更貼合元素性格。考慮到豬豬的可愛屬性,采用了跳躍的運動方式。并擬定了跳躍后天上落下金幣的動畫腳本。








          動態分析

          將腳本確定后,我們在腦海里已經有大概的運動畫面。但在進入動效設計前,還需要明確在動畫中使用哪些動畫原則來提升動畫生動性。








          應用技巧

          在添加動畫細節前,我分享下在項目中經常用到的兩個技巧。


          1) 實現擠壓與伸展的多種形式

          實現擠壓與伸展的方式有很多種,最常見的是直接改變物體的縮放比例或形狀路徑來實現。但在設計項目中我們往往會遇到非矢量的設計元素,利用xxx可實現圖層的彎曲扭曲等變形效果。






          2) 考慮運動物體質感

          質地堅硬的物體受外力的影響較小,質地柔軟的物體受外力的影響較大。而像豬豬這類柔軟的物體在恢復靜止吋肉肉會有一個跟隨&重疊動作(抖動)。在處理這類抖動的效果除了使用常規的彈性表達式外還可配合使用AE的 CC bend it 效果增加形變細節令物體運動更為生動自然。








          差異對比

          當我們去除這些動畫原則后,再去作對比明顯的感知差異就出來了。








          經驗沉淀

          根據過往項目經驗,我總結了動效/動畫設計的流程思路。從業務目標的分析到動畫腳本的確定,層層遞進。前期的目標和框架確定后,之后進行動畫原則的梳理及最后的動效輸出。設計師們不妨在項目中嘗試上述的流程思路及原則技巧,將自身動畫的表現力提升一個檔次。








          結語

          隨著動畫/動效的落地方式愈來愈完善,像Lottie、svga等新型的動畫落地形式所帶來的高品質畫面呈現。設計師們不能滿足于動畫僅僅只是動那么簡單,如何去塑造生動的動畫形象還有不少我們需要考慮的細節。恰好前人總結了相應的原則技巧,幫助我們站在巨人的肩膀上看得更遠。除《The illusion of life:Disney Animation》外,近期也在閱覽《動畫師的生存手冊》里面涵蓋了不少關于角色動畫的運動技巧及細節。其中部分技巧并不局限于角色動畫的設計中,下期文章我將分享關于角色動畫的知識沉淀內容。





          文章來源:站酷  作者:Fiasc1

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務


          圖標設計,你需要了解這些...

          ui設計分享達人

          本文目錄

          • 圖標風格匯總

          • 圖標設計流程

          • 案例講解

          • 圖標資源輸出



          01 常見圖標風格匯總

          • 線性

          • 面型

          • 線面



          1、線性

          • 單色

          • 雙色

          • 漸變

          • 不透明度

          • 一筆成形

          • 斷點



          1.1單色

          單色線性擁有簡潔、清晰的特性,在視覺層級上較低,適用于基礎功能圖標。b端較為常見,移動端常見在設置頁面或導航欄通知、分享等圖標設計上。 


          1.2雙色

          雙色線性在單色的基礎上豐富配色,解決了單色線性原本過于單調的問題,在提升趣味性的同時,也將視覺層級進行了提高,同樣適用于基礎功能圖標。在使用過程中需要注意的是豐富的配色會偏向年輕化,需要考慮是否符合產品風格及主流目標用戶審美。 



          1.3漸變

          線性漸變還可以在用色上進行區分,簡潔的用色可以給人帶來科技、炫酷感,在車載ui中較常見。豐富的漸變配色則更適合運營入口設計,有著年輕化、熱烈的氛圍。 



          1.4不透明度

          線性雙色可以和不透明度風格進行很好的比較,前者視覺更跳躍,個性更鮮明。而后者在使用時普適性更強,即豐富配色細節,又避免視覺過于跳躍(可以把它理解為同類色配色)。所以在大多數使用場景下,不透明度風格都是一個很好選擇。 



          1.5斷點

          斷點風格有線性單色&雙色該有的個性,并且在線性雙色基礎上繼續提升趣味性,使用需要注意產品目標人群年齡段。 



          1.6一筆成型

          該風格設計感和個性都極強,很考驗設計師對造型繪制的把控,功底不夠就很容易導致設計后出現識別問題。所以設計難度較大,且延展性較弱,難以表達復雜語義,使用需謹慎。



          2、面性

          • 單色

          • 雙色

          • 不透明度

          • 晶白

          • 磨砂玻璃

          • 等軸側(2.5d)

          • 漸變

          • 新擬態

          • 輕質感

          • 明暗質感

          • 寫實

          • 抽象

          • 卡通插畫

          • 像素風格



          面性與線性的區別在于前置視覺面積更大,整體視覺層級比線性高。下面部分和線性風格重疊的內容就不贅述。




          2.1單色



          2.2雙色



          2.3不透明度

          面型不透明度風格,通過調節前后不透明度可以帶來較強的空間感,使用場景較廣泛。



          2.4晶白

          晶白嚴格來說也算質感圖標(白色質感)的一種,常見于品類圖標設計,通過透明度、投影、漸變等參數調節,使整體立體感和空間感都很強。



          2.5磨砂玻璃

          又叫毛玻璃風格,是通過背景模糊,或剪切模糊圖層的技法來表達通透、有層次、精致的視覺感受,但由于容易與淺色背景相融,造成對比度不足難以識別的問題,所以在使用中需要注意無障設計。



          2.6等軸側

          也叫2.5d,有很強的趣味性,及識別度,適合重要入口或運營設計。但這類風格較為卡通,且表現花哨。使用需要注意應用場景及目標人群年齡段,避免干擾信息閱讀和不符和產品風格。



          2.7漸變

          這類風格可以很好的吸引用戶注意力,在電商、美食類產品中較常見,主要注意配色干凈協調。



          2.8新擬態(Neumorphism)

          新擬態圖標色彩相對單一,與背景融合度較高,通過高光、投影表現一定的立體感。通常是整個產品就是新擬態風格時才使用。所以該風格局限性較大,再有這類風格與背景對比較弱,無障設計問題較大。



          2.9輕質感

          通過大量漸變、投影來表現立體感,整體風格偏年輕化,常見在教育類產品中,使用注意配色干凈和諧。



          2.10明暗質感

          通過調節同一色相不同明度、飽和度來營造前后空間感,整體風格統一。


          2.11寫實

          這類圖標特點很明顯,有極高的識別度,目前美團外賣品類區入口就是該風格,整體偏年輕化。主要考驗設計師造型繪制、技法表現能力。



          2.12抽象

          通過幾何圖形組合、色彩使用來表達美的視覺感受。這類圖標藝術(裝飾)價值更大,不追求識別度,美觀即可。



          2.13卡通插畫

          這類風格既可以做圖標又可以做空狀態插圖,設計美觀有特色即可。



          2.14像素風格

          這類移動端界面較少見,目前只在一個海外電商產品(Jollychic)中看過,還有就是一些像素游戲中,比如「泰拉瑞亞」、「我的世界」。



          3、線面

          • 線面

          • 描邊插畫



          3.1線面

          和線性雙色圖標類似,趣味性較強,具備個性化特點,可以做Tab選中狀態。 



          3.2描邊插畫

          類似卡通插畫,在卡通插畫基礎上加入描邊。同樣顏色,在一些特定的前后交接處利用線條做區分,算是多一種設計表現形式,同樣美觀有特色即可。 




          4性格

          • 粗線

          • 細線

          • 圓角

          • 直角



          4.1粗線

          力量感、穩重、男性等感受



          4.2細線

          品質感、精致、女性化 



          4.3圓角

          安全、親和、年輕



          4.4直角

          嚴謹、正式、果斷利落 

          由于圖標風格繁多,所以以上列舉并不包含所有圖標風格。



          02 圖標設計流程

          • 明確語義

          • 關鍵詞詳解發散

          • 確定風格

          • 提取造型

          • 創意輸出



          1、明確語義

          圖標存在的目的是起引導作用,在豐富頁面視覺的同時,幫助用戶更快的獲取信息(當然圖標的使用意義還有很多)。設計師在將文字翻譯成圖標前,必須先理解其文字含義。因為最終呈現的圖標,需要用戶一眼能準確反翻譯其中含義(藝術抽象、裝飾類圖標除外)。

          在C端設計中,以Tab為例,一些常見文案:首頁、分類、發現、我的,這類語義還算比較清晰的。但在B端設計或工具類APP中就會遇到一些復雜語義。以我的工作來說,目前在做一款網站搭建工具,后臺常會需要設計組件及對應的圖標,比如:滑動商品、多圖列表、上拉圖文列表這些語義比較復雜的圖標,在一定程度上會比較難精準傳達文案。



          2、關鍵詞詳解發散

          這一步有點類似情緒版使用,但不同的是:我們需要將確定的詞(A)進行詳細解釋,再將解釋文案中關鍵的詞語進行發散,得出一系列相關聯的詞(A1、A2、A3…)。有時間還可以根據這些詞找到對應的圖片,再看在這些相關聯的圖片中,有哪些細節可以傳遞最開始我們確定的那個詞(A)的意思。



          3、確定風格

          我們可以借助情緒版,根據產品定位和目標用戶描述,再結合應用場景,在目前已有的風格中找到符合產品氣質,符合當前模塊視覺層級的圖標風格。

          前面我們已經了解了目前常見的圖標風格有三大類:線性、面型、線面,其中還有很多細分,比如在線性中又分粗線(沉穩、力量)、細線(品質)、曲線(女性化),還有圓角、直角,每種類型所傳遞的感受都不同。在創意前期,我們將每個點合理進行隨機組合(如下圖)即可創造一種更新穎的風格。



          4、提取造型

          經過關鍵詞詳解發散,其實我們已經獲得了很細節點,接下來將這些細節點進行合理融合后,就可以得到代表同一語義但形式各異的基礎圖標樣式(此時還只是想法階段,可以通過手繪方式記錄組合形式,不用特別精細化)。




          5、創意輸出

          在設計執行前我們需要先了解兩個大知識點: 
          • 圖標設計規范

          • 圖標設計注意點


          5.1圖標設計規范

          • 常見圖標尺寸

          • 圖標盒子使用


          5.1.1、常見圖標尺寸

          在界面圖標設計中最常用尺寸:12x12、16×16、24×24、32×32、48×48(其他尺寸:64×64、96×96、128×128、256×256、512×512)



          5.1.2、圖標盒子使用

          什么是圖標盒子?其作用是什么?

          圖標盒子即圖標約束網格,來源于Material design。使用圖標盒子有利于使我們創造的系列圖標保持規范與統一。



          5.2圖標設計注意事項

          • 簡潔美觀

          • 易于識別

          • 細節統一

          • 像素對齊

          • 視覺大小一致

          • 飽滿透氣

          • 融入品牌基因



          1、簡潔美觀

          圖標是否美觀,會受設計師對圖標造型把控、圖標構成元素比例、配色等設計能力影響。在UI界面功能圖標設計中,通常會盡量減少不必要的細節,降低圖標復雜度,來幫助用戶快速識別。當然圖標也有豐富細節的做法,常見在一些重要運營入口上。



          2、易于識別

          識別度的問題,在最前面明確語義中就有提到過,這里就不贅述。



          3、細節統一

          在細節中包含:表現風格、描邊粗細、端點類型、圓角大小、斜角角度、配色、投影參數等(不同風格圖標的細節不同,這里只是列舉部分),上述細節在系列圖標中都應保持一致。



          4、像素對齊

          在圖標繪制中,需盡量避免坐標位置xy或寬高參數出現小數點,以此保證最終導出的圖標是清晰的。



          5、視覺大小一致

          由于不同圖標外輪廓不同,就會導致哪怕在物理大小上相同的圖標(假設都是24x24),但視覺上可能還是會給人大小不一致的感受,因此我們需要借助前面提到的圖標盒子進行約束調整。


          6、飽滿透氣

          圖標的飽滿透氣,不一定需要加入很多筆畫(描邊、裝飾等)細節。而是盡可能在形成風格的同時,簡化能影響識別度的關鍵筆畫,通過調節筆畫大小、長短、位置使圖標達到一個最平衡狀態。


          以如下途牛_我的頁面_功能區圖標為例:

          圖中標紅圖標就存在飽滿度不足,及內部較擁擠的情況,第一感受是看起來不舒適,品質感比較低。除此外,還存在如下問題:


          • 圖標大小很明顯不一致

          • 設計語言不統一,有圓角有直角

          • 圖標風格不一致,有透明度+分割形式(我的保單)、有純透明度形式(專屬顧問、我的收藏)、還有其余單色實心形式



          7、融入品牌基因

          在圖標中融入品牌基因可以有效的提升產品品牌感,作為高階設計師必備技能之一,常見提取維度:

          • 顏色

          • 設計語言

          • Logo輪廓 


          以我之前的豆果美食項目為例,提取到如下細節:

          顏色:提取黃色、綠色兩類顏色 
          曲率(設計語言):品牌Logo走線順滑、自然、圓潤,個性鮮明 
          分離(設計語言):黃色區域與綠色區域雖不相交,但存在聯系。(分離間留白) 


          根據提取到的基因,最終得到如下兩套風格不同,但語言相同且都具備品牌感的圖標。


          Logo輪廓:在圖標中融入品牌logo外輪廓(Google Play),或根據logo輪廓結合應用特性進行延展(Microsoft)。



          03案例展示

          就以途牛為例,對我的頁面功能圖標進行優化。 


          1、明確語義

          根據文案進行詳細翻譯,幫助我們充分理解文案。



          2、關鍵詞詳解發散

          以「專屬顧問」為例:

          釋義:有專門的知識或經驗,受聘為機關團體或單獨個人提供專門咨詢的人。

          提取釋義中關鍵信息,生成關鍵詞:專業、專人,再根據關鍵形容詞發散一系列具象名詞。



          3、確定風格

          根據產品調性和模塊視覺層級以及考慮延展性,初步確定如下風格組合起來是比較適合:


          線性:雙色、不透明度、斷點 
          面性:單色、雙色、不透明度、輕質感、明暗質感 
          線面:線面 


          在實際查看中,發現Tab的風格為單色+不透明度+斷點風格。

          為了和Tab拉開差異,最終確定以如下風格進行組合表現比較符合產品調性:

          線性:雙色

          面性:單色、雙色、不透明度、輕質感、明暗質感

          線面:線面



          4、提取造型

          通過手繪或大腦想象進行造型構思,這里我就不展示手繪過程(行吧,我承認就是畫的太丑了不敢放)。



          5、設計執行

          由于不同風格對圖標造型構思有所影響,且圖標類型很多,不同特點組合起來樣式更多。案例精力有限,所以只以線性雙色風格做演示,希望大家靈活使用。


          這一步就是將手繪圖形矢量化,在矢量化創意過程中,我們可能會對手繪的圖形進一步簡化細節或新增造型,這都很正常。只需注意在整個繪制過程中遵循圖標設計規范,以及注意圖標設計注意事項即可。

          圖標盒子使用


          創意輸出


          Tips

          在繪制造型時需注意,圖標文案詳解中的關鍵詞也有優先級,以如下「禮品卡」圖標為例,是表達禮品的意思多?還是表達卡的意思多?這個會影響圖標中相關元素的面積大小。站在商業角度看可能會更傾向于方案2,突出禮品,來吸引用戶。站在入口文案清晰傳達的角度,可能我會更傾向于方案1。 

          1or2?


          最后對專屬客服進行多風格嘗試,最終效果如下:


          附上部分繪制過程中的淘汰稿:



          04圖標資源輸出

          在將圖標輸出給前端前,需要溝通好使用何種格式,目前常用圖標格式分為兩大類: 


          矢量格式

          • SVG:縮放無損、體積小、支持前端樣式修改參數、單色情況下方便前端修改顏色來表達圖標狀態,減少重復上傳。


          位圖格式

          • PNG:支持透明格式

          • JPG:兼容性強,適合大尺寸高飽和度圖像

          • GIF:動態圖標使用,缺點是透明情況下邊緣容易出現鋸齒。



          這里主要介紹靜態圖標中,svg格式在工作中如何輸出給前端同學使用(借助iconfont)。


          svg圖標交接方式:

          1、圖標資源優化

          在iconfont官方繪制指南中有描述,在導出前需要按如下規則優化圖標資源:



          2、選中圖標導出svg格式

          以Figma為例,優化圖標資源后,選中圖標將輸出格式選擇為導出svg。



          3、上傳iconfont

          在資源管理下,選擇需要上傳的位置。


          選擇上傳圖標 



          4、選擇顏色提交模式

          去除顏色并提交:適合單色圖標,去除顏色提交可以方便前端使用代碼修改參數,減少不同狀態圖標重復上傳。

          保存顏色并提交:適合多色圖標(注意:在單色情況下,選擇保留顏色提交,前端則無法通過代碼修改圖標顏色)。



          最后當我們把圖標都上傳好后,就可以將前端同學拉入團隊項目中開心進行玩耍。

          文章來源:站酷  作者:幺零三

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務


          vue.js前端框架:Vue.js簡介

          前端達人

          1 Vue.js概述

          • Vue.js(讀音 /vju?/,類似于 view) 是一套用于構建用戶界面的漸進式框架。與其他重量級框架不同的是,它只關注視圖層(View層),采用自底向上增量開發的設計。Vue.js的目標是通過盡可能簡單的API實現相應的數據綁定和組合的視圖組件。它不僅容易上手,還非常容易與其他庫或已有項目進行整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue .js也完全能夠為復雜的單頁應用提供驅動。

          1.1 什么是Vue.js

          • Vue.js實際上是一個用于開發Web前端界面的庫,其本身具有響應式編程和組件化的特點。所謂響應式編程,即保持狀態和視圖的同步。響應式編程允許將相關模型的變化自動反映到視圖上,反之亦然。Vue.js采用的是MVVM(Model-View-ViewModel)的開發模式。與傳統的MVC開發模式不同,MVVM將MVC中的Controller改成了ViewModel。在這種模式下,View的變化會自動更新到ViewModel,而ViewModel的變化也會自動同步到View上進行顯示。
          • ViewModel模式的示意圖如下圖所示:
            在這里插入圖片描述
          • 與ReactJS一樣,Vue.js同樣擁有”一切都是組件“的理念。應用組件化的特點,可以將任意封裝好的代碼注冊成標簽,這樣就在很大程度上減少了重復開發,提高了開發效率和代碼復用性。如果配合Vue.js的周邊工具vue-loader,可以將一個組件的HTML、CSS、JavaScript代碼都寫在一個文件中,這樣可以實現模塊化的開發。

          1.2 Vue.js的特性

          • Vue.js的主要特性如下:
          •  輕量級
            相比較AngularJS和ReactJS而言,Vue.js是一個更輕量級的前端庫。不但容量非常小,而且沒有其它的依賴。
          •  數據綁定
            Vue.js最主要的特點就是雙向的數據綁定。在傳統的Web項目中,將數據在視圖層展示出來后,如果需要再次修改視圖,需要通過獲取DOM的方法進行修改,這樣才能維持數據和視圖的一致。而Vue.js是一個響應式的數據綁定系統,在建立綁定后,DOM將和Vue對象中的數據保持同步,這樣就無須手動獲取DOM的值再同步到 js中。
          •  應用指令
            同AngularJS一樣,Vue.js也提供了指令這一概念。指令用于在表達式的值發生變化時,將某些行為應用到綁定的DOM上,通過對應表達式值的變化就可以修改對應的DOM。
          •  插件化開發
            與AngularJS類似,Vue,js也可以用來開發一個完整的單頁應用。在Vue.js的核心庫中并不包含路由、Ajax等功能,但是可以非常方便地加載對應插件來實現這樣的功能。例如,vue-router插件提供了路由管理的功能,vue-resource插件提供了數據請求的功能。

          2 Vue.js的安裝

          2.1 直接下載并使用 script 標簽引入

          • Vue.js官網:https://cn.vuejs.org/v2/guide/
          • 在Vue.js的官方網站中可以直接下載vue.js文件并使用 script標簽引入。
            1、下載Vue.js
            Vue.js是一個開源的庫,可以從它的官方網站中下載。下面介紹具體的下載步驟:
            (1)打開Vue.js的官方網站,進入到Vue.js的下載頁面,找到如下圖1.2所示的內容。
            在這里插入圖片描述
            (2)根據開發者的實際情況選擇不同的版本進行下載。這里以下載開發版本為例,在”開發版本“按鈕上單擊鼠標右鍵,如下圖1.3所示。
            在這里插入圖片描述
            (3)在彈出的快捷菜單中單擊“連接另存為”選項,彈出下載對話框,如下圖1.4所示,單擊對話框中的“保存”按鈕,將Vue.js文件下載到本地計算機上。在這里插入圖片描述此時下載的文件為完整不壓縮的開發版本。如果在開發環境下,推薦使用該版本,因為該版本中包含所有常見錯誤相關的警告。如果在生產環境下,推薦使用壓縮后的生產版本,因為使用生產版本可以帶來比開發環境下更快的速度體驗。
          • 引入Vue.js
            將Vue.js下載到本地計算機后,還需要在項目中引用Vue.js。即將下載后的vue.js文件放置到項目的指定文件夾中。通常文件放置在JS文件夾中,然后在需要應用vue.js文件的頁面中使用下面的語句,將其引入到文件中。
          <script type="text/javascript" src="JS/vue.js"></script> 
          
          • 1

          注意:引入Vue.js的 script 標簽,必須放在所有的自定義腳本文件的script 之前,否則在自定義的腳本代碼中應用步到Vue.js。

          2.2 使用CDN方法

          • 在項目中使用Vue.js,還可以采用引用外部CDN文件的方式。在項目中直接通過 script 標簽加載CDN文件,通過CDN文件引用Vue.js的代碼如下:
          <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.21/vue.js"></script> 
          
          • 1

          注意:為了防止出現外部CDN文件不可用的情況,還是建議用戶將Vue.js下載到本地計算機中。

          2.3 使用NPM方法

          • 在使用Vue.js構建大型應用時,推薦使用NPM方法進行安裝,執行命令如下:
          npm install vue 
          
          • 1

          注意:使用NPM方法安裝Vue.js需要在計算機中安裝node.js。
          node;js官網:https://nodejs.org/en/,通過node.js官網下載之后,傻瓜式安裝即可。

          3 前端框架開發工具

          • 利用Vue.js進行前端框架開發的常用工具有如下幾個:WebStorm、IDEA、Vscode

          • 前端框架開發常用的工具下載:
            (1)WebStorm官網:https://www.jetbrains.com/webstorm/
            (2)IDEA官網:https://www.jetbrains.com/idea/
            (3)Vscode官網:https://vscode.en.softonic.com/

          • 轉自:csdn 作者:小白_xm

          app界面賞析 ——— 北京藍藍設計 移動端UI設計資源分享(十七)

          前端達人

          移動互聯網的迅速崛起,讓移動網頁,移動客戶端越來越重要,客戶端的頁面設計也是一門很大的學問。科技迅速發展的今手機屏幕的尺寸越來越放大化,但卻始終 很有限,因此,在APP的界面設計中,精簡是一貫的準則。這里所說的精簡并不是內容上盡可能的少量,而是要注重重點的表達。在視覺上也要遵循用戶的視覺邏 輯,用戶看著順眼了,才會真正的喜歡。


          接下來為大家分享六款精美的app UI設計案例:


          WechatIMG1659.jpegWechatIMG1666.pngWechatIMG1667.pngWechatIMG1668.pngWechatIMG1669.pngWechatIMG1670.pngWechatIMG1672.png



          --手機appUI設計--

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服



            更多精彩文章:

                 手機appUI界面設計賞析(一)

                 手機appUI界面設計賞析(二)

                 手機appUI界面設計賞析(三)

                 手機appUI界面設計賞析(四)

                 手機appUI界面設計賞析(五)

                 手機appUI界面設計賞析(六)

                 手機appUI界面設計賞析(七)

                 手機appUI界面設計賞析(八)

                 手機appUI界面設計賞析(九)

                  手機appUI界面設計賞析(十)

                 手機appUI界面設計賞析(十一)

                 手機appUI界面設計賞析(十二)

                  手機appUI界面設計賞析(十三)

                 手機appUI界面設計賞析(十四)

                 手機appUI界面設計賞析(十五)

                 手機appUI界面設計賞析(十六)

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合