<thead id="kdfuf"><font id="kdfuf"></font></thead>
<samp id="kdfuf"></samp>
    <nav id="kdfuf"><strong id="kdfuf"></strong></nav>
      中文字幕无码一区二区三区在线,久久精品人人做人人爽,国产一级内射无挡观看,十八禁在线黄色网站,日韩欧美国产另类久久久精品 ,少妇人妻偷人精品一区二区,久久午夜视频,亚洲春色AⅤ无码专区

      首頁

      簡述:騰訊移動端頁面設計規范 對你有啟發嗎?

      藍藍設計的小編

      小編今天分享一下騰訊移動端頁面設計規范,看看會對你有什么啟發?

      網站內部結構優化_如何優化網站的內部結構

      seo達人

      如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

      如何優化網站的內部結構?網站內部結構優化是網站SEO過程中不可缺少的環節,在網站建設的初期就要做好設置工作。網站內部結構的優化主要包括:網站結構、頁面元素、后期優化等,下面就從這幾個方面為大家講解,希望能給一些不了解的朋友提供實質性的指導作用。

            1、結構目錄

      目錄的設計是網站建設中很關鍵的環節,是一個網站的骨架,所以網站目錄直接關系到用戶的體驗。建議:目錄的組織結構從首頁到內容頁點擊不超過三次,也就是三級:首頁-欄目頁-內容頁。目錄名可采用網站的一些核心產品詞。

      2、鏈接

      我們說一個網站的優化最重要的兩點是什么?對,是鏈接和關鍵詞。如果說目錄是一個網站的骨架,那么鏈接就是網站的血液。建議:網站鏈接的設置以英文形式展現,簡短易懂,使用靜態化URL,迎合搜索引擎的喜好,更好的服務于網站優化。

      3、robots協議

      robots.txt相當于網站的一張臉,一張接客的臉,接的搜索引擎的蜘蛛(或機器人、爬蟲)。它是一種抓取協議文件,用于告訴搜索引擎spider,此網站中的哪些內容是不應被搜索引擎的索引,哪些是可以被索引的。

      現在很多地方都有自動生成工具,百度站長工具,或者一些插件等,根據自己的喜好選擇使用。這里有一個小技巧,將網站的地圖鏈接放置在robots內,對網站的收錄絕對是不小的幫助。具體方法:在最后一行增加 Sitemap:http://www.example.com/sitemap.xml。

      4、Sitemaps

      Sitemaps就是一個管家,總結統計網站的數據鏈接,將匯總的結果更好的展現給網站的客人-搜索引擎spider。

      Sitemaps一般有html與XML兩種格式。目前百度、Google、雅虎、微軟等搜索引擎都支持Sitemaps,Sitemaps的提交可以通過各個搜索引擎的站長平臺提交,也可以將其地址放在robots.txt文件里,上面已經說過了。

      5、404頁面

        404頁面是客戶端在瀏覽網頁時,服務器無法正常提供信息,或是服務器無法回應,且不知道原因所返回的頁面。據說在第三次科技革命之前,互聯網的形態就是一個大型的中央數據庫,這個數據庫就設置在404房間里面。那時候所有的請求都是由人工手動完成的,如果在數據庫中沒有找到請求者所需要的文件,或者由于請求者寫錯了文件編號,用戶就會得到一個返回信息:room 404 : file not found。404錯誤信息通常是在目標頁面被更改或移除,或客戶端輸入頁面地址錯誤后顯示的頁面,人們也就習慣了用404作為服務器未找到文件的錯誤代碼了。當然實際考證傳說中的room 404是不存在的,在http請求3位的返回碼中,4開頭的代表客戶錯誤,5開頭代表服務器端錯誤。

      6、nofollow標簽

      nofollow標簽是盡量減少垃圾鏈接對搜索引擎的影響,當超鏈接中出現nofollow標簽后,搜索引擎會不考慮這些鏈接的權重,也不用使用這些鏈接用于排名。

      nofollow標簽通常有兩種使用方法:一種方法是將"nofollow"寫在網頁上的meta標簽上,例如:。另一種方法是將"nofollow"放在超鏈接中,例如: 。

      需要注意的是,如果一個網站鏈向了某些被搜索引擎認為是垃圾網站的地址,那么這個網站的權重也會受到影響。因此對于一個網站來說,nofollow標簽的使用十分必要。

      7、統計代碼

      網站統計分析工具應該是每一位站長都了解的,現在常用的就是百度統計、cnzz、谷歌分析、51等,具體的就不做介紹了。網站統計代碼添加時,為了不 影響網站的加載速度,最好放在網站底部。

            相關拓展:關鍵詞的爬行和抓取

             搜索引擎派出一個能夠在網上發現新網頁并抓文件的程序,這個程序通常稱之為蜘蛛。搜索引擎從已知的數據庫出發,就像正常用戶的瀏覽器一樣訪問這些網頁并抓取文件。搜索引擎會跟蹤網頁中的鏈接,訪問更多的網頁,這個過程就叫爬行。這些新的網址會被存入數據庫等待抓取。所以跟蹤網頁鏈接是搜索引擎蜘蛛發現新網址的最基本的方法,所以反向鏈接成為搜索引擎優化的最基本因素之一。沒有反向鏈接,搜索引擎連頁面都發現不了,就更談不上排名了。

             搜索引擎抓取的頁面文件與用戶瀏覽器得到的完全一樣,抓取的文件存入數據庫。

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

      如何搞定響應式網頁的布局設計?

      seo達人

      如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

      編者按:作為今年大熱的設計趨勢,響應式已然是設計師的標配技能。今天阿里的同學從響應式設計的布局類型、布局實現兩方面深入講解,有哪些實現布局的方式,該采用何種方式,都有相當專業細致的解答,不多說,來收 >>>

      Heyuchan :在談響應式布局前,我們先梳理下網頁設計中整體頁面排版布局,常見的主要有如下幾種類型:

      布局類型


      640?wx_fmt=png&wxfrom=5&wx_lazy=1

      布局實現


      采用何種方式實現布局設計,也有不同的方式,這里基于頁面的實現單位而言,分為四種類型:固定布局、可切換的固定布局、彈性布局、混合布局。

      ?固定布局:以像素作為頁面的基本單位,不管設備屏幕及瀏覽器寬度,只設計一套尺寸;


      ?可切換的固定布局:同樣以像素作為頁面單位,參考主流設備尺寸,設計幾套不同寬度的布局。通過設別的屏幕尺寸或瀏覽器寬度,選擇最合適的那套寬度布局;


      ?彈性布局:以百分比作為頁面的基本單位,可以適應一定范圍內所有尺寸的設備屏幕及瀏覽器寬度,并能完美利用有效空間展現最佳效果;


      ?混合布局:同彈性布局類似,可以適應一定范圍內所有尺寸的設備屏幕及瀏覽器寬度,并能完美利用有效空間展現最佳效果;只是混合像素、和百分比兩種單位作為頁面單位。


      640?wx_fmt=png

      可切換的固定布局、彈性布局、混合布局都是目前可被采用的響應式布局方式。

      其中可切換的固定布局的實現成本,但拓展性比較差;而彈性布局與混合布局效果具響應性,都是比較理想的響應式布局實現方式。

      只是對于不同類型的頁面排版布局實現響應式設計,需要采用不用的實現方式。通欄、等分結構的適合采用彈性布局方式、而對于非等分的多欄結構往往需要采用混合布局的實現方式。

      640?wx_fmt=png

      布局響應 對頁面進行響應式的設計實現,需要對相同內容進行不同寬度的布局設計,有兩種方式:

      桌面優先(從桌面端開始向下設計);

      移動優先(從移動端向上設計);

       無論基于那種模式的設計,要兼容所有設備,布局響應時不可避免地需要對模塊布局做一些變化(發生布局改變的臨界點稱之為斷點), 我們通過JS獲取設備的屏幕寬度,來改變網頁的布局,這一過程我們可以稱之為布局響應屏幕。

      常見的主要有如下幾種方式:

      布局不變,即頁面中整體模塊布局不發生變化,主要有:

      ?模塊中內容:擠壓-拉伸;

      ?模塊中內容:換行-平鋪;

      ?模塊中內容:刪減-增加;

      640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png

      布局改變,即頁面中的整體模塊布局發生變化,主要有:

      ?模塊位置變換;

      ?模塊展示方式改變:隱藏-展開;

      ?模塊數量改變:刪減-增加;

      640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png

      很多時候,單一方式的布局響應無法滿足理想效果,需要結合多種組合方式,但原則上盡可能時保持簡單輕巧,而且同一斷點內(發生布局改變的臨界點稱之為斷點)保持統一邏輯。

      否則頁面實現得太過復雜,也會影響整體體驗和頁面性能。

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

      LOGO UI設計7大要點

      藍藍設計的小編

      大部分視覺設計師在工作中都會遇到logo UI設計,每個UI設計師都有自己獨特的思路和方法。在設計過程中有理性的方法也有感性的發揮,我接下來講的理性的部分比較多,因為感性的東西跟個人平時的積累、經驗、生活閱歷等等相關。不是什么大神,寫的都是自己慢慢沉淀下來的方式方法。Logo的意義和重要性,在這不再贅述,我主要講logo設計的每個階段個人覺得比較重要的幾點。

      國外非常高端的UI界面設計,UI設計小白須學

      藍藍設計的小編

      國外非常高端的UI界面設計,UI設計小白須學

      ES6(一):Promise對象

      seo達人

      如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

      介紹Promise

      promise的概念和實現最初來源于社區,用于解決異步編程的回調嵌套問題,即將多級的嵌套改良成順序的代碼行。ES6將其寫入了語言標準,統一了用法,提供了原生的Promise。

      Promise是一個構造函數,用于生成一個Promise實例。Promise實例代表一次異步操作。 它只可能有3種轉態,分別是Pending(未決議)Resolved(完成) 和 Rejected(出錯) 。

      創建一個Promise實例時,其處于Pending狀態,當異步操作完成,執行回調函數的時候,根據回調函數中的err的值,如果err 為空則異步操作成功,否則異步操作失敗。此后,Promise實例的狀態將不再改變。

      Promise實例

      var pro = function () { return new Promise(function(resolve, reject) { fs.readdir(_dirname, function(err, data) { if (err) {
                      reject(err); //失敗則將Promise對象置為rejected狀態 } else {
                      resolve(data); //成功則將Promise對象置為resolved轉態 }
              });
          });
      } /*pro是一個函數
       調用該函數返回一個Promise實例
      */ var promiseObject = pro(); /*then方法執行Resolved和Rejected狀態的回調函數*/ promiseObject
      .then(doneCallbacks, failCallbacks)
      .catch(function(err) { console.log(err);
      }); var doneCallbacks = function(data) { console.log(data);
      }; var failCallbacks = function(err) { console.log(err)
      };
          
      • 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

      catch是then的一個語法糖,相當于

      promiseObject.then(undefined, function(err) {
          console.log(err)
      });
          
      • 1
      • 2
      • 3

      Promise對象的錯誤具有向后傳遞的性質,因此,如果在調用過程拋出異常,則異常總能被最后一個catch捕獲。這也是為什么我們習慣在then的調用后跟隨一個catch調用。

      then的鏈式寫法

      then 方法是定義在構造函數Promise 的原型對象上的。這個方法為Promise實例添加狀態改變時的回調函數。then方法返回一個新的Promise實例,因此then方法后面可以調用then()方法。傳給then()方法的函數,可返回三類值,分別如下:

      • 一個Promise實例
      • 一個普通值
      • 拋出一個異常

      如果返回的是一個新的Promise對象,則下一級的then接收函數在這個Promise實例 狀態發生改變時被觸發執行。因此,then的鏈式寫法,可以按順序執行一系列的異步操作,并且后一個異步操作在前一個完成之后開始。如下代碼實例所示:

      var fs = require('fs'); var pro = function () { return new Promise(function(resolve, reject) { fs.readdir(_dirname, function(err, data) { if (err) {
                      reject(err); //失敗則將Promise對象置為rejected狀態 } else {
                      resolve(data); //成功則將Promise對象置為resolved轉態 }
              });
          });
      } var newPro = function(data) { return new Promise(function(resolve, reject) { setTimeout(function(){ resolve(data);
              },2000);
          });
      }; /*pro是一個函數
       調用該函數返回一個Promise實例
      */ var promiseObject = pro(); /*then方法執行Resolved和Rejected狀態的回調函數*/ promiseObject
          .then(function(data){ console.log("fisrt sync op");
              console.log(data); return newPro(data);//返回一個新的Promise對象 })
          .then(function(data) { console.log("second sync op");
              console.log(data);//兩秒鐘后才會被執行 })
          .catch(function(err) { console.log(err);
          });
      
      promiseObject.then(undefined, function(err) { console.log(err)
      }); var doneCallbacks = function(data) { console.log(data);
      }; var failCallbacks = function(err) { console.log(err)
      }; 
          
      • 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
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53

      把上一級異步調用的結果返回給下一級調用,then這樣的鏈式寫法,解決了回調函數的多層嵌套調用。

      解決異步嵌套回調的更多方案

      “回調金字塔”

      多層嵌套

      bluebird庫 + Generator

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


      UI設計的工作范疇有哪些?UI設計是做什么的?

      藍藍設計的小編

      當我還是一枚單純的p圖師的時候,誰要是叫我美工,我是拒絕的!我跟他們講,我是設計師,是能duang的一下就加的設計師。突然有一天,有人問起我什么是UI,作為一枚經歷了歲月沉淪能寫點代碼能P圖的大美工(此刻我已經不拒絕美工的稱呼了,因為要做到好看真的不那么簡單)我告訴他,我就是,然而他不信,他覺得UI設計師該是高大上的,是美工需要仰視的!

      Android沉浸式狀態欄

      seo達人

      如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

      隨著越來越的的app使用沉浸式狀態欄,有必要對沉浸式狀態欄學習一下,查看了很多資料,沉浸式狀態欄重要的無法三點:1.實現全屏 (Android4.4跟5.0全屏處理方式有別需分開處理 )2.設置全屏之后為了保證自己寫的布局不與狀態欄重疊,需要在跟xml的跟布局設置android:fitsSystemWindows=”true” 。基于這幾點處理方式可能很多,但是為了便于項目中工具類封裝,本編實現方式均已代碼方式呈現,xml設置方式可以自行查閱相關資料 3.改變狀態欄顏色

      —1.全屏設置 
      對于4.4以上系統,因4.4以上系統是可以設置全屏,代碼如下:

      window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 
      
      • 1
      • 2

      對于5.0系統 具體代碼

      window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS|WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
      
      • 1
      • 2
      • 3
      • 4
      • 5

      僅僅做全屏處理,我們會發現不管是在4.4系統上還是在5.0系統上,我們的布局內容會與狀態欄內容出現重疊。

      下圖為4.4系統 
      這里寫圖片描述

      下圖為8.0系統 
      這里寫圖片描述

      為了解決全屏設置重疊狀態欄,我們需要在全屏之上預留狀態欄的高度以便正常顯示狀態欄,而處理方式也很簡單 activity layout根目錄添加下面代碼 
      android:fitsSystemWindows=”true” 而此處我建議用代碼設置,因為通常我們項目中會提取BaseActivity基類抽出一些共性,這種方式比在每個xml中設置屬性更方便 
      rootView.setFitsSystemWindows(true) 此處的rootView指的就是activity對應的跟布局; 
      進行以上處理之后我們會發現現在狀態欄跟我們的布局內容不再重疊了,接下來我們就只需要處理狀態欄的顏色問題了。具體代碼如下

      ViewGroup content= (ViewGroup) findViewById(android.R.id.content); ViewGroup childView= (ViewGroup) content.getChildAt(0); if(childView!=null){
                      childView.setFitsSystemWindows(true); } 
      
      • 1
      • 2
      • 3
      • 4
      • 5

      對于4.4系統因為沒有改變狀態欄顏色的api,我們可以通過添加一個與狀態欄等高的View到根布局的父容器中,而根布局的父容器就是一個ID為android.R.id.content的幀布局被裝飾的容器中,這樣只需要設置View的顏色即可。對于5.0及以上系統,因已提供設置狀態欄和導航欄顏色的api,直接設置即可; 
      對于4.4以上5.0一下系統

      View view=new View(this); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,getStatusHeight())); view.setBackgroundColor(Color.RED); content.addView(view); 
      
      • 1
      • 2
      • 3
      • 4

      對于5.0及以上系統

      window.setStatusBarColor(Color.RED); 
      
      • 1

      獲取狀態欄高度

       private int getStatusHeight() { int statusHeight=-1; int resourceId=getResources().getIdentifier("status_bar_height","dimen","android"); if(resourceId>0){ return getResources().getDimensionPixelSize(resourceId);
              } return 0;
          } 
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      以上就是實現沉浸式狀態欄的具體過程。整體代碼如下:

      package com.example.administrator.myjavadeamo.activity; import android.graphics.Color; import android.os.Build; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import com.example.administrator.myjavadeamo.R; public class StatusBarActivity extends AppCompatActivity {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//隱藏標題欄 setContentView(R.layout.activity_status_bar); initWindow(); }
      
          private void initWindow() {
              Window window=getWindow(); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
                  //5.0以上的手機
                  window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS|WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); ViewGroup content= (ViewGroup) findViewById(android.R.id.content); ViewGroup childView= (ViewGroup) content.getChildAt(0); if(childView!=null){
                      childView.setFitsSystemWindows(true); }
                  window.setStatusBarColor(Color.GREEN); }else if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){
                  //4.4以上5.0一下的手機
                  window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); ViewGroup content= (ViewGroup) findViewById(android.R.id.content); ViewGroup childView= (ViewGroup) content.getChildAt(0); if(childView!=null){
                      childView.setFitsSystemWindows(true); }
      
                  View view=new View(this); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,getStatusHeight())); view.setBackgroundColor(Color.GREEN); content.addView(view); }
          } /**
           * 獲取狀態欄高度
           * @return
           */ private int getStatusHeight() {
              int statusHeight=-1; int resourceId=getResources().getIdentifier("status_bar_height","dimen","android"); if(resourceId>0){
                 return getResources().getDimensionPixelSize(resourceId); }
              return 0; }
      }  
      
      • 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
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      • 61
      • 62
      • 63
      • 64
      • 65
      • 66
      • 67

      最終實現結果:

      4.4系統 
      4.4以上5.0一下系統 
      8.0系統

      5.0以上系統

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

      大屏時代,如何做好電視端交互設計?

      藍藍設計的小編

      如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里


      在前不久,藍藍參觀了中國國際廣播展覽會,這個中國廣電大伽云集的展會上,許多企業都在播放智能電視端,我拍了一些,做為以后設計的參考,同時也在收集大屏電視設計的資料。

      以下為藍藍設計收集的文章之一,這篇文章的好處是總結了硬件交互的特點和各種電視上常見的表現方式,并配以圖片說明,雖然對于專業的設計師而言,tab/磁貼/列表/滑動換換幻燈片式等都是常見的方式,本能直觀就會做出選擇,也不會僅限于此,但對非從業者來講,這樣列有概括啟蒙的作用,各個例子取的很全。



      硬件+遠距離操控——基本交互 -


      基于桌面資料研究以及設計經驗,總結了基本交互主要包含以下幾個關鍵內容:遙控器輸入、導航和菜單、信息展現、控件擺放和焦點狀態。


      一 、遙控器輸入


      當我們用手指快速便捷地在手機屏幕上點擊或滑動時,主流電視大屏及應用的操作還是:使用遙控器進行操作。而市面上不同電視生產商生產的遙控器也有著不同的造型和按鍵數量,如圖1,分別展示了:蘋果、谷歌、小米、樂視和中興機頂盒的遙控器。

      1.jpg


      圖1 不同廠商的遙控器

       

      盡管有著千奇百怪的造型和按鍵數量,但幾乎全部的遙控器都有幾個相同的按鍵:上、下、左、右、返回鍵和OK鍵,如圖2。它們也夠成了遙控器輸入的基本交互方式:通過“上下左右鍵”移動焦點位置,選中界面元素,按“OK鍵”進行相關操作,按“返回鍵”返回。


      2.jpg
      圖2 遙控器的基本按鍵


      而上圖中還有一些按鍵,如數字鍵、菜單鍵,有些遙控器是沒有它們的。這里強調下“菜單鍵”,比如之前的一個設計,將不常用的操作隱藏到菜單鍵中,當用戶按菜單鍵時再喚出操作(如安卓端的“長按”,iOS端的“左滑”等)。后來,才發現并不是所有遙控器都有該按鍵,只能在后續版本中迭代優化。因此,在設計之前,不妨研究一下你的輸入硬件設備,避免因“刻板印象”造成不必要的坑。


      遙控器輸入的特性決定了用戶在輸入時的效率和便捷程度都大打折扣,因此,在這樣的局限下,設計師只能通過各種不同的方式來盡量減弱這種不便捷:


      1. 減少用戶輸入

      能不讓用戶輸入就不輸入,盡量只讓用戶去做“選擇型”輸入,避免大量“文字型”輸入,比如電視上的搜索功能中,及時聯想、熱搜詞就變得極為重要,如圖3右圖所示。

      3.jpg


      圖3 鍵盤輸入的優化


      2. 優化輸入模式

      結合項目情況,去嘗試優化輸入模式,比如充分利用遙控器數字鍵輸入、重新設計鍵盤以減少用戶操作,如圖3所示。


      3. 將輸入轉移

      越來越多的產品開始將一些輸入轉移并引導到手機端進行操作,甚至將手機端直接做為遙控器,比如最常見的掃碼登錄和TV助手類APP。輸入轉移能大大提升用戶操作效率,但設計時還是要結合具體場景,避免用戶過多地在手機和遙控器間切換。


      4. 創新的輸入方式

      隨著各種技術的發展,在未來,電視端也會有越來越多的輸入方式,而不僅限于遙控器輸入,如智能語音輸入,而我們也需要了解這些新技術,才能幫助我們不斷的創新并給用戶帶來優秀的體驗。


      二、導航和菜單


      電視端的導航和菜單大多數和手機端、PC端是類似的,但因遙控器輸入的特性或多或少的有些差異,主要分為以下幾類:


      1. 十字

      十字導航在國內的產品中比較少見,但因它的主導航和二級導航同時展開,能與十字方向鍵完美契合,用戶可通過方向鍵在主導航和二級導航之間以最的方式切換,如圖4所示。但它最多展現2級菜單,即縱向菜單和橫向菜單,又浪費了大量界面空白,因此針對國內大而全的產品而言,往往不是特別適用。


      4.jpg

      圖4 十字導航


      2. 磁貼

      磁貼廣泛應用于各種電視應用產品,一般包含主導航和二級磁貼,往往二級磁貼的展現能使信息更加扁平、直觀及可視化,且相比于十字導航,操作的方向不會受到限制;但往往焦點從磁貼移回到左側/上側導航需要更多的操作成本,如圖5所示。磁貼的信息展現能夠充分利用界面空間,并把信息前置,因此,對很多內容型產品而言,磁貼可以很好的適用內容露出,吸引用戶進入。


      5.jpg
      圖5 磁貼信息展示


      3. Tab

      廣泛應用于手機端和PC端,當然在電視端中也經常使用,往往起到一級導航的作用,在告知用戶所處位置的同時,很好的引導用戶進行模塊間的切換,如圖6所示。然而,Tab導航也有一些基本的設計要求,比如盡量不使用多層Tab套用,即使不得已套用也需盡量保證表現形式不同;另外,在“焦點”的章節,也還會提到Tab切換時的加載問題。


      6.jpg
      圖6 Tab導航


      4. 列表

      列表也是手機端最常用的菜單展現形式,在電視端同樣適用,如電視直播類產品,主功能就利用了多層列表套用的展現形式,詳見圖7所示。而在電視端,列表的樣式也是多種多樣的:如純文字列表(可配按鈕)、圖文列表(可配按鈕)、展示型列表(不可操作)、橫向列表(選集列表)等。


      7.jpg

      圖7 圖文列表和展示型列表


      5. 其他

      電視產品上最常用的菜單和導航模式一般都可以總結為以上4種,當然還有一些其他的方式。隨著用戶多設備的使用,越來越多的手機端和PC端的設計模式開始在電視上出現;而更多的產品界面因其復雜的功能無法只使用1種菜單和導航模式,往往是混合型設計,如圖8所示。不過,無論使用何種導航和菜單類型,電視大屏幕的菜單和導航的設計目標終歸是:用戶可以快速定位,并且能夠預測出操作結果。因此,靈活使用導航和菜單,使用戶不會迷失在功能繁多的界面信息中就尤為重要。


      8.jpg
      圖8 其他類型的導航和菜單


      三、信息展現


      在前面的文字中,我在“電視”這個詞后面都緊跟了“大屏”這個詞,電視的屏幕是比PC還要大的屏幕;而用戶也因為如此大的屏幕,往往是坐在兩三米之外。因此,電視端的信息設計有著兩個顯著的特質:為大屏幕而設計和為遠距離而設計,有著以下幾個注意事項:


      1. 重視信息的識別性和簡潔易懂

      文字、圖標和按鈕,乃至toast提示,在電視端的識別性問題比手機和PC端更為凸顯。因為遠距離、大屏幕,加上電視本身的休閑屬性,使得用戶的注意力較為分散,因此,界面中的信息和元素就需要適當放大,至少保證用戶能夠在兩三米之外能清晰看到,如圖9所示。


      9.jpg
      圖9 信息識別案例


      2. 提前露出信息和多露出點信息

      在“遙控器輸入”章節中有提到,提前露出信息能夠在一定程度上減少用戶輸入,并在產品層面吸引用戶進入。不過,和手機端設計類似,還是需要甄別哪些信息需要提前露出、怎么露出以及露出信息后對產品穩定性和性能的影響;這些都需要基于產品特點,并與產品、視覺和開發共同協商確定。而“多露出點信息”卻相對容易理解,主要是告知用戶右邊/下邊“還有一些內容,快去看看”,如圖10所示。


      10.jpg
      圖10 信息露出案例


      3. 避免過多無模塊信息的展示

      相比于手機端,因屏幕較大,與PC端類似,往往需將屏幕劃分為多個排列整齊的小屏幕來進行設計,即模塊化、區域化的設計信息展現。通過這種方式,可以使信息布局更為規整,用戶不容易迷失在繁雜的信息中,如圖11所示。


      11.jpg
      圖11 信息模塊化案例


      四、控件位置


      控件的位置問題是初期開始電視產品設計時非常容易犯的錯誤,如圖12所示。左圖中的“添加股票”按鈕,當已添加的股票過多時,可能會看不到該按鈕,或需用戶按很多下才能使焦點移動到“添加股票”;右圖中的文字瀏覽,完全不知道如何瀏覽,也不知道如何將焦點從文字移動到“查看票種”按鈕。這兩個案例闡述了:按鈕的位置導致按鈕丟失或操作效率較低;電視端文字閱讀也得遵守焦點瀏覽原則,如每行1個焦點或整篇1個焦點,若是后者,就得保證可見范圍內文字已展示全。因此,在電視大屏中放置交互控件,需充分考慮是否符合電視端的使用方式以及用戶的操作效率。


      12.jpg
      圖12 控件位置案例


      五、焦點狀態


      前文提到過很多次的“焦點”,它其實是電視大屏用戶體驗的第一要素,而在交互說明中最常出現的也是“焦點怎么樣了”。無論是交互還是視覺,在初期接觸電視產品設計時,可能都會因為“焦點”的設計失誤引發用戶體驗問題,比如:焦點的移動順序不一致(從哪里來未回到哪里去,焦點在界面中亂跳)使用戶認知錯亂;焦點的不夠醒目或樣式不統一使用戶無法找到焦點等,如圖13所示。


      13.jpg
      圖13 不統一的焦點樣式


      電視端焦點也是有著各種不同的狀態的,如圖14所示,“焦點狀態”一般采用“描邊、放大、高亮等”方式使其明顯,而“按下狀態”可能不一定有,或者是和其他幾個狀態相同。


      14.jpg
      圖14 焦點狀態種類


      可能需要簡單講述一下“標記狀態”和“半選中狀態”:“標記狀態”在PC和手機端也非常常見,比如告知用戶所在位置在哪里的Tab標記;而“半選中狀態”是“焦點狀態”的一種情況,即移動到某個焦點后,不進行加載或觸發操作,需按“OK鍵”才觸發,如圖15所示。這種狀態在早期電視盒子性能不足、在Tab切換時經常需要使用,因為如果直接切換焦點時就加載,可能會造成卡頓。

      屏幕快照 2018-03-28 上午9.34.42.png


      圖15 標記狀態和半選中狀態案例


      六、結語


      我總結和歸納的這些基本知識和注意事項,雖然它們能夠幫助我們快速了解電視大屏的基本交互知識,避免一些不必要的坑;但還遠遠不夠,更多的是需要在實際參與項目中快速學習、快速應用,因此,之后我將會基于我參與的項目再次進行電視大屏的實戰總結,歡迎下次再與大家一同交流和成長。


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

      日歷

      鏈接

      個人資料

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

      存檔

      主站蜘蛛池模板: 无码爽视频| AV影音先锋在线| 最新青青草成人免费视频在线精品视频| 久久麻豆精亚洲av品国产| 欧美变态口味重另类在线视频| 99精品久久精品| 亚洲日本va中文字幕亚洲| 欧美日韩三级在线观看| 理塘县| 夂久亚州精华国产精华华液| 99久久久无码国产精品性| 中文字幕乱码亚洲无线码三区| 亚洲无码 视频一区| 日日碰狠狠添天天爽五月婷| 亚洲无码三级片中文字幕| 国产羞羞的视频在线观看| 欧美乱码精品一区二区三区卡| 色妞www精品视频| 国产精品视频99r| 西林县| 97SE亚洲国产综合在线| 精品无码中文字幕在线| 久久婷婷大香萑太香蕉AV人| 精品国产乱一区二区三区| 在线午夜精品自拍小视频| 国产成人精品亚洲日本语言| 亚洲夂夂婷婷色拍ww47| 无码人妻斩一区二区三区| 99久久伊人精品综合观看| 五月天激情国产综合婷婷婷| 日韩大片高清播放器| 一级一片免费观看| 亚洲午夜久久久无码精品网红A片| 香港aa三级久久三级不卡 | 国产揄拍国内精品对白| 91精品国产福利尤物| 911国产自产精品al| 日本老肥婆bbbwbbbwzr| 公和我做好爽添厨房在线观看| 亚洲无码无线在线观看| 国产成人综合在线95精品|