首頁

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

資深UI設(shè)計者


今天分享一個很多設(shè)計師頭疼已久的問題,關(guān)于網(wǎng)頁響應(yīng)式布局原理和設(shè)計方法。文章主要包含三個部分:

  • 響應(yīng)式頁面是什么
  • 響應(yīng)式布局的規(guī)則
  • 響應(yīng)式的設(shè)計流程

所以廢話不多說,我們直接進(jìn)入正題吧!

響應(yīng)式頁面是什么

在過去,網(wǎng)站通常就是為了電腦大屏幕展示而設(shè)計,如果用手機訪問,只能在巴掌大的屏幕里看縮小版的頁面。雖然還有手機專供的 WAP 頁面,但因為太簡陋也無濟于事。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

隨著智能手機、3G、4G、HTML5 的普及,使用手機訪問網(wǎng)站的人越來越多,為了讓用戶在手機上看到更合適的布局,且兼顧開發(fā)的效率,響應(yīng)式的概念就被提出了。

通俗解釋,就是通過一套代碼,可以無縫匹配符合電腦、平板、手機預(yù)覽效果的前端技術(shù)。比如下方 Nike 官網(wǎng),就是應(yīng)用了響應(yīng)式設(shè)計后在不同客戶端、分辨率下的效果。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

雖然響應(yīng)式的應(yīng)用越來越廣泛,但是從零開始去寫一個響應(yīng)式效果的網(wǎng)站對于程序員來講是非常復(fù)雜的,因為當(dāng)中包含了大量的邏輯、判斷、適配內(nèi)容。

所以,今天市面上看見的響應(yīng)式網(wǎng)站,多數(shù)使用了一些開源的代碼或者框架。而應(yīng)用最廣泛的,就數(shù) Bootstrap 了。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

之所以提這個,是因為既然開發(fā)使用了別人寫的框架,那么對于我們的設(shè)計稿也就上了緊箍咒,我們需要根據(jù)框架的要求來設(shè)計界面,這會稍后具體解釋。

還有個問題,就是為了實現(xiàn)平板、手機和電腦不同的預(yù)覽效果,并不是只有響應(yīng)式布局一種技術(shù),還有另一種技術(shù) —— 自適應(yīng)。

通俗點說,自適應(yīng)就是為不同客戶端分別提供一套獨立的前端代碼,和響應(yīng)式使用一套代碼適配多種客戶端不同。

響應(yīng)式適合應(yīng)用在一些簡單的官網(wǎng)、展示類頁面,展示的內(nèi)容大致相同。而自適應(yīng)適合應(yīng)用在需要在不同客戶端類型有較大差異的網(wǎng)站,這樣只使用一套前端代碼就完全行不通了。

比如愛奇藝的官網(wǎng),為了符合用戶體驗,在移動端網(wǎng)頁布局中精簡替換了大量的內(nèi)容,和電腦版已經(jīng)沒有太直接的聯(lián)系了。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

兩種做法并沒有好壞之分,只有適不適合項目之別。了解了它們的不同,我們就可以進(jìn)一步學(xué)習(xí)響應(yīng)式的規(guī)則了。

響應(yīng)式布局的規(guī)則

響應(yīng)式布局的規(guī)則并不是特別復(fù)雜,只要注意兩個問題:

  • 分段響應(yīng)規(guī)則
  • 組件寬度適應(yīng)

1. 分段響應(yīng)規(guī)則

敲黑板,響應(yīng)式的響應(yīng),面向的核心對象是瀏覽器窗口的寬度,而不是設(shè)備類型。所以打開使用響應(yīng)式的網(wǎng)站,我們通過改變?yōu)g覽器的寬度,就可以看見不同的展示效果,比如下圖的星巴克官網(wǎng)。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

我們可以發(fā)現(xiàn),瀏覽器寬度每達(dá)到一個數(shù)值(Breakpoint)的時候,頁面的排版和樣式就會發(fā)生明顯的變化,而這就是響應(yīng)式設(shè)計最重要的功能 —— 分段展示。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

也就是說,響應(yīng)式規(guī)則就是為頁面分配不同的寬度區(qū)間,每個區(qū)間有各自展示的樣式,用來應(yīng)對不同的場景和設(shè)備類型,常見的適配區(qū)間大致如下:

包含圖片截圖 320-800 :移動端收集屏幕 800-1200:平板或上網(wǎng)本屏幕 1200-無窮:一般的電腦顯示器

面對分段式的布局、樣式變更,我們就要關(guān)注到底發(fā)生了哪些變化。總結(jié)起來,可以簡單的歸納成三種組件的調(diào)整:內(nèi)容增減、布局調(diào)整、樣式調(diào)整。

第一種,內(nèi)容增減。即部分模塊在不同的分段內(nèi)會有顯示和隱藏的狀態(tài),尤其是一些網(wǎng)頁端的內(nèi)容覺得在小屏幕上展示會太多了,就在小屏幕場景中隱藏掉。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

第二種,布局調(diào)整。主要是模塊的排列和順序發(fā)生變化,常見的就是模塊一行的列數(shù)發(fā)生改變。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

第三種,樣式變更。即針對不同的分段設(shè)計完全不一樣的樣式,最多應(yīng)用在導(dǎo)航欄的設(shè)計中,會為最小的分段使用 iOS 的 Tabbar 或安卓的 Menu 樣式。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

所以,歸納起來,就是頁面針對不同的分段展示不同的結(jié)果,即頁面中的組件觸發(fā)了對應(yīng)的變化類型。每個組件都可以應(yīng)用不同的變化類型,而無需進(jìn)行統(tǒng)一。

2. 組件寬度適應(yīng)

分段式響應(yīng),是響應(yīng)式布局的第一層邏輯。而在觸發(fā)關(guān)鍵值(Breakpoint) 之間的區(qū)間,我們拖動窗口的寬度,會發(fā)現(xiàn)組件的寬度也隨之改動,這就是 —— 組件寬度適應(yīng)。

組件寬度適應(yīng)在手機 UI 的適配中非常重要,即完成不同屏幕寬的手機適配所應(yīng)用的邏輯,所下面我們簡單講講它的規(guī)則。

組件的寬度適應(yīng)模式主要有兩種類型,一種是容器寬度適應(yīng),一種是容器比例縮放,比如下面的圖例。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

容器是一個比較抽象的概念,類似設(shè)計軟件中的編組,它集合了所有下級元素,但本身并沒有實際的內(nèi)容和樣式。在響應(yīng)式規(guī)則中,下級元素并不會和這個容器等比變動,出現(xiàn)下面這種錯誤的效果。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

正確做法是會定義下級元素針對父容器的響應(yīng)方法,做到容器變更的同時其自身的顯示也是合理的。比如相對容器左右間距一致、對齊方向一致、尺寸固定等設(shè)置。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

