<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>

          首頁

          【css】背景顏色漸變,文字顏色漸變,邊框顏色漸變

          seo達人

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

          前言:css3的出現使得我們可以通過前端技術,讓網頁內容變得更豐富,更華麗。今天來玩玩好玩的顏色漸變。

          一、背景顏色漸變。

          [html] view plain copy
          1. <body>  
          2. <style>  
          3. .content { width:300px; height:100px; line-height:100px; text-align:center; font-size:32px; font-weight:bold;  
          4. background-image:-webkit-linear-gradient(left, red 0%, blue 30%, yellow 60%, green 90%);   
          5. }  
          6. </style>  
          7. <div class="content">淺色夏沫,夏末微涼</div>  
          8. </body>  

          運行效果


          二、文字顏色漸變。

          [html] view plain copy
          1. <body>  
          2. <style>  
          3. .content { width:300px; height:100px; line-height:100px; text-align:center; font-size:32px; font-weight:bold;  
          4. background-image:-webkit-linear-gradient(left, red 0%, blue 30%, yellow 60%, green 90%);   
          5. -webkit-background-clip:text; -webkit-text-fill-color:transparent; }  
          6. </style>  
          7. <div class="content">淺色夏沫,夏末微涼</div>  
          8. </body>  

          運行效果


          三、邊框顏色漸變。

          [html] view plain copy
          1. <body>  
          2. <style>  
          3. .content { width:300px; height:100px; line-height:100px; text-align:center; font-size:32px; font-weight:bold;   
          4. border:10px solid;  
          5. border-image:-webkit-linear-gradient(left, red 0%, blue 30%, yellow 60%, green 90%) 10; }  
          6. </style>  
          7. <div class="content">淺色夏沫,夏末微涼</div>  
          8. </body>   

          運行效果

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


          10種最常見的Javascript錯誤

          周周

          以下是 JavaScript 錯誤 Top 10:

            3a8ccf12-f663-38d7-bca8-6178415d9875.png

                 為了便于閱讀,我們將每個錯誤描述都縮短了。接下來,讓我們深入到每一個錯誤,來確定什么會導致它,以及如何避免創建它。 
          1. Uncaught TypeError: Cannot read property 
                  如果你是一個 JavaScript 開發人員,可能你看到這個錯誤的次數比你敢承認的要多(LOL…)。當你讀取一個未定義的對象的屬性或調用其方法時,這個錯誤會在 Chrome 中出現。 您可以很容易的在 Chrome 開發者控制臺中進行測試(嘗試)。

                 發生這種情況的原因很多,但常見的一種是在渲染 UI 組件時對于狀態的初始化操作不當。
                  我們來看一個在真實應用程序中發生的例子:我們選擇 React,但該情況也同樣適用于 Angular、Vue 或任何其他框架。

          Javascript代碼  

          class Quiz extends Component {
            componentWillMount() {
              axios.get('/thedata').then(res => {
                this.setState({items: res.data});
              });
            }
            render() {
              return (
                <ul>
                  {this.state.items.map(item =>
                    <li key={item.id}>{item.name}</li>
                  )}
                </ul>
              );
            }
          }
          這里有兩件重要的事情要實現:

          • 組件的狀態(例如 this.state)從 undefined 開始。
          • 當異步獲取數據時,不管它是在構造函數componentWillMount還是componentDidMount中獲取的,組件在數據加載之前至少會呈現一次,當 Quiz 第一次呈現時,this.state.items 是未定義的。 這又意味著 ItemList 將 items 定義為 undefined,并且在控制臺中出現錯誤 - “Uncaught TypeError: Cannot read property ‘map’ of undefined”。

                 這很容易解決。最簡單的方法:在構造函數中用合理的默認值來初始化 state。

          Javascript代碼


          class Quiz extends Component {
            // Added this:
            constructor(props) {
              super(props);
              // Assign state itself, and a default value for items
              this.state = {
                items: []
              };
            }
            componentWillMount() {
              axios.get('/thedata').then(res => {
                this.setState({items: res.data});
              });
            }
            render() {
              return (
                <ul>
                  {this.state.items.map(item =>
                    <li key={item.id}>{item.name}</li>
                  )}
                </ul>
              );
            }
          }

                 在你的應用程序中的具體代碼可能是不同的,但我們希望我們已經給你足夠的線索,以解決或避免在你的應用程序中出現的這個問題。如果還沒有,請繼續閱讀,因為我們將在下面覆蓋更多相關錯誤的示例。
                  2. TypeError: ‘undefined’ is not an object
                  這是在 Safari 中讀取屬性或調用未定義對象上的方法時發生的錯誤。您可以在 Safari Developer Console 中輕松測 試。這與 1 中提到的 Chrome 的錯誤基本相同,但 Safari 使用了不同的錯誤消息提示語。

                3.TypeError: null is not an object
                  這是在 Safari 中讀取屬性或調用空對象上的方法時發生的錯誤。 您可以在 Safari Developer Console 中輕松測試。

          有趣的是,在 JavaScript 中,null 和 undefined 是不一樣的,這就是為什么我們看到兩個不同的錯誤信息。undefined 通常是一個尚未分配的變量,而 null 表示該值為空。 要驗證它們不相等,請嘗試使用嚴格的相等運算符 ===:  

                 在現實世界的例子中,這種錯誤可能發生的一種場景是:如果在加載元素之前嘗試在 JavaScript 中使用元素。 因為 DOM API 對于空白的對象引用返回值為 null。
                  任何執行和處理 DOM 元素的 JS 代碼都應該在創建 DOM 元素之后執行。 JS 代碼按照 HTML 中的規定從上到下進行解釋。 所以,如果 DOM 元素之前有一個標簽,腳本標簽內的 JS 代碼將在瀏覽器解析 HTML 頁面時執行。 如果在加載腳本之前尚未創建 DOM 元素,則會出現此錯誤。
                  在這個例子中,我們可以通過添加一個事件監聽器來解決這個問題,這個監聽器會在頁面準備好的時候通知我們。 一旦 addEventListener被觸發,init() 方法就可以使用 DOM 元素。

          Html代碼

          <script>
            function init() {
              var myButton = document.getElementById("myButton");
              var myTextfield = document.getElementById("myTextfield");
              myButton.onclick = function() {
                var userName = myTextfield.value;
              }
            }
            document.addEventListener('readystatechange', function() {
              if (document.readyState === "complete") {
                init();
              }
            });
          </script>
          <form>
            <input type="text" id="myTextfield" placeholder="Type your name" />
            <input type="button" id="myButton" value="Go" />
          </form>

          4. (unknown): Script error 
                 當未捕獲的 JavaScript 錯誤(通過window.onerror處理程序引發的錯誤,而不是捕獲在try-catch中)被瀏覽器的跨域策略限制時,會產生這類的腳本錯誤。 例如,如果您將您的 JavaScript 代碼托管在 CDN 上,則任何未被捕獲的錯誤將被報告為“腳本錯誤” 而不是包含有用的堆棧信息。這是一種瀏覽器安全措施,旨在防止跨域傳遞數據,否則將不允許進行通信。 
                  要獲得真正的錯誤消息,請執行以下操作: 
                  1. 發送 ‘Access-Control-Allow-Origin’ 頭部 
                  將 Access-Control-Allow-Origin 標頭設置為 * 表示可以從任何域正確訪問資源。 如有必要,您可以將域替換為您的域:例如,Access-Control-Allow-Origin:www.example.com。 但是,處理多個域會變得棘手,如果你使用 CDN,可能由此產生更多的緩存問題會讓你感覺到這種努力并不值得。 在這里看到更多。 
                   這里有一些關于如何在各種環境中設置這個頭文件的例子: 
                   在 JavaScript 文件所在的文件夾中,使用以下內容創建一個 .htaccess 文件:
          代碼

                 Header add Access-Control-Allow-Origin "*"  

                 將 add_header 指令添加到提供 JavaScript 文件的位置塊中:
          代碼

                 location ~ ^/assets/ {  add_header Access-Control-Allow-Origin *;  }  

                  將以下內容添加到您為 JavaScript 文件提供資源服務的后端: 

          代碼 

                  rspadd Access-Control-Allow-Origin:\ *  

                  在 <script> 中設置 crossorigin="anonymous"

          在您的 HTML 代碼中,對于您設置了Access-Control-Allow-Origin header 的每個腳本,在 script 標簽上設置crossorigin =“anonymous”。在腳本標記中添加 crossorigin 屬性之前,請確保驗證上述 header 正確發送。 在Firefox 中,如果存在crossorigin屬性,但Access-Control-Allow-Origin頭不存在,則腳本將不會執行。 

          5. TypeError: Object doesn’t support property

                 這是您在調用未定義的方法時發生在 IE 中的錯誤。 您可以在 IE 開發者控制臺中進行測試。

          fcb1e309-0293-3836-a8e5-e6e361a28add.png

                 這相當于 Chrome 中的 “TypeError:”undefined“ is not a function” 錯誤。 是的,對于相同的邏輯錯誤,不同的瀏覽器可能具有不同的錯誤消息。 
                  對于使用 JavaScript 命名空間的 Web 應用程序,這是一個 IE l瀏覽器的常見的問題。 在這種情況下,99.9% 的原因是 IE 無法將當前名稱空間內的方法綁定到 this 關鍵字。 例如:如果你 JS 中有一個命名空間 Rollbar 以及方法 isAwesome 。 通常,如果您在 Rollbar 命名空間內,則可以使用以下語法調用isAwesome方法:
          Javascript代碼 

          this.isAwesome();  

                  Chrome,Firefox 和 Opera 會欣然接受這個語法。 另一方面 IE,不會。 因此,使用 JS 命名空間時最安全的選擇是始終以實際名稱空間作為前綴。

          6. TypeError: ‘undefined’ is not a function
                  當您調用未定義的函數時,這是 Chrome 中產生的錯誤。 您可以在 Chrome 開發人員控制臺和 Mozilla Firefox 開發人員控制臺中進行測試。 63e43ce7-2048-3c44-9d80-3e8a27b71a56.png

                 隨著 JavaScript 編碼技術和設計模式在過去幾年中變得越來越復雜,回調和關閉中的自引用范圍也相應增加,這是這種/那種混淆的相當常見的來源。
                 考慮這個代碼片段:
          Javascript代碼

          function testFunction() {
            this.clearLocalStorage();
            this.timer = setTimeout(function() {
              this.clearBoard();    // what is "this"?
            }, 0);
          };

          執行上面的代碼會導致以下錯誤:“Uncaught TypeError:undefined is not a function”。 你得到上述錯誤的原因是,當你調用setTimeout()時,實際上是調用window.setTimeout()。 因此,在窗口對象的上下文中定義了一個傳遞給setTimeout()的匿名函數,該函數沒有clearBoard()方法。
          一個傳統的,舊瀏覽器兼容的解決方案是簡單地將您的 this 保存在一個變量,然后可以由閉包繼承。 例如:
          Javascript代碼 

          function testFunction () {
            this.clearLocalStorage();
            var self = this;   // save reference to 'this', while it's still this!
            this.timer = setTimeout(function(){
              self.clearBoard(); 
            }, 0);

          };

          或者,在較新的瀏覽器中,可以使用bind()方法傳遞適當的引用:
          Javascript代碼

          function testFunction () {
            this.clearLocalStorage();
            this.timer = setTimeout(this.reset.bind(this), 0);  // bind to 'this'
          };
          function testFunction(){
              this.clearBoard();    //back in the context of the right 'this'!
          };

          7. Uncaught RangeError: Maximum call stack 

                  這是 Chrome 在一些情況下會發生的錯誤。 一個是當你調用一個不終止的遞歸函數。您可以在 Chrome 開發者控制臺中進行測試。

                               5cadac78-96ee-3a2f-ad3f-493cceae8e0a.png

                此外,如果您將值傳遞給超出范圍的函數,也可能會發生這種情況。 許多函數只接受其輸入值的特定范圍的數字。 例如:Number.toExponential(digits) 和 Number.toFixed(digits) 接受 0 到 20 的數字,Number.toPrecision(digits) 接受 1 到 21 的數字。
          Javascript代碼

          var a = new Array(4294967295);  //OK
          var b = new Array(-1); //range error
          var num = 2.555555;
          document.writeln(num.toExponential(4));  //OK
          document.writeln(num.toExponential(-2)); //range error!
          num = 2.9999;
          document.writeln(num.toFixed(2));   //OK
          document.writeln(num.toFixed(25));  //range error!
          num = 2.3456;
          document.writeln(num.toPrecision(1));   //OK
          document.writeln(num.toPrecision(22));  //range error!

          8. TypeError: Cannot read property ‘length’

                  這是 Chrome 中發生的錯誤,因為讀取未定義變量的長度屬性。 您可以在 Chrome 開發者控制臺中進行測試。
                您通常會在數組中找到定義的長度,但是如果數組未初始化或者變量名稱在另一個上下文中隱藏,則可能會遇到此錯誤。讓我們用下面的例子來理解這個錯誤。
          Javascript代碼

          var testArray = ["Test"];
          function testFunction(testArray) {
              for (var i = 0; i < testArray.length; i++) {
                console.log(testArray[i]);
              }
          }
          testFunction(); 當你用參數聲明一個函數時,這些參數變成了函數作用域內的本地參數。這意味著即使你函數外有名為 testArray 的變量,在一個函數中具有相同名字的參數也會被視為本地參數。

                  您有兩種方法可以解決您的問題:
                  1. 刪除函數聲明語句中的參數(事實上你想訪問那些聲明在函數之外的變量,所以你不需要函數的參數):

          var testArray = ["Test"];
          /* Precondition: defined testArray outside of a function */
          function testFunction(/* No params */) {
              for (var i = 0; i < testArray.length; i++) {
                console.log(testArray[i]);
              }
          }
          testFunction();

                2. 用聲明的數組調用該函數:

          var testArray = ["Test"];
          function testFunction(testArray) {
             for (var i = 0; i < testArray.length; i++) {
                console.log(testArray[i]);
              }
          }
          testFunction(testArray); 9. Uncaught TypeError: Cannot set property 
                  當我們嘗試訪問一個未定義的變量時,它總是返回 undefined,我們不能獲取或設置任何未定義的屬性。 在這種情況下,應用程序將拋出 “Uncaught TypeError: Cannot set property”。 
                 如果測試對象不存在,錯誤將會拋出 “Uncaught TypeErrorUncaught TypeError: Cannot set property”。

          10. ReferenceError: event is not defined 
          當您嘗試訪問未定義的變量或超出當前范圍的變量時,會引發此錯誤。
                 如果在使用事件處理系統時遇到此錯誤,請確保使用傳入的事件對象作為參數。像 IE 這樣的舊瀏覽器提供了一個全局變量事件,但并不是所有瀏覽器都支持。像 jQuery 這樣的庫試圖規范化這種行為。盡管如此,最好使用傳入事件處理函數的函數。
          function myFunction(event) {
              event = event.which || event.keyCode;
              if(event.keyCode===13){
                 alert(event.keyCode);
              }
          }

          結論 
                  我們希望你學到了新的東西,可以避免將來的錯誤,或者本指南幫助你解決了頭痛的問題。 
                  盡管如此,即使有最佳實踐,生產中也會出現意想不到的錯誤。能夠查看影響用戶的錯誤,并擁有快速解決問題的好工具,這一點非常重要。

          信息雜亂無章?教你構建合理的視覺層次!

          資深UI設計者

          每天打開手機,各式各樣的信息紛至沓來,每個 App 每個頁面都有好多話要說。當信息匯集在一起的時候,如何能讓用戶一打開頁面就能輕松理解各個信息元素之間的關系與差異呢?這就要靠我們設計師在設計之初構建合理的視覺層次了。一個頁面的信息層級是不是清晰明了,很大程度上影響到用戶的信息獲取效率和使用體驗。

          在平面和網頁設計中,視覺層次一般分為三層:主層(Primary)、副層(Secondary)和三層(Tertiary)。其中主層一般是指頭條標題等核心信息,也是要讓用戶第一眼就注意到的信息。副層可以是小標題等信息,展示出主要內容與提綱。最后的三層一般由正文或其他額外信息構成,展示全部的內容,可以用較小的字號。

          △ 圖片來自網絡

          不過當我們在設計移動端頁面的時候,因為屏幕尺寸的限制,有時候需要酌情減少頁面的層級,這樣才能讓信息不會過于繁雜。

          一般一個頁面會根據功能分為多個模塊,下面我們就從「模塊內」和「模塊之間」兩個角度來談談如何構建合理的視覺層次。

          一、一個模塊中的層次感

          我們所說的「模塊」指的是什么呢?可以是一張卡片里面的內容,也可以是一個信息列表等等,總而言之是一個信息組。當我們拿到需求的時候,應該理解每個信息組里面的每條信息的價值,并且給他們分一個類。

          比如有時候,PM 同學跑過來說:「我想加個大按鈕」,「不想讓用戶注意到刪除功能,但是一定要有」 ,或者「這次就想試一試,展示了這條信息點擊率會不會漲」 ,又或是「這條信息展不展示都行,你設計的時候自己看吧……」 好好好,需求我都懂,那么該如何分類呢?

          四象限法則相信大家都聽說過,那么我們就改編一下這個法則,給每個信息組中的信息按「重要——不重要」「必要——不必要」來分個類吧。

          面對又重要又必要的信息還等什么,一定要大要明顯,讓用戶第一眼看到。

          重要卻不必要的信息,一般是從產品或流程本身來講不是一定要有的信息,但是因為某種原因想要突顯給用戶,比如在信用卡的產品列表中加入每張卡的推薦理由,或者在餐廳列表中展示某某名人去過這家店……這些信息在列表中不是必須有的,但是對于引導用戶判斷又十分的重要,所以我們可以次一級的來展示,要讓用戶可以注意到,但也不能搶了風頭。

          哪種信息是必要但不重要的呢?比如一個活動彈窗的關閉按鈕,一個訂單的刪除功能,一條免責聲明等等,我們不希望用戶注意到他們,但是這些功能又不得不存在,那么就要弱化展示這些信息。

          不必要又不重要的信息,一般情況是要去掉的,除非在設計中信息太少了空蕩蕩的,為了排版美觀才會把這種邊緣信息留下占位。

          接下來,當我們整理好信息層級之后,要靠什么手段來展示這些層級呢?答案是加大對比。

          1. 大小

          對比的第一步就是大小的對比,在大家的認知中,大的東西比小的東西更顯眼、更重要。用戶會自然而然地關注到尺寸較大的文本和尺寸較大的圖,比如下圖中一張足夠大的信用卡卡面圖片,一秒吸引目光。再比如頁面中的大標題,都是這樣的效果。

          △ 截圖來自查查公積金

          在內容列表中,標題名字類的信息一般會使用14-17dp左右,補充說明內容一般使用11-12dp左右,具體的使用情況要根據信息的多少、信息的重要程度、上下對比等情況來進行具體的設計。

          △ 圖片來自融360、微信

          2. 重量

          有時候由于空間的限制,字號不能再大了?字號大了也沒拉開層次?試試增加字重量吧。iOS&Android 由于字體不同,加粗的效果也不同,請酌情增減。

          3. 顏色

          顏色對于用戶的感知有著巨大的影響。所以在進行視覺層次構建的時候,不同的顏色可以輕松構成層次結構,強烈的顏色比如紅色、橙色都很容易引人注意。白色和淺灰通??梢杂脕碜鳛榇竺娣e的背景色,和其他的顏色構成對比。在設計的時候可以運用 App 的主色和輔助色來拉開視覺層次。

          △ 圖片來自查查公積金、融360視覺規范

          4. 對比

          我們以上圖這個貸款列表舉一個綜合的例子,四條信息從最突出到最弱化分別標為了1、2、3、4,這幾條信息中的字號以至少6px的差值進行遞減,并且只有前兩條信息進行了加粗處理,同時顏色的選擇上也是從強到弱:

          大小、重量、顏色的運用,歸根結底就是制造對比,這也是創建層次結構依靠的核心。一個元素和另外一個元素構成對比,才能有層次的展示他們之間重要程度上的差異,讓用戶更加容易獲取到信息。

          二、模塊之間的層次感

          當我們已經合理的排布了一個模塊內的視覺層次,接下來要做的就是把多個模塊組合起來。

          心理學家基于格式塔原理來檢測用戶對于元素之間關系的視覺感知,發現人們傾向于將視覺關系靠近的元素群視作為有關系的一組。值得說明的是,位置接近的元素,即使色彩形狀大小都不一致,但只要他們足夠靠近,都會被人們視為一組。

          △ 圖片來自網絡

          視覺層次的建立很大程度上是基于格式塔原理,所以我們要關注 UI 元素之間的靠近性。

          基于這種認知,即使每個模塊之中的內容有對比有強弱,但是只要每個信息組之間的元素的距離較近,并與其他信息組之間的距離拉遠,留下足夠的留白空間,就可以清晰的將整個頁面的層次拉開。留白和元素本身之間構成的疏密對比,會更好的讓用戶注意到留白包圍下的內容。

          △ 圖片來自網絡

          現在很多 App 都是通過對比與留白來進行頁面中的「無形分割」,減少了很多線和塊的運用,讓頁面更為簡潔?;旧显瓌t為:文字與圖片對齊,與相關內容的間距要小于其他內容,標題要大。

          △ 圖片來自 Airbnb

          當字體足夠大的時候,會比小字符更有「圖形感」,更加突出,可以更明確的告訴用戶從這里開始是下一段了,字號一般在20-24dp之間,根據內容和整體風格來決定,顏色一般選擇比較深的顏色 ,必要的時候可以加粗。當其他內容都是比較小的文字的時候,欄目標題也要控制一下大小。如果圖片較多,標題就可以再大一些。

          具體多大,就要在頁面和諧的基礎上多試幾次……

          △ 圖片來自查查公積金

          如上圖,在查查公積金 App 中,當我們設計信用卡詳情頁的時候,由于整個頁面里圖形比較突出,看起來用加粗的「辦卡禮」、「專享特權」標題更合適一些。可是在同個 App 的公積金詳情頁里面,整個頁面用色都比較清淡,內容都是一些文字信息,如果內容標題加粗的話會顯得比較突兀。所以綜合整個 App 的頁面風格權衡之后,還是選擇了左側沒有加粗字體的設計。

          總體來講,UI 設計是沒有公式的,只能有經驗之談和大體上的建議,很多時候都要設計師一次次的去嘗試、去對比、去感受,才能給出針對當下頁面需求最合理的層次構建與解決方案。

          如何設計表單錯誤信息

          資深UI設計者

          本文中,我們會討論如何通過優化錯誤提示信息,來優化UI表單的設計。

          在UI界面的設計中,用戶的操作失誤不可避免,通過錯誤提示將當前狀態傳達給用戶,這種反饋機制可以幫助用戶及時作出調整并找到合理的解決方案。盡管錯誤信息很常見,卻往往不被設計師重視。草草的處理錯誤信息、制作邏輯混亂的錯誤信息會使用戶感到沮喪,以致最終放棄你的應用。相反,處理得當的錯誤提示,卻可以變失敗為驚喜。



          一、表單中錯誤信息的設計方案


          用戶不喜歡表單,原因之一就是糾正輸入錯誤信息的成本過高。如何讓用戶通過不同的報錯信息提醒,繞過障礙順利完成表單,是讓用戶體驗流暢順滑的關鍵所在。

          糟糕的錯誤信息在很大程度上是源自于用戶體驗設計流程上的規劃失誤。為什么這么說呢?在原型設計階段,用戶體驗設計師就需要考慮到可能會出現的錯誤,以及相應的錯誤反饋,確保用戶在報錯信息的幫助下,最終能夠完成這個階段的任務,抵達他們的目標。


          1、在當前頁面及時反饋


          用戶并不喜歡填完一個長表單并提交之后,才發現哪里填錯了。在錯誤出現之后,界面應該在第一時刻將錯誤信息呈現出來,用戶不必等到點擊提交按鈕才看到錯誤,他們能更早改正錯誤。

          Image title


          在上面兩個錯誤信息呈現的案例當中,第一個頁面使用了彈出框來呈現錯誤信息,告知用戶需要填寫詳細信息才能付款。用戶則需要關閉彈出框之后,再重新填寫,這增加了額外的步驟。而用戶關閉彈出框之后再填寫的時候,也有一定的機率會忘記彈出框的具體要求和內容,導致無法正確填寫。這種耗時又令人沮喪的用戶體驗,用戶不會喜歡的。

          正確的形式是直接在界面中呈現報錯信息,并且報錯信息緊貼著對應的輸入框,以醒目的色彩在輸入框下方呈現,用戶能收到即時的反饋,也能清晰的標注出所有的要求,便于用戶更正。


          2、錯誤信息的最佳位置


          在制作表單時,你通常會把錯誤信息放在哪里呢?如果錯誤信息沒有放在用戶期望的位置,那么可能會影響完成表單的效果。

          當用戶犯錯時,他們需要了解這些錯誤是什么,以便他們能夠糾正錯誤并重新提交表單。如果表單過于復雜填寫困難,他們會改變主意。


          ◎頂部錯誤提示vs行間錯誤提示


          錯誤消息的兩個最常見的位置位于表單的頂部,和輸入框的行間。哪個位置對用戶來說更直觀呢?

          一項研究發現,在表單頂部顯示所有錯誤消息會給用戶記憶造成較高的認知負荷。這會強制用戶回憶每個錯誤輸入框中的錯誤消息。

          Image title


          減少用戶認知負荷的方法是在輸入框行間顯示錯誤信息。行間的錯誤提示可以幫助當場識別錯誤而不是靠回憶錯誤,這讓用戶可以更快更輕松地糾正錯誤。

          另一項研究發現“錯誤字段和錯誤信息之間的距離會影響錯誤糾正的效率”。在表單的頂部和底部放置錯誤信息時用戶反應更正的時間最長,而行間錯誤信息可以縮短反應時間。

          在表單的頂部和底部放置錯誤信息,也導致用戶錯誤率最高,完成時間最長,滿意度。和頂部、行間錯誤信息相比,底部錯誤信息的糾錯成功率。


          ◎用戶更偏愛的錯誤信息位置


          該研究證明,將錯誤信息與錯誤的字段鄰近放置可以獲得最佳性能,并且指出了最直觀的顯示位置。

          Image title


          調研中讓用戶來選擇把錯誤提示放在上圖的哪個位置更滿意,更多的用戶喜歡輸入框右邊的錯誤提示位置。

          位于輸入框左側的錯誤信息位置被評為最差。對話框上面的位置導致了最高的認知負荷,隨后是字段之下的錯誤消息。


          ◎為什么右側的位置是最好的


          理解為什么用戶更偏愛將錯誤消息放置在字段右側是很重要的。通過這種方式,設計師可以更好地向其他人介紹在制定設計方案時用戶的行為偏好。

          Image title


          西方的閱讀習慣是從左到右的。當用戶的視線從輸入框移動到錯誤消息時,感覺就像一個自然的過程,需要很少的精力和視覺工作。將他們的眼睛從錯誤消息移回輸入框以進行糾正也遵循重新讀取文本的自然流程。


          ◎為什么左側的位置是最差的


          將錯誤消息放在輸入框的左邊,違背了西方的閱讀習慣。當出現錯誤提示時,用戶的視線朝著與自然閱讀流程相反的方向移動。這種方式很不自然,有悖于用戶習慣,并且在用戶調研中得到了證實。

          Image title


          這樣的排布也與我們的直覺相反,因為用戶期望在左側放置有更高優先級的元素。將錯誤消息放置在左側意味著它比要輸入的字段更重要。但事實上用戶需要專注于糾正他們的輸入,因此輸入框應該是更重要的元素。


          ◎上側的位置為什么會增加用戶的認知負荷


          用戶對輸入框上面的錯誤提示有著更高的認知負荷(例如表格頂部對齊的標簽)。這是因為用戶會把錯誤提示和輸入框中的提示文案混淆。

          Image title


          這兩個文本靠得很近會產生視覺噪音,在用戶嘗試讀取錯誤消息或輸入框的提示標簽時分散注意力。他們看到兩段文案卻很難專注于其中一個,并且可能混淆它們。


          ◎移動設備上表單的最佳錯誤信息位置


          手機屏幕缺少水平空間來并排顯示錯誤消息和標簽文案。這意味著把錯誤信息放在右側不是移動表單上的最佳位置。

          Image title


          對于移動設備,更好的方式是請將錯誤信息放置在輸入框下方。這是該研究中用戶第二最喜歡的位置。雖然它不符合用戶自然的從左到右的閱讀流程,但它確實與自然的從上到下的閱讀流程相對應。

          當用戶閱讀文本時,他們習慣將視線從頁面的左側移動到右側。錯誤信息低于輸入框,使它遵循垂直閱讀過程。

          將錯誤消息放置得太靠近下面的字段標簽時,可能會增加用戶閱讀文本時的認知負荷。你可以通過將它們隔開足夠的間隔來防止這種情況。


          ◎右邊還是下邊,哪個是最好的位置?


          錯誤消息的最佳位置在輸入框的右側和下方。但是你應該使用哪個位置?這取決于你有多少時間來實現。

          如果你用來實現web端和app端的時間有限,可以選擇在下方放置錯誤信息。在web端實現后,方便在app端進行適配。

          如果你有足夠的開發時間,在web端請選擇輸入框的右側,而移動端考慮放在輸入框的下面。這樣不僅可以提供比較好的用戶瀏覽體驗,還能縮短表單的長度。


          3、在視覺上要足夠突出


          如果出錯之后,用戶無法迅速注意到報錯信息,這不僅僅浪費了時間,也耽誤了事情。正如 Jakbo Nielsen 所說:“最糟糕的報錯信息是那些對用戶而言根本看不到的報錯信息?!比欢y點也就在這個地方,加粗字體和彈出框對于用戶而言過于具有壓迫感,那么你要如何確保信息能被用戶注意到又不會顯得太過呢?不難,使用正確的色彩來輔助顯示。

          Image title


          色彩是用戶識別信息的重要途徑,它也是設計師向用戶傳遞信息的可靠工具。出于對比的目的,在白色的背景下,使用紅色的錯誤提示信息,會足夠醒目,又不會太過喧賓奪主。在某些情況下,紅色對用戶的壓力較大,也可以使用黃色或橙色來作為錯誤提示。在這兩種情況下,請確保錯誤文本清晰可辨,且與其背景的顏色有顯著的對比。

          Image title


          值得注意的是,色彩不應該是報錯信息呈現的唯一標準??紤]到網頁和移動端應用本身的可用性和可訪問性,設計師應該考慮到色盲用戶的需求,提供色彩以外的視覺提示,例如錯誤icon等,確保他們也可以看明白。


          二、注意錯誤信息的文案推敲


          從某種程度上,你能把上面幾條做好,你的報錯信息在美學特征和體驗上就沒有太多問題了。不過,要想設計最佳體驗的錯誤信息,文案的重要性也是顯而易見的,需要在言簡意賅的同時友好地幫助用戶解決問題。

          10條可用性啟迪(經典的尼爾森十大可用性原則)中建議,要清晰優雅地表達出錯誤信息。有效的錯誤提示應該提供如下信息:

          明確表達發生了什么
          描述用戶應該如何應對
          盡可能多地保留用戶輸入的信息


          下面是文案設計的幾個小技巧。


          1、確保錯誤信息是可理解的


          把你的錯誤信息視為與用戶的對話——讓它聽起來像是為人類編寫的。確保你的錯誤信息是有禮貌,可理解的,而不是錯誤代碼和數據(諸如出現了錯誤43這樣的信息)。

          Image title



          2、清晰明確的指出錯誤


          一些電子郵件的網站會在所有的錯誤場景使用同一個錯誤提示,如下圖。你不能只是簡單的提示用戶“輸入有效的電子郵件地址”,而應針對用戶的問題明確的指出錯誤所在,例如“缺少@字符”等。而MailChimp則以另一種方式來判斷錯誤——他們對于每個電子郵件的驗證包含3個錯誤信息:檢查輸入字段是否為空、是否有“@”字符、是否有“.”字符。針對用戶輸入的錯誤方式會提供相應的提示文案。

          Image title



          3、提供解決方案


          錯誤信息應該明確定義問題是什么,為什么會發生,以及如何處理。只寫出錯誤是不夠的。應該向用戶盡可能簡單的展示如何盡快解決問題。

          Image title


          例如,Microsoft描述錯誤并在錯誤消息中提供解決方案,以便用戶可以立即解決此問題。

          正如同Jonathan Colman 所說,正確的報錯信息通常使用簡明而清晰的文字,而失敗的報錯信息通常不會提供關于錯誤發生的具體狀況以及解決方案,更丑陋的做法是將錯誤信息完全隱藏起來。

          下面的設計,就是很明顯的對比:

          Image title



          4. 錯誤信息應該禮貌


          不要責怪你的用戶,即使他們做錯了。對用戶要有禮貌,讓他們感到舒適隨和??梢允褂媚愕钠放坡曇?,來添加個性化的錯誤提示。

          Image title



          5. 如果恰當盡可能地幽默


          在你的錯誤信息中小心使用幽默。首先,錯誤信息應該是提供信息和幫助。如果適合,在錯誤消息中添加一些幽默,可以改善用戶體驗。

          Image title



          三、如何有效的預防錯誤


          設計過app的同學,應該很熟悉各種限制條件。例如網絡狀況差的情況下,很難填寫表單,而且幾乎沒法同步數據。要考慮到這些限制,設計更易使用的app,將錯誤減到最少。換句話說,應該提供建議、加上限制、保持靈活,第一時間預防用戶犯錯。

          Twitter因推文的字數限制而出名,他們會在用戶達到字數上限之前提出警示。

          Image title



          結語


          從不出現的錯誤信息才是最好的。最佳方式是引導用戶向正確方向前進,第一時間預防錯誤發生。但當錯誤確實發生時,設計精良的錯誤處理,不僅能教育用戶按你預期的方式使用app,還能防止用戶感到茫然。在設計錯誤信息時應遵循以上的方法,好的體驗讓用戶可以以最小的工作量和最少的思考,快速完成表單,讓他們可以有時間來完成他們真正想要做的事情。

          Echarts x軸文本內容太長的幾種解決方案

          seo達人

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

          Echarts 標簽中文本內容太長的時候怎么辦 ? 
          - 1對文本進行傾斜 
          在xAxis.axisLabe中修改rotate的值

           xAxis: {
                      data: ["襯衫11111","羊毛二二","雪紡衫111","褲子111","高跟鞋11","襪子111"],//x軸中的數據 name:"123",//坐標軸名稱。 nameLocation:'end',//坐標軸名稱顯示位置。 axisLabel : {//坐標軸刻度標簽的相關設置。 interval:0, rotate:"45" }
                  },
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9

          interval

          坐標軸刻度標簽的顯示間隔(在類目軸中有效哦),默認會采用標簽不重疊的方式顯示標簽(也就是默認會將部分文字顯示不全) 
          可以設置為0強制顯示所有標簽,如果設置為1,表示隔一個標簽顯示一個標簽,如果為3,表示隔3個標簽顯示一個標簽,以此類推

          一開始我沒設置 因為標簽文本過長的原因他就自動不顯示全部 
          image.png

          被遮擋住就讓grid 組件離容器向上移動 把grid中的bottom的值調大一些

           grid:{//直角坐標系內繪圖網格 show:true,//是否顯示直角坐標系網格。[ default: false ] left:"20%",//grid 組件離容器左側的距離。 right:"30px",
                      borderColor:"#c45455",//網格的邊框顏色 bottom:"20%" // },
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7

          image.png 
          - 2.換行顯示 
          在xAxis.axisLabel中 使用formatter回調函數實現換行

           axisLabel : {//坐標軸刻度標簽的相關設置。 formatter : function(params){ var newParamsName = "";// 最終拼接成的字符串 var paramsNameNumber = params.length;// 實際標簽的個數 var provideNumber = 4;// 每行能顯示的字的個數 var rowNumber = Math.ceil(paramsNameNumber / provideNumber);// 換行的話,需要顯示幾行,向上取整 /**
                                       * 判斷標簽的個數是否大于規定的個數, 如果大于,則進行換行處理 如果不大于,即等于或小于,就返回原標簽
                                       */ // 條件等同于rowNumber>1 if (paramsNameNumber > provideNumber) { /** 循環每一行,p表示行 */ for (var p = 0; p < rowNumber; p++) { var tempStr = "";// 表示每一次截取的字符串 var start = p * provideNumber;// 開始截取的位置 var end = start + provideNumber;// 結束截取的位置 // 此處特殊處理最后一行的索引值 if (p == rowNumber - 1) { // 最后一次不換行 tempStr = params.substring(start, paramsNameNumber);
                                              } else { // 每一次拼接字符串并換行 tempStr = params.substring(start, end) + "\n";
                                              }
                                              newParamsName += tempStr;// 最終拼成的字符串 }
          
                                      } else { // 將舊標簽的值賦給新標簽 newParamsName = params;
                                      } //將最終的字符串返回 return newParamsName
                          }
          
                      }
          • 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

          image.png

          • 3.文字豎直顯示 
            同樣和換行一個道理,只是這個是單個文字換行 
            在xAxis.axisLabel中 使用formatter回調函數實現換行
          axisLabel: { interval: 0,  
                                         formatter:function(value) {  
                                             return value.split("").join("\n"); } } 
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7

          image.png

          • 4.隔一個換行 
            在xAxis.axisLabel中 使用formatter回調函數實現換行
          axisLabel : {//坐標軸刻度標簽的相關設置。 clickable:true,//并給圖表添加單擊事件  根據返回值判斷點擊的是哪里 interval : 0,
                          formatter : function(params,index){ if (index % 2 != 0) { return '\n\n' + params;
                              } else { return params;
                              }
                          }
          
                      }
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13

          image.png

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

          利用 CSS 變量實現令人震驚的懸浮效果

          周周

          這個動畫是將鼠標移動到訂閱按鈕上移動光標會顯示相應的彩色漸變。這個想法很簡單,但是它能使這個按鈕脫穎而出,人們一下子就注意到它了,增加了點擊的概率。

          171422eli2zvv3zq2eq2mu.gif

          那么如何使用CSS實現這個效果?

          追蹤位置

          我們要做的第一件事就是獲取到鼠標的位置。

            document.querySelector('.button').onmousemove = (e) => {
            const x = e.pageX - e.target.offsetLeft
            const y = e.pageY - e.target.offsetTop

            e.target.style.setProperty('--x', `${ x }px`)
            e.target.style.setProperty('--y', `${ y }px`)
            }
             1.選擇元素,等待,直到用戶將鼠標移過它;
             2.計算相對于元素的位置;
             3.將坐標存在CSS的變量中。

          動畫漸變
            .button {
               position: relative;
               appearance: none;
               background: #f72359;
               padding: 1em 2em;
               border: none;
               color: white;
               font-size: 1.2em;
               cursor: pointer;
               outline: none;
               overflow: hidden;
               border-radius: 100px;
            span {
              position: relative;
            }
            &::before {
              --size: 0;  
              content: '';
              position: absolute;
              left: var(--x);
              top: var(--y);
              width: var(--size);
              height: var(--size);
              background: radial-gradient(circle closest-side, #4405f7, transparent);
              transform: translate(-50%, -50%);
              transition: width .2s ease, height .2s ease;
              }
              &:hover::before {
              --size: 400px;
                }

             }

          結果
          成功啦!將其加入到對于的HTML頁面,你炫酷的按鈕就可以使用啦!

          設計方法:用問題引出答案,群策群力繪制用戶體驗地圖

          藍藍設計的小編

          周五參加了港大space學院的工作坊,感謝Google張英惠老師的精彩授課,學到了通過發問找到解決問題的方法,群策群力繪制用戶體驗地圖。IMG_20170922_152217.jpg

          怎么制作微信小程序的旋轉動畫?

          seo達人

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

          微信小程序被給予的能量是無窮的,在小程序發展逐漸成熟的當下,小程序開發能實現的需求越來越完善。最近小程序中有一個圖片旋轉的需求,在微信小程序上是可以通過切換多張圖片達到旋轉的效果,但微信小程序自帶的API中帶有這么一個動畫組件,因此小程序制作旋轉動畫可以使用image+Animation來實現。

          首先在wxml中定義image

          注意其中的animation屬性,image就由它來實現動畫。

          而{{animation}}我們在js的data中定義

          data: {

          animation: \'\'

          },

          相關代碼

          var _animation;

          var _animationIndex

          const _ANIMATION_TIME = 500;

          pages {

          ...

          onShow: function () {

          _animation =wx.createAnimation({

          duration:_ANIMATION_TIME,

          timingFunction: \'linear\',//linear,ease,ease-in,ease-in-out,ease-out,step-start,step-end

          delay: 0,

          transformOrigin:\'50% 50% 0\'

          })

          },

          /**

          * 實現image旋轉動畫,每次旋轉 120*n度

          */

          rotateAni: function (n){

          _animation.rotate(120* (n)).step()

          this.setData({

          animation:_animation.export()

          })

          },

          /**

          * 開始旋轉

          */

          startAnimationInterval:function () {

          var that = this;

          that.rotateAni(++_loadImagePathIndex); // 進行一次旋轉

          _animationIntervalId =setInterval(function () {

          that.rotateAni(++_loadImagePathIndex);

          },  _ANIMATION_TIME); // 沒間隔_ANIMATION_TIME進行一次旋轉

          },

          /**

          * 停止旋轉

          */

          stopAnimationInterval:function () {

          if (_animationIntervalId> 0) {

          clearInterval(_animationIntervalId);

          _animationIntervalId= 0;

          }

          },

          }

          微信自帶的Animation可以實現一次動畫,然后可以通過setInterval來達到不斷旋轉的目的,在使用時,控制startAnimationInterval和stopAnimationInterval即可。


          微信小程序怎么制作旋轉動畫

          微信小程序視頻教程,盡在即速學院。


          在使用animation時,會發現有時候出現旋轉速度很快或者反向旋轉再正向旋轉的清空,這都是由于rotate的值設置有問題。

          1、rotate的值應該是上一次結束時的值,

          2、如果設置了全局變量,記得在oncreate時初始化,不然第二次打開同一頁面會有問題。

          注意事項:

          這里為什么不直接給_animation.rotate(120 * (n)).step()設置一個足夠大的值,原因有兩點:

          1、我們需要便利的控制開始和停止,

          2、animation在小程序進入后臺后,會持續運行,占用手機內存和cpu,而小程序依賴于微信,在iphone上會導致微信被終止運行

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

          氛圍獨特情緒深沉的深色系網站,設計上有什么講究?

          博博

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


          在設計中,情緒的傳達和氛圍的營造通常是要看設計項目的目的是什么,而不同的配色和不同的元素組合,往往能夠呈現出截然不同的風貌。相比之下,深色系網站常常會呈現出更為獨特的氛圍,傳達出更為復雜多樣的情緒。雖然這樣的情緒并不一定是正面和向上的,但是好設計總歸是讓人過目難忘的。

          想要借助深沉的色調來創造情緒相對獨特的網站設計,是有一些可供遵循的常見的設計技巧,今天的文章,我們來分享一下這方面的內容。

          深色,并不定是黑色

          首先這一點必須明確,深色并不一定是黑色。

          在選取配色的時候,網明亮的色彩當中添加黑色或者灰色所得出的色彩,通常會顯得更加深沉濃重,這樣的色彩中往往會包含之前的色調。

          在上面的 Hooligan 這個網站當中,設計師不僅采用了深沉的黑色背景,而且采用了和黑色背景相當匹配的暗金色,兩種深色之間色彩明暗依然存在對比,和白色的標題文本構成了三個層次,不僅富有視覺吸引力,而且創造出了沉穩厚重的氛圍。

          陰影的使用

          陰影和光線往往是相伴出現的,而陰影所帶來的舞臺劇般的效果則充滿了戲劇感和神秘感,這也是設計師喜歡它的原因,這樣的設計會讓用戶心中產生興趣和好奇心。

          在上面的 Clear Motion 這個網站當中,車輛周圍被陰影所包圍,文本內容很容易吸引用戶的注意力。同時,用戶會好奇這輛車有什么特殊的地方,有什么地方看起來不太一樣,黑暗的氛圍下,用戶的好奇心會身不由己地高漲起來。

          黑色疊加層

          用黑色的半透明層疊加到圖像上,也是制造深色系背景的一種常見手法。在圖片的選取和不同的透明度之下,背景圖片所呈現出來的效果和氛圍,是非常不同的。

          透明度較低的情況下,黑色疊加圖層會讓用戶看不清背景中的信息,這使得背景信息在整個設計中參與度較低。透明度較高的情況下,更多的背景元素會透過疊加層呈現出來,和前景元素產生交叉和互動。但是總的來說,黑色疊加層讓元素之間產生對比,也使得行為召喚元素更容易發揮作用。

          在上面的 Fhoke 這個網站當中,透明疊加層讓背景中的場景適當地透露一點出來,但是真正吸引人注意力的,還是在標題和左側的行為指引上。

          簡陋的畫布

          細節較多的背景讓人覺得信息豐富,而粗陋的畫布則更容易創造出一種虛無的感覺,相應的,后者是會讓人更有探索的欲望。粗陋甚至赤裸的深色系畫布很好地將神秘感和探索的欲望結合到了一起。

          Dubois 這個網站的背景同樣非常的簡單,沒有紋理,只是通過均勻分布的小圓點來進行裝飾,如果你仔細觀察會發現這些點的分布、色彩其實是有微妙變化的,會引導你去注意位于整個頁面底部的文本標題,雖然絕大多數的網站并不會把標題放在這樣的位置上。

          字體的選取

          Punk is Not Dead 這個網站給你的感覺是否很獨特?網站的設計非常清晰,識別度極高,網站本身還有音頻組件,它的設計從視頻到音頻一應俱全,整體充滿了朋克的風格。

          黑暗的背景和明亮的字體色彩有助于實現這樣的效果,但是字體的選取才是最關鍵的。想象一下使用普通的字體,是完全達不到這樣的效果。尖銳粗糙的邊緣和并不那么友好的可讀性,讓他在視覺上和朋克的精神保持了一致。

          黑白配色

          當設計完全失去色彩,僅僅保留黑白兩色的情況下,會給人什么樣的感覺呢?如果整個設計是以黑白兩色為主,搭配少量其他的顏色,體驗和氛圍又是什么樣的呢?

          黑白配色和純黑為主的配色一樣,很容易創造出戲劇化的效果,這兩種色彩本身所構成的沖突和對比就是原因。

          黑白的強烈對比,常常會促使訪客在瀏覽過程中忙于注意不同的細節,面對 Super Rebel 這個網站的時候,這種感覺就非常明顯。打開頁面之后,注意力會迅速被右上角的圖片吸引,隨后便忍不住把對比強烈的所有模塊都掃視一遍。黑白色搭配大量信息很容易創造出信息過載的效果和體驗。

          圖片的選取

          Jimmy Chin 在他的作品集網站的「關于」頁面當中,他將自己的照片直接放了進去,色彩采用了單純的黑色。

          色彩的明暗和飽和度的選取,直接影響著整個設計的情緒,在這里,單純的黑色讓整個頁面的形式感更強,而所呈現出來的感覺也非常的銳利。想想看,他穿著黃色的襯衫和綠色的褲子,那么整個圖片所呈現出來的感覺是完全不同的,浮夸而醒目。

          圖片的選取對于情緒的表達和氛圍的營造有著巨大的影響。

          也可以營造輕松的氛圍

          許多深色系的網站都給人以深沉、怪異的感覺,但是深色并不完全代表著負面的情緒。深色系的網站同樣可以被設計得輕松而富有活力,這主要取決于你如何將元素組合到一起。

          在 Atom 這個網站當中,整個背景都采用了典型的深灰,但是卡通角色和輕盈的色調讓網站凸顯出一種可愛而有趣的感覺。這樣的設計也能帶來視覺奇觀,并且不會讓用戶感覺到負面的感受。

          這種設計讓用戶和網站之間的情感聯系更輕松,讓服務更容易為用戶所接受。

          結語

          那些帶有負面情緒和獨特氛圍的網站,你喜歡嗎?帶有這樣情緒和氛圍的網站,需要設計師花費更多的時間和精力來拿捏程度,來達成相應的設計目標,而且這樣的設計并非不好。情緒化的設計,有趣而神秘的氛圍,帶有負面情感的表達,躁動甚至暴躁的設計,這些都有其獨特的作用。

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


          日歷

          鏈接

          個人資料

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

          存檔

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