而這種規(guī)則的設(shè)置,就是 Sketch/Figma/XD 中的響應(yīng)式設(shè)置功能。只要設(shè)置得當(dāng),就可以獲得一樣的寬度適應(yīng)效果。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

如果對軟件響應(yīng)式功能了解不全面的同學(xué),就可以自己多搜索一下對應(yīng)的說明,我就不在這里過多的展開了。

再總結(jié)一下,響應(yīng)式的規(guī)則就是頁面組件先遵循當(dāng)前分段展示的布局效果,并在這個區(qū)間內(nèi)支持小范圍寬度的變更和適應(yīng)。

響應(yīng)式的設(shè)計流程

響應(yīng)式設(shè)計是一種源自技術(shù)的概念,而不是單純的設(shè)計風(fēng)格、方法,所以設(shè)計響應(yīng)式設(shè)計其實就是 「面向編程設(shè)計」。

設(shè)計界面要吻合編程的真實方法和需求,而不是根據(jù)我們想怎么做就怎么做,所以整個流程不能只站在設(shè)計師自身的角度考慮,而要和前端程序員緊密溝通,首先確定響應(yīng)幾個寬度區(qū)間,以及它們對應(yīng)的數(shù)值分別是多少。

然后我們就要完成對應(yīng)數(shù)量頁面的設(shè)計,因為前面我們說過,分段響應(yīng)規(guī)則中會有明顯的樣式變動,這就要求設(shè)計師是一定要給出設(shè)計示例的,而不能依靠口頭描述或程序員自由發(fā)揮。

用一篇文章,幫你看懂網(wǎng)頁響應(yīng)式布局原理

完成這些設(shè)計稿以后,我們再進(jìn)一步確定同一個區(qū)間內(nèi),組件的寬度適應(yīng)規(guī)則是什么樣的。多數(shù)情況下,這個階段使用口述就可以,如果規(guī)則比較多,那么就可以在標(biāo)注階段把你要實現(xiàn)的效果記錄上去即可。

全部設(shè)計稿和規(guī)則都溝通完畢以后,才進(jìn)入切圖導(dǎo)出的階段。要提醒一次,在一些特殊的情況下,響應(yīng)式的背景切圖會和普通頁面的背景切法不一樣,盡可能讓前端程序員檢查一遍導(dǎo)出的文件。

只要根據(jù)上述的流程,在遇到不確定或者不清楚的情況,就和前端程序員做溝通,那么很快就可以將項目輸出出來。

結(jié)尾

響應(yīng)式這個概念雖然高大上,但并不是任何項目都要無腦往上套的。因為框架規(guī)則上的限制,導(dǎo)致我們很難在響應(yīng)式頁面中使用一些特別復(fù)雜、高級的視覺樣式,導(dǎo)致最終呈現(xiàn)的效果往往非常簡單或者過度依賴圖片的質(zhì)量。

所以,如果在功能較為復(fù)雜或需要復(fù)雜視覺支撐的網(wǎng)頁中,就可以選擇應(yīng)用固定頁面內(nèi)容寬度的設(shè)計來完成。

文章來源:優(yōu)設(shè)    作者:超人的電話亭

藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)


詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

資深UI設(shè)計者

大部分電商詳情頁教程都著重教你如何做好首焦圖,「產(chǎn)品參數(shù)模塊」這個部分則鮮有人提。今天這篇教程,用超多案例,幫你掌握「產(chǎn)品參數(shù)模塊」的設(shè)計方法。

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?

詳情頁中最容易被忽略的產(chǎn)品參數(shù)模塊,該如何設(shè)計?
文章來源:優(yōu)設(shè)    作者:美工美邦

藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 平面設(shè)計服務(wù)


微信小程序發(fā)送訂閱消息(之前是模板消息)

seo達(dá)人

之前的模板消息已經(jīng)廢棄,現(xiàn)在改為訂閱消息,訂閱消息發(fā)布前,需要用戶確認(rèn)后才能接收訂閱消息。


image


小程序端

index.wxml


<button bindtap="send">發(fā)送訂閱消息</button>

index.js


const app = getApp()

Page({ data: {

 }, send:function(){

   wx.requestSubscribeMessage({ tmplIds: ['WZiCliW1zVtHXqX7dGnFNmFvxhW-wd9S_W4WfrwNvss'],


success:(res)=> { // 在登錄的時候,獲取到的openid進(jìn)行緩存,現(xiàn)在直接把openid提取出來即可 wx.getStorage({ key: 'openid',


         success (res) { console.log(res.data)

           wx.request({ url: 'https://www.xxx.com/send.php?openid='+res.data, data: {},


header: { 'content-type': 'application/json' },


             success (res) { // 推送 if(res.data.errcode == '43101'){ console.log("拒絕訂閱消息")

               }else if(res.data.errcode == '0'){ console.log("發(fā)送訂閱消息")

               }else{ console.log("未知錯誤")

               }

             }

           })

         },

         fail (res) { console.log("沒有openid,無法發(fā)送")

         }

       })

     }

   })

 }

})

后端

<?php //設(shè)置 header  header("Content-type:application/json"); //接收參數(shù) $openid = $_GET["openid"];


//初始化 CURL $ch = curl_init(); // 獲取access_token // include ''; require_once("access_token.php");


//目標(biāo)服務(wù)器地址  curl_setopt($ch, CURLOPT_URL,


'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='.$access_token);


//設(shè)置要POST的數(shù)據(jù) curl_setopt($ch, CURLOPT_POST, true);


$data = '{

 "touser": "'.$openid.'",

 "template_id": "模板ID",

 "page": "pages/index/index",// 要跳轉(zhuǎn)的頁面

 "lang":"zh_CN",

 "data": {

     "thing4": {

         "value": "歡迎使用專插本最前線小程序"

     },

     "thing5": {

         "value": "小程序由公眾號:廣東專插本最前線開發(fā)"

     }

 }

}';

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); // 對認(rèn)證證書來源的檢查 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 從證書中檢查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //獲取的信息以文件流的形式返回,而不是直接輸出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //發(fā)起請求 $result = curl_exec($ch); echo $result; //關(guān)閉請求 curl_close($ch); ?>

access_token.php


<?php // 聲明頁面header header("Content-type:charset=utf-8"); // APPID、APPSECRET $appid = "你的小程序APPID";

$appsecret = "你的小程序APPSECRET"; // 獲取access_token和jsapi_ticket function getToken(){

   $file = file_get_contents("access_token.json",true);//讀取access_token.json里面的數(shù)據(jù) $result = json_decode($file,true); //判斷access_token是否在有效期內(nèi),如果在有效期則獲取緩存的access_token //如果過期了則請求接口生成新的access_token并且緩存access_token.json if (time() > $result['expires']){

       $data = array();

       $data['access_token'] = getNewToken();

       $data['expires'] = time()+7000;

       $jsonStr =  json_encode($data);

       $fp = fopen("access_token.json", "w");

       fwrite($fp, $jsonStr);

       fclose($fp); return $data['access_token'];

   }else{ return $result['access_token'];

   }

} //獲取新的access_token function getNewToken($appid,$appsecret){ global $appid; global $appsecret;

   $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret."";

   $access_token_Arr =  file_get_contents($url);

   $token_jsonarr = json_decode($access_token_Arr, true); return $token_jsonarr["access_token"];

}


$access_token = getToken(); ?>

邏輯

1、通過button控件出發(fā)send函數(shù)

2、send函數(shù)調(diào)用wx.requestSubscribeMessageAPI,微信允許接收訂閱消息

3、 wx.request向send.php后端請求

4、后端獲取access_token后,調(diào)用訂閱消息接口POST一段json數(shù)據(jù)即可發(fā)送訂閱消息


官方文檔

1、https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html


2、https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.addTemplate.html


Author:TANKING

Date:2020-08-24

Web:http://www.likeyun.cn/

WeChat:face6009

藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

JavaScript - 數(shù)組排序 6 種常見算法

前端達(dá)人

開發(fā)中,遇到數(shù)組排序的需求很頻繁,這篇文章會介紹幾個常見排序思路。

一、希爾排序(性能最好)

如果要從大到小排列,則 while(arr[n] > arr[n - interval] && n > 0) 。

// 希爾排序算法 function xier(arr){ var interval = parseInt(arr.length / 2);//分組間隔設(shè)置 while(interval > 0){ for(var i = 0 ; i < arr.length ; i ++){ var n = i; while(arr[n] < arr[n - interval] && n > 0){ var temp = arr[n]; arr[n] = arr[n - interval]; arr[n - interval] = temp; n = n - interval; } } interval = parseInt(interval / 2); } return arr; } // Array var arr = [10, 20, 40, 60, 60, 0, 30] // 打印排序后的數(shù)組 console.log(xier(arr))//[0, 10, 20, 30, 40, 60, 60]  

二、sort排序(普通數(shù)組 / 數(shù)組嵌套對象)

一堆數(shù)組排序

// Array var arr = [10, 20, 40, 60, 60, 0, 30] // 排序方法 arr.sort(function(a,b){ /*
    * return b-a; —> 降序排序
    * return a-b; —> 升序排列
    */ return a-b; })//括號里不寫回調(diào)函數(shù)則默認(rèn)按照字母逐位升序排列 // 打印排序后的數(shù)組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60]  

對象數(shù)組排序(數(shù)組套對象)

//對象數(shù)組排序 var arr = [ {name:'syy', age:0}, {name:'wxy', age:18}, {name:'slj', age:8}, {name:'wj', age:20} ]; // 排序方法 function compare(property) {//property:根據(jù)什么屬性排序 return function(a,b){ var value1 = a[property]; var value2 = b[property]; /*
        * value2 - value1;  ——> 降序
        * value1 - value2;  ——> 升序
        */ return value1 - value2;//升序排序 } } // 打印排序后的數(shù)組 console.log(arr.sort(compare('age'))) /*
0: {name: "syy", age: 0}
1: {name: "slj", age: 8}
2: {name: "wxy", age: 18}
3: {name: "wj", age: 20}
*/  

三、桶排序

特點:簡單,但非常浪費內(nèi)存,幾乎不用。

桶中出現(xiàn)的數(shù)組元素都做個標(biāo)記 1,然后將桶數(shù)組中有 1 標(biāo)記的元素依次打印。

// Array var arr = [] // 每個數(shù)組項做標(biāo)記(1) for(let i = 0; i < arr.length; i++) { let key = arr[i] arr[key] = 1 } // 遍歷打印出每項 for(let j in arr) { debugger console.log(j) }  

四、冒泡排序

性能:一般(需要每項進(jìn)行比較)。

每一趟找出最大的值。

// Array var arr = [10, 20, 40, 60, 60, 0, 30] /*
* 總共比較次數(shù)為arr.length-1次
* 每次的比較次數(shù)為arr.length-1次
* 依次遞減
*/ var temp;//交換變量標(biāo)識 // 兩層for分別表示當(dāng)前項與第二項 for(let i = 0; i < arr.length - 1; i++) { for(let j = 0; j < arr.length - 1; j++) { // 如果當(dāng)前項大于第二項(后一項)則交換 if(arr[j] > arr[j+1]) { temp = arr[j] arr[j] = arr[j+1]; arr[j+1] = temp; } } } // 打印排序后的數(shù)組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60]  

五、選擇排序

性能:一般(需要每項進(jìn)行比較)。

假定某個位置的值是最小值,與冒泡排序類似。

// Array var arr = [10, 20, 40, 60, 60, 0, 30] var temp;//交換變量標(biāo)識 // 兩層for分別表示當(dāng)前項與第二項 for(let i = 0; i < arr.length - 1; i++) { for(let j = i + 1; j < arr.length; j++) { // 假設(shè)第二項是最小值(是則交換/否則繼續(xù)比較) if(arr[i] > arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } // 打印排序后的數(shù)組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60] 

六、插入排序

// Array var arr = [10, 20, 40, 60, 60, 0, 30] // 排序算法 for(var i = 0; i < arr.length; i++) { var n = i; while(arr[n] > arr[n+1] && n >= 0) { var temp = arr[n]; arr[n] = arr[n+1]; arr[n+1] = temp; n--; } } // 打印排序后的數(shù)組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60]



轉(zhuǎn)自:https://blog.csdn.net/weixin_44198965/article/details/107996497?utm_medium=distribute.pc_category.none-task-blog-hot-4.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-4.nonecase&request_id=

作者:

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

前端達(dá)人

手機UI中的交互是保持產(chǎn)品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認(rèn)知布局,增強體驗感和沉浸感。

手機UI中的交互是保持產(chǎn)品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認(rèn)知布局,增強體驗感和沉浸感。這里為大家整理了一些優(yōu)秀并富有創(chuàng)意的交互作品,為你的產(chǎn)品設(shè)計注入靈感。

專業(yè)又貼心醫(yī)療App頁面設(shè)計

醫(yī)療行業(yè)設(shè)計案例

微信圖片_20200818185149.jpg

   --手機appUI設(shè)計--

微信圖片_20200818185156.jpg

   --手機appUI設(shè)計--微信圖片_20200818185200.png

   --手機appUI設(shè)計--微信圖片_20200818185204.jpg

   --手機appUI設(shè)計--微信圖片_20200818185208.png

   --手機appUI設(shè)計--微信圖片_20200818185211.png

   --手機appUI設(shè)計--微信圖片_20200818185217.png

   --手機appUI設(shè)計--微信圖片_20200818185221.jpg

   --手機appUI設(shè)計--微信圖片_20200818185226.jpg

   --手機appUI設(shè)計--微信圖片_20200818185229.jpg

   --手機appUI設(shè)計--微信圖片_20200818185235.png

   --手機appUI設(shè)計--微信圖片_20200818185239.png

   --手機appUI設(shè)計--微信圖片_20200818185242.png

   --手機appUI設(shè)計--微信圖片_20200818185246.png

   --手機appUI設(shè)計--微信圖片_20200818185249.png

   --手機appUI設(shè)計--微信圖片_20200818185254.jpg

   --手機appUI設(shè)計--微信圖片_20200818185257.jpg

   --手機appUI設(shè)計--微信圖片_20200818185301.jpg

   --手機appUI設(shè)計--微信圖片_20200818185307.jpg

   --手機appUI設(shè)計--微信圖片_20200818185320.png

   --手機appUI設(shè)計--微信圖片_20200818185323.jpg

   --手機appUI設(shè)計--微信圖片_20200818185326.jpg

   --手機appUI設(shè)計--微信圖片_20200818185333.jpg

   --手機appUI設(shè)計--微信圖片_20200818185336.jpg

   --手機appUI設(shè)計--微信圖片_20200818185339.png

   --手機appUI設(shè)計--




(以上圖片均來源于網(wǎng)絡(luò))



  藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)



  更多精彩文章:

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

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

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

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

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

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



Flutter 實戰(zhàn):增刪查改功能示例代碼

seo達(dá)人

七月,我們上線重磅基礎(chǔ)能力——實時數(shù)據(jù)庫,并開了實戰(zhàn)直播課,讓大家可以更好的理解并使用該服務(wù)。你的聊天室、站內(nèi)信、投票、小游戲等需要高實時的功能正在想你招手,趕緊使用實時數(shù)據(jù)庫服務(wù)又快又簡單的開發(fā)它們吧。


點擊此處回顧教學(xué)視頻,看看知曉云大前端組長如何在十分鐘內(nèi)搞定一個視頻彈幕微信小程序。


Ps:目前實時數(shù)據(jù)庫限時免費,就算以后收費,費用也是低到忽略不計。速速用上,不要錯過這么硬核的能力。


八月,我們迎來知曉云三周年,推出各式各樣的福利活動。開發(fā)者在這個全年最優(yōu)惠的時間里,升級、續(xù)費,甚至購買三年期包年套餐,與知曉云鎖定下一個三年。非常感謝大家的支持,我們會繼續(xù)努力,不斷輸出更強大的能力。


九月初,F(xiàn)lutter SDK 已進(jìn)入測試階段,很快就可以跟大家見面了。

Flutter SDK 的使用比較簡明易懂,例如對數(shù)據(jù)表的增刪查改,在指定數(shù)據(jù)表后,對數(shù)據(jù)項進(jìn)行對應(yīng)操作即可,例如新增(create)、查找(get)、修改(update)和刪除(delete)。


以下是對 Flutter 增刪查改功能進(jìn)行展示:


TableObject product = new TableObject('product'); // 獲取名為 product 的數(shù)據(jù)表


// 新增數(shù)據(jù)

TableRecord record = product.create(); // 創(chuàng)建一條空白記錄


// 為屬性字段賦值

record.set('name', '知曉云 flutter sdk'); // 對 name 字段進(jìn)行賦值

record.set('version', '1.0'); // 對 version 字段進(jìn)行賦值


// 將數(shù)據(jù)保存到服務(wù)器

record = await record.save(); // 保存


// 從服務(wù)器獲取一條數(shù)據(jù)

TableRecord record = await product.get(record.id);


// 更新數(shù)據(jù)

record.set('version', '1.1');

await record.update();


// 刪除數(shù)據(jù)

await product.delete(recordId: record.id);

目前知曉云 Flutter SDK 支持的功能如下:


數(shù)據(jù)表

用戶

內(nèi)容庫

文件

云函數(shù)調(diào)用

獲取服務(wù)器時間

本地存儲

Flutter SDK 正式上線后,我們還會輸出實戰(zhàn)教學(xué)視頻,敬請期待!


另外,我們提前開啟內(nèi)測申請通道,點擊此處或微信掃一掃掃描下方卡片二維碼即可申請,獲得內(nèi)測資格的開發(fā)者,不僅可優(yōu)先體驗新功能,同時還可以與知曉云工程師近距離交流,你使用后的建議也可以得到更快的反饋與實現(xiàn)。


知曉云 Flutter SDK


2020 年已過去三分之二,好消息是,即將到來的中秋&國慶小長假以及知曉云近期的更新內(nèi)容,除了即將上線的 Flutter SDK ,還有以下更新。


1. 支持 QQ 小程序訂閱消息,消息能力又前進(jìn)一步。

與微信訂閱消息不同在于,QQ 小程序訂閱消息不僅支持分為「一次性訂閱」,還支持「長期訂閱」,如果用戶之前已經(jīng)同意授權(quán)長期訂閱,則不會再出現(xiàn)彈窗詢問。>>> 查看開發(fā)文檔


2. iOS 和 Android SDK 支持微博登錄。


查看 iOS 開發(fā)文檔

查看 Android 開發(fā)文檔

如果你有其他需求,可以通過文末

藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

高手如何從零開始設(shè)計 UI 界面?這個實戰(zhàn)案例告訴你!

周周

這是 UI 設(shè)計師 Diana Malewicz 的一篇 UI 界面設(shè)計的分享。怎樣在保證基本的可用性和易用性的同時,讓界面柔和、富有親和力?如何在讓用戶愉悅的同時,還能用設(shè)計取悅自己?Diana 的方法談不上有多神奇,但是讓人眼前一亮,值得借鑒。

真的關(guān)注趨勢變化,你會清晰的感受到,視覺效果和設(shè)計技巧一直在變……它們一直是設(shè)計師們的話題中心。但是這篇文章并不打算討論這個事兒,無論漸變是否流行,新擬物化的可訪問性是否不足,都不在今天的討論范圍內(nèi)。

對于各種風(fēng)格、方法,我的觀點始終是:做出來的設(shè)計要可用,有用,有良好的可訪問性,用戶可以輕松理解,就行了。不過,我更樂于從趨勢中獲得樂趣,而不是將它視作為約束,如果每個界面看起來都是一樣的,那該是一件多么無聊的事情啊。

關(guān)鍵在于,要讓產(chǎn)品的視覺樣式和你的用戶群體匹配起來。

我個人非常喜歡漂亮的漸變和微妙的陰影,這樣的設(shè)計常常顯得魅力非凡。這種自然的過渡和光影的變化,非常貼合我們對于現(xiàn)實世界的感知,這就是為什么這樣的設(shè)計能夠俘獲大量沒有技術(shù)背景的用戶的心——因為它們看起來友好,并且易于理解。

在這篇文章當(dāng)中,我將分享如何將 UI 效果設(shè)計得出彩又友好,讓視覺效果柔和又讓人感覺舒適。本文圍繞著一個「面向年輕人的金融 APP」虛擬設(shè)計項目來進(jìn)行展示。

下面我們開始吧!

視覺層次的一致性

怎么讓我們的設(shè)計看起來柔和圓潤呢?下面開始準(zhǔn)備工作:

1、選擇想要使用的配色(想想使用柔和的粉彩構(gòu)成的背景主色調(diào),搭配一個給人精致感的次要色,以及一個抓人注意力的強調(diào)色。)

2、選擇合理的字體(我用的是 Brandon Grotesque,這是我最喜歡的字體,它足夠友好,能夠營造有趣的氛圍,且具有良好的可讀性)。接下來,給字體設(shè)計不同大小和字重(最好不超過5種不同的樣式)。其中,標(biāo)題字體應(yīng)該較大,正文字體較小,最小的字體用于細(xì)節(jié)呈現(xiàn)。注意,盡量不要在長句子里面使用全大寫。

3、確定你所需要的陰影的高程(Height)和模糊度。

4、如果使用的是圖標(biāo),確定使用填充樣式還是描邊樣式。盡量不要混用。

至此,一個小型的設(shè)計系統(tǒng)就已經(jīng)確定了。挺好看的!

uni-app提交表單到后端,接收表單數(shù)據(jù)

seo達(dá)人

要想接收表單數(shù)據(jù),首先要在表單進(jìn)行數(shù)據(jù)的綁定,我們可以使用v-model="keyword"進(jìn)行綁定。


然后在js獲取這個綁定的值。


index.vue


<template>

<view>

   <view class="search-con">

           <view class="form-con">

           <form class="search-form">

               <input type="text" v-model="keyword" @tap="showsearchbtn" focus="true"/>

               <button form-type="submit" hover-class='none' @tap="keyword">提交</button>  

           </form>

           </view>

   </view>

</view>

<template>

js


<script>

export default {

   data() {

       return {


           }

       },

       methods: {

           keyword(e){

               // 獲取表單值

               let kw = this.keyword;

               console.log(kw);

           }

       }

   }

</script>

Author:TANKING

Web:http://www.likeyun.cn

Date:2020-8-13

WeChat:face6009

藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

滴滴出行小程序I18n最佳實踐

seo達(dá)人

背景

I18n = Internationalization,國際化,因為單詞由首末字符i/n和中間18個字母組成,簡稱i18n。對程序來說,就是要在不修改內(nèi)部代碼的情況下,能根據(jù)不同語言及地區(qū)顯示相應(yīng)的界面,以支持不同語言的人順利使用程序。

業(yè)務(wù)背景

互聯(lián)網(wǎng)行業(yè)進(jìn)入下半場,精細(xì)化運營是關(guān)鍵。多語言支持能讓產(chǎn)品更好地服務(wù)境內(nèi)的其他語言用戶,也為產(chǎn)品出海打下基礎(chǔ),隨著 WeChat/Alipay 的全球化,你的小程序是否做好準(zhǔn)備了呢?

4月初,滴滴出行小程序團隊接到支持英文版的需求,預(yù)計上線時間為6月上旬。當(dāng)前滴滴出行小程序集成的眾多業(yè)務(wù)線和各種公共庫,展示給用戶的有前端硬編碼的靜態(tài)文本和服務(wù)端下發(fā)的文案,都要同步接入多語言??紤]到小程序當(dāng)前的體量,光文本收集、語料翻譯、npm package 支持,聯(lián)調(diào),測試,溝通成本等等,并且前端開發(fā)只投入1.5人力的情況下,時間是蠻緊迫的,但是我們抗住了壓力,最終英文版滴滴出行小程序如期上線,截止目前運行穩(wěn)定,用戶反饋良好,得到了超出預(yù)期的收益。

當(dāng)然這一切得益于各團隊同學(xué)的工作,和各團隊的通力配合,更得益于部門技術(shù)團隊 Mpx框架優(yōu)雅的多語言能力支持。劃重點來咯,所謂工欲善其事必先利其器,如果你的公司業(yè)務(wù)需要開發(fā)小程序,也需要接入多語言,那么請搬好小板凳,我們來看一下小程序框架 Mpx 是如何優(yōu)雅支持多語言能力。相信看完這篇,可以幫助你認(rèn)識 Mpx(https://github.com/didi/mpx) ,加深對框架的理解,最終利用 Mpx 框架迭代小程序,年終獎多出那部分可以打賞一下作者,買杯咖啡哈(偷笑.jpg)

以下是滴滴出行小程序的中英文版本對比:

滴滴出行微信小程序i18n

也歡迎大家在微信/支付寶里搜索滴滴出行小程序,實際使用感受下。PS:切換語言的方法是,打開小程序,點擊左上角用戶頭像,進(jìn)入側(cè)邊欄設(shè)置頁面,點擊切換中英文即可體驗。

技術(shù)背景

在上述業(yè)務(wù)背景下,Mpx 框架——滴滴自研的專注提升小程序開發(fā)體驗的增強型小程序框架,內(nèi)建 i18n 能力便提上日程。

與 WEB 不同,小程序(本文以微信小程序為例)運行環(huán)境采用雙線程架構(gòu)設(shè)計,渲染層的界面使用 WebView 進(jìn)行渲染,邏輯層采用 JSCore 線程運行 JS腳本。邏輯層數(shù)據(jù)改變,通過 setData 將數(shù)據(jù)轉(zhuǎn)發(fā)到 Native(微信客戶端),Native 再將數(shù)據(jù)轉(zhuǎn)發(fā)到渲染層,以此更新頁面。由于線程間通信成本較高,實際項目開發(fā)時需要控制頻次和數(shù)量。另外小程序的渲染層不支持運行 JS ,一些如事件處理等操作無法在渲染層實現(xiàn),因此微信官方提供了一套腳本語言 WXS ,結(jié)合 WXML ,可以構(gòu)建出頁面的結(jié)構(gòu)(不了解 WXS ?戳這里)。

基于小程序的雙線程架構(gòu)設(shè)計,實現(xiàn) i18n 存在一些技術(shù)上的難點與挑戰(zhàn),由于 Mpx 框架早期構(gòu)建起來的強大基礎(chǔ),最終得以優(yōu)雅支持多語言能力,實現(xiàn)了和vue-i18n 基本一致的使用體驗。

使用

在使用上,Mpx 支持 i18n 能力提供的 API 與 vue-i18n 大體對齊,用法上也基本一致。

模板中使用 i18n

編譯階段通過用戶配置的 i18n 字典,結(jié)合框架內(nèi)建的翻譯函數(shù)通過 wxs-i18n-loader 合成為可執(zhí)行的 WXS 翻譯函數(shù),并自動注入到有翻譯函數(shù)調(diào)用的模板中,具體調(diào)用方式如下圖。

// mpx文件 <template> <view> <view>{{ $t('message.hello', { msg: 'hello' })}}</view> 

<!-- formattedDatetime計算屬性,可基于locale變更響應(yīng)刷新 --> <view>{{formattedDatetime}}</view> </view> </template>

JS 中使用 i18n

通過框架提供的 wxs2js 能力,將 WXS 翻譯函數(shù)轉(zhuǎn)換為 JS 模塊注入到 JS 運行時,使運行時環(huán)境中也能夠調(diào)用翻譯函數(shù)。

// mpx文件 <script> import mpx, { createComponent } from '@mpxjs/core' createComponent({ 

ready () { // js中使用 console.log(this.$t('message.hello', { msg: 'hello' }))

// 局部locale變更,生效范圍為當(dāng)前組件內(nèi) this.$i18n.locale = 'en-US' setTimeout(() =>

{ // 全局locale變更,生效范圍為項目全局 mpx.i18n.locale = 'zh-CN' }, 10000)

}, computed: { formattedDatetime () { return this.$d(new Date(), 'long') } } }) </script>

定義 i18n 字典

項目構(gòu)建時傳入 i18n 配置對象,主要包括語言字典和默認(rèn)語言類型。

new MpxWebpackPlugin({ i18n: { locale: 'en-US',

// messages既可以通過對象字面量傳入,也可以通過messagesPath指定一個js模塊路徑,

在該模塊中定義配置并導(dǎo)出,dateTimeFormats/dateTimeFormatsPath和numberFormats/numberFormatsPath同理

messages: { 'en-US': { message: { hello: '{msg} world' }

}, 'zh-CN': { message: { hello: '{msg} 世界' } } }, // messagesPath: path.resolve(__dirname, '../src/i18n.js') } })

如果是通過 Mpx 提供的 cli 工具生成的項目,這部分配置會在 mpx.conf.js 文件中,不光可以直接內(nèi)聯(lián)寫在該文件中,也可以指定語言包的路徑。

以上,Mpx 的 i18n 方案接入成本低,使用優(yōu)雅,體驗優(yōu)秀。直觀感受可參考下面 mpx i18n demo :https://github.com/didi/mpx/t...

方案

Mpx框架的 i18n 支持幾乎完全實現(xiàn)了 vue-i18n 的全部能力,下面我們來詳細(xì)說明 Mpx 框架 i18n 能力的具體實現(xiàn)。

方案探索

基于小程序運行環(huán)境的雙線程架構(gòu),我們嘗試了不同方案,具體探索過程如下:

方案一:基于 Mpx 框架已提供的數(shù)據(jù)增強能力 computed 計算屬性,來支持 i18n 。該方案與 uniapp 的實現(xiàn)思路相似(后文會進(jìn)行對比分析),存在一定不足,包括線程通信帶來的性能開銷和for循環(huán)場景下的處理較復(fù)雜等,最終放棄。
方案二:基于 WXS + JS 支持 i18n 適配。通過視圖層注入 WXS,將 WXS 語法轉(zhuǎn)換為 JS 后注入到邏輯層,這樣視圖層和邏輯層均可實現(xiàn) i18n 適配,并且在一定程度上有效減少兩個線程間的通信耗時,提高性能。

從性能和合理性上考慮,我們最終采用了方案二進(jìn)行 Mpx 的 i18n 方案實現(xiàn)。

mpx-i18n內(nèi)部流程示意圖

Mpx i18n 架構(gòu)設(shè)計圖

由于各大小程序平臺上,WXS 語法和使用均存在較大差異,因此該方案實現(xiàn)過程中也存在一些技術(shù)上的難點,這些難點基于 Mpx 框架的早期構(gòu)建起來的跨平臺能力也一一得以攻克,具體如下。

實現(xiàn)難點

WXS 在模板中運行的跨平臺處理

WXS 是運行在視圖層中的 JS,可以減少與邏輯層通信耗時,提高性能。因此 Mpx 框架在迭代初期便已支持在模板和 JS 運行環(huán)境使用 WXS 語言,并且針對小程序跨平臺 WXS 語法進(jìn)行抹平。
在模板中,Mpx 自定義一個 webpack chunk template,以微信 WXS 作為 DSL,利用 babylon 將注入的 WXS 轉(zhuǎn)化成 ast,然后遍歷 ast 節(jié)點,抹平各大平臺對 WXS 語法的處理差異,輸出各平臺可以識別的類 WXS 文件。目前主要支持微信(WXS)、支付寶(sjs)、百度(filter)、QQ(qs)、頭條(sjs)等小程序平臺。

WXS 在邏輯層運行的跨平臺處理

WXS 與 JavaScript 是不同的語言,有自己的語法,并不和 JavaScript 一致。并且 WXS 的運行環(huán)境和其他 JavaScript 代碼是隔離的,WXS 中不能調(diào)用其他 JavaScript 文件中定義的函數(shù),也不能調(diào)用小程序提供的API。
因此在邏輯層,Mpx 將注入的 WXS 語法轉(zhuǎn)化為 JS,通過 webpack 注入到當(dāng)前模塊。例如 WXS 全局方法 getRegExp/getDate 在 JS 中是無法調(diào)用的,Mpx將它們分別轉(zhuǎn)化成 JS 模塊,再通過 webpack addVariable 將模塊注入到 bundle.js 中。
同理,Mpx 會將編譯時注入的 i18n wxs 翻譯函數(shù)和 i18n 配置對象掛載到全局 global 對象上,利用 mixin 混入到頁面組件,并監(jiān)聽 i18n 配置對象,這樣JS和模板中即可直接調(diào)用 i18n 翻譯函數(shù),實現(xiàn)數(shù)據(jù)響應(yīng)。

以上便是 Mpx 框架在小程序中支持 i18n 能力的技術(shù)細(xì)節(jié),由于 WXS 是可以在視圖層執(zhí)行的類 JS 語法的一門語言,這樣就減少了小程序邏輯層和視圖層的通信耗時,提升性能。但是由于實現(xiàn)依賴類 WXS 能力,以及 WXS 執(zhí)行環(huán)境的限制,目前模板上可直接使用的翻譯函數(shù)包括 $t/$tc/$te ,如果需要格式化數(shù)字或日期可以使用對應(yīng)的翻譯函數(shù)在 JS 中 Mpx 提供的計算屬性中實現(xiàn)。

輸出 web 時使用 i18n

Mpx同時還支持轉(zhuǎn)換產(chǎn)出H5,而 Mpx 提供的 i18n 能力在使用上與 vue-i18n 基本一致,輸出 web 時框架會自動引入 vue-i18n,并使用當(dāng)前的 Mpx i18n 配置信息對其進(jìn)行初始化,用戶無需進(jìn)行任何更改,即可輸出和小程序表現(xiàn)完全一致的 i18n web 項目。

對比

上面分析了 Mpx 框架的 i18n 方案的技術(shù)細(xì)節(jié),我們來看下和其他方案的對比,主要是和 uniapp - 基于 Vue 編寫小程序的方案,和微信官方的方案,兩者提供的 i18n 支持與Mpx的對比有何優(yōu)劣。

uniapp的方案

uniapp 提供了對 i18n 能力的支持,是直接引入vue-i18n。但小程序中無法在模板上調(diào)用 JS 方法,本質(zhì)上是利用計算屬性 Computed 轉(zhuǎn)換好語言,然后利用模板插值在小程序模板中使用。

模板中:
<view>{{ message.hello }}</view>

JS里需要寫:

 computed: {  
    message () { return { hello: this.$t('message.hello') }
    }
  }

因此該方案存在一個性能問題,最終的渲染層所看到的文本還是通過 setData 跨線程通信完成,這樣就會導(dǎo)致線程間通信增多,性能開銷較大。

并且,早期這種形式使用成本較高,后來 uniapp 也針對其做過優(yōu)化,實現(xiàn)了可以在模板上寫 $t() 的能力,使用上方便了不少。

這個 t() 的實現(xiàn)是在編譯時候識別到t 就自動替換,幫你替換成一個 uniapp 的 computed 數(shù)據(jù),因此數(shù)據(jù)部分還是和之前一樣要維護(hù)兩份。尤其是模板上的for循環(huán),即使 for 里只有一個數(shù)據(jù)要被轉(zhuǎn)換,整個列表都要被替換成一個計算屬性,在線程間通信時進(jìn)一步加大了性能開銷。

微信官方的方案

微信小程序本身也提供了一個 i18n 的方案,倉庫地址是:wechat-miniprogram/miniprogram-i18n 。

這個方案從 i18n 本身的實現(xiàn)來講和Mpx框架的設(shè)計是類似的,也是基于 WXS 實現(xiàn)(英雄所見略同?。?。但因為周邊配套上沒有完整的體系,整體使用體驗上就也略遜于基于Mpx框架來開發(fā)支持 i18n 的國際化小程序了。

主要的點就是,官方提供的方案,要基于 gulp 工具進(jìn)行一次額外構(gòu)建,同時在JS中使用時候還要額外引入一個 behavior 去讓JS中也可以使用翻譯能力。

而Mpx框架通過一次統(tǒng)一的Webpack構(gòu)建產(chǎn)出完整的內(nèi)容,用戶無需擔(dān)心語言包更新后忘記重新構(gòu)建,在JS中使用的時候不光更方便,而且語言信息還是個響應(yīng)式的,任何組件都可以很方便地監(jiān)聽語言值的變化去做一些其他的事情。

最后,Mpx的 i18n 方案對比微信官方的方案還有個巨大的優(yōu)點,結(jié)合Mpx的跨平臺能力,能實現(xiàn)均以這個方案,一套代碼產(chǎn)出支持微信/支付寶/百度/QQ/頭條多個平臺的支持 i18n 的小程序。

總結(jié)

Mpx 框架專注小程序開發(fā),期望為開發(fā)者提供最舒適的開發(fā)體驗,有眾多優(yōu)秀的功能特性,幫助開發(fā)者提效。本文介紹的是其內(nèi)置的 i18n 能力,通過對比分析得出相比其他框架方案在使用成本和性能等方面有明顯的優(yōu)勢,歡迎各位有相關(guān)需求的同學(xué)進(jìn)行體驗嘗試。

未來 Mpx 還會持續(xù)迭代優(yōu)化,提供更多更好的能力幫助小程序開發(fā)者提效。在使用過程中遇到任何問題,歡迎大家在 Git 上提 issue,團隊成員會及時響應(yīng)。同時也鼓勵大家一起為開源社區(qū)做貢獻(xiàn),參與到 Mpx 共建中來,為小程序技術(shù)發(fā)展添磚加瓦。

Git地址 [https://github.com/didi/mpx]
Mpx文檔 [https://mpxjs.cn/]

歡迎技術(shù)交流與反饋,順便star一下鼓勵開源項目貢獻(xiàn)者,我們將持續(xù)發(fā)力貢獻(xiàn)社區(qū)。

附:以往Mpx文章鏈接
滴滴開源小程序框架Mpx - https://mpxjs.cn/articles/1.0.html
滴滴小程序框架Mpx發(fā)布2.0,支持小程序跨平臺開發(fā),可直接轉(zhuǎn)換已有微信小程序 - https://mpxjs.cn/articles/2.0.html
小程序開發(fā)者,為什么你應(yīng)該嘗試下MPX - https://mpxjs.cn/articles/mpx1.html
Mpx 小程序框架技術(shù)揭秘 - https://mpxjs.cn/articles/mpx2.html

滴滴出行小程序體積優(yōu)化實踐 - https://mpxjs.cn/articles/size-control.html

藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

日期排版沒靈感?我總結(jié)了10套排版案例

資深UI設(shè)計者

版式設(shè)計在我們的設(shè)計中是非常重要的技能,無論是UI設(shè)計還是平面設(shè)計,都會運用到版式設(shè)計相關(guān)的知識,在版式設(shè)計中最常見的就是圖文排版、文文排版。一張圖片一段文案在不同的需求情況下我們都可以排版出很多種樣式,每一種樣式展現(xiàn)出來給人的感覺也是不一樣的,美的排版總是會使人眼前一亮,也會使整體的設(shè)計更耐看。

排版也是會根據(jù)重要程度劃分層級,我們都知道主題文案都需要醒目,讓人一眼就能看到,這樣才能達(dá)到宣傳的作用,當(dāng)然僅僅只是展示主題文案也是遠(yuǎn)遠(yuǎn)不夠的,達(dá)到主題排版,主圖排版,小到副標(biāo)題排版,我們都需要精心的排版,還可以更精細(xì)到小到輔助文案以及圖形的排版,而今天我們就來看一下日期這樣的文案我們可以怎么排版呢?

日期在一些重要的活動中也是比較重要的信息,比如展會時間,我們需要突出時間,不能用極小的文字排版在角落,用戶不注意的地方,這樣會給人一種焦慮的情緒,既然是展會活動,那么用戶關(guān)心的是展會的主題是什么?活動時間是什么時候?活動地址在什么地方?所以這些重要的信息就需要重要突出。而在一些做紀(jì)念性的日期我們就可以小化(例如我自己記錄自己的學(xué)習(xí)打卡練習(xí))

案例分享

我們常見的日期有年、月、日、時、分、秒,接下來我們就通過對日期的展現(xiàn)做一些不同的排版方式,通過與日期的普通排版方式做對比,我們就可以看出微小的日期排版對整體的設(shè)計展現(xiàn)也是有很大影響的。

簡單的日期排版我們通常就只是將年月日對齊排版就算完成了,但是這樣的排版方式會影響整體畫面的美觀,我們對于小文案也需要花一定心思去整理以及排版出更精細(xì)的樣式,這樣給用戶的感覺就會覺得你的每一步設(shè)計都是用心設(shè)計的,并且為了整體的美觀,我們 也不得不從細(xì)微之處出發(fā)。

日期排版01

例如下面對于日期的排版,TIME這個文案有時候我們也可以去掉,因為用戶看到時間就會明白這是什么,在一定的情況下也是可以去掉的,當(dāng)然有時候為了整體頁面的展示效果,我們也可以加上,便于排版,左邊只是將年、月、日并排,時間節(jié)點作為一個點排列,下面的文案我們可以根據(jù)實際情況選擇一些特殊的提示文案做裝飾

而通過對左邊簡單的日期排版進(jìn)行改版后,我們會發(fā)現(xiàn)右邊的日期排版會顯得更美觀,排版更精妙,也有更多的細(xì)節(jié)之處,例如2020后緊接著年(YEAR)的提示,08后面標(biāo)識是周六(SAT.),年月日和時間節(jié)點也同時做了層次區(qū)分,這樣更有利于閱讀。

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版02

對于上面同樣的日期文案,我們還可以排出右邊不同的樣式,整體采用橫排的方式,將年、月、日同排,時間段縮小處理,使時間之間也能有層次感

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版03

下面的日期是年、日期段、時間段的組合,左邊的排版顯然是比較常規(guī)的分層排版,卻主要突出了2020,而一般時間我們在這一年將要發(fā)生的事,我們更關(guān)心的是哪一天那個時間點,而右邊的排版主要突出時間段/點,更能讓用戶看到自己關(guān)心的事件。

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版04

下面這一組日期是有不同年份的,所以我們在排版的時候可以突出顯示年份,這樣在排版的時候就可以注意層級關(guān)系,排除層次感

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版05

這一組日期是比較簡單的,只有一個時間點,沒有時間段,如果直接按照左邊這樣的日期排版方式,顯然整體看著就很單薄,把這樣的日期排版方式融入到版式整體畫面中,也一定會顯得毫無設(shè)計感,而我們只需要將簡單的日期經(jīng)過簡單的排版,從年、月、日、時,從上至下依次排列,這樣就可以顯得信息有層次感,并且閱讀也不會有困惑,加上精致的icon做裝飾,這樣的日期排版就顯得更耐看。

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版06

這一組日期也很簡單,只有月、日、時,都是屬于時間段的信息,通過分析這個時間,月都是10月,是相同的,所以我們可以將月份單獨拿出來,作為共用信息,這樣就可以精簡畫面重復(fù)的信息,依然采用月、日、時這樣從上至下的順序排列,時間小化,但是利用色塊突出,也不會柔化時間點的閱讀,再通過一條線的連接,將斜線和時間icon相連,形成一個有趣味性的時間裝飾,這樣的排版更容易吸引用戶的眼球

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版07

下面的日期也是年、日期段、時間段的組合,和第三個日期排版的案例類似,所以存在同樣的問題,左邊的排版顯然是比較常規(guī)的分層排版,卻主要突出了2020,右邊改版后,我們同樣弱化年份(2020),提取相同的月份(8月),突出顯示日期

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版08

這一個和第五個也是一樣的,左邊都是年、月、日、時的時間點,沒有時間段,第五個我們是采用豎排的方式,而這里我們改版后采用的是橫排的方式,突出顯示月、日,讓整體的層次更加清晰

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版09

下面這一組時間改版,我們主要采用錯位豎排的方式,像這樣的排版方式,我們可以多用于一些比較有設(shè)計感或者比較唯美的畫面中,顯得每一個小的點,都有用心設(shè)計,并且也符合這樣的氣質(zhì)

日期排版沒靈感?我總結(jié)了10套排版案例

日期排版10

這一組日期只有年、月、日。左右兩邊的排版看起來很相似,但是通過對細(xì)節(jié)的調(diào)整,例如2020的弱化,間距的把控,星期幾的友好提示,這樣就會使整個日期排版看起來更精細(xì)、耐看。

日期排版沒靈感?我總結(jié)了10套排版案例

案例實操

我們通過對上面日期的排版分析和總結(jié),會發(fā)現(xiàn)小小的日期排版也是很關(guān)鍵也很追重要的,所以下面我們將通過一張海報案例,來真正體現(xiàn)日期排版對整體畫面的重要性。

海報主題是選擇的立秋,雖然立秋以及過去兩天了,但是我又學(xué)會了這個立秋新的排版技巧,所以我想將這一技巧分享出來,但是這里就不詳細(xì)講解海報的設(shè)計過程了,主要還是分享日期排版對整體畫面的影響作用

這里就簡單的說一下海報設(shè)計的思路,海報主題是立秋,所以我現(xiàn)在一片黃色的楓葉作為畫面的主視覺,畫面整體體現(xiàn)秋天的感覺,一片黃燦燦的畫面,給人感覺就像是秋天到了,畫面元素簡約,只選擇了一片楓葉加上它的投影,體現(xiàn)空間感,主題文案排版在楓葉上,與楓葉融為一體,這樣用戶得分第一視覺就會被主圖吸引,同時看到主題相關(guān)文案,下面的其它文案通過從|秋|字垂落的豎線,分別右對齊以及左對齊,顯得畫面規(guī)整

日期排版沒靈感?我總結(jié)了10套排版案例

第一張海報的日期排版就是采用普通常規(guī)的排版方式,我們會發(fā)現(xiàn)這樣的日期排版方式,在整個畫面中會顯得有點僵硬,并且左右兩邊不對稱的關(guān)系,會顯得右邊偏輕,使畫面的平衡感缺失,也正是日期的排版太粗糙的原因,導(dǎo)致整張海報的精細(xì)度大減。

日期排版沒靈感?我總結(jié)了10套排版案例

樣機效果

日期排版沒靈感?我總結(jié)了10套排版案例

我們保持其它元素以及排版都一致,只改變?nèi)掌诘呐虐娣绞?,我們就會發(fā)現(xiàn)右邊的海報整體給人的感覺更精美,平衡感更強烈,所以我們在做設(shè)計的時候不要忽略每一個點。將每一個點都細(xì)心的設(shè)計,這樣的作品才會更耐看。

總結(jié)

版式設(shè)計是我們設(shè)計中最基本的知識,我們在做設(shè)計的時候,通常會注意主題主圖的排版,而經(jīng)常會忽略哪些不是很重要的信息,但是我們在分析文案信息的時候,也需要考慮整體設(shè)計的目的,有時候日期信息也是非常重要的信息,所以我們在做排版的時候,也需要認(rèn)真考慮日期與整體需求的關(guān)系,并且日期排版風(fēng)格也會影響整體的氣質(zhì)。


文章來源:優(yōu)設(shè)    作者:設(shè)計小余

藍(lán)藍(lán)設(shè)計sillybuy.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 平面設(shè)計服務(wù)

日歷

鏈接

個人資料

存檔