国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

基于vue的換膚功能的示例代碼

2019-11-19 15:12:33
字體:
來源:轉載
供稿:網友

最近在做的一個幾月vue的移動端小demo,其中有一塊是實現各個頁面的統一換膚功能的。想著寫一篇文章,來寫一寫實現過程中遇到的一些問題。

項目github地址

項目github地址

一 先看一下實現效果吧

 

設置主題顏色

講道理這么一個功能,我覺得這么幾點可以說下,分步實現:

1. 色值的選取

2. scss 的一些小眾用法(多變量CSS值的批量設置)

3. 全局事件巴士的應用

1 色值的選取和原則

推薦大家看下螞蟻金服的設計指引,里面對常見的交互和界面設計有一套不錯的指引和建議,喜歡看書的也可以看看《寫給大家看的設計書》。

對于界面中的色彩元素,我們一般要保持視覺的連續性,即同一套色彩,盡量采取同一個色環上的色值

 

同一個圓環上的色值作為一套顏色會顯得更協調

所以這里采取ant design 的建議,取某一列色值作為我們的系列主題顏色(具體色值參照它的官網吧~)

 

而在某些特殊場合,需要表現出顏色的差異,如拋硬幣頁面的兩個顏色,

 

2 將格式色值轉換成十六進制顏色值

這里我們通過設置主題顏色的透明度來實現區分不同顏色, 然后我們是通過存儲一個諸如 #123456 的16進制顏色全局變量作為我們主題,這里就需要我們把這樣一個格式的色值轉化成 rgba 表示的顏色值啦,代碼如下,備用

hexToRgba (hex, opacity = 0.3) {  let color = []  let rgb = []  hex = hex.replace(/#/, '')  for (let i = 0; i < 3; i++) {   color[i] = '0x' + hex.substr(i * 2, 2)   rgb.push(parseInt(Number(color[i])))  }  return `rgba(${rgb.join(',')},${opacity})` }

3 scss 的一些小眾用法

我們最終拿到這么一串我們想要的主題顏色

復制代碼 代碼如下:

$colors: #f04134, #00a854, #108ee9, #f5317f, #f56a00, #7265e6, #ffbf00, #00a2ae, #2e3238;

一個很直接的思路,我們需要在各個view頁面里面,去定義我們需要設置主題的元素的顏色,比如文字和icon的color, 以及頭部的background 等。 于是我們在app 里面定義一個color變量,派發到各個view組件里面去,通過這個全局的變量來控制所有路由頁面的顏色,以實現不同的主題效果。

派發的實現在下一個部分說,這里我們先來完成我們的第一步,我們可以容易提取出我們的需求:

4 設置并保存一個全局顏色

界面的小事:

我在首頁直接實現這個功能,項目中我引入了mint-ui 框架(餓了么團隊的移動端框架,稍微遺憾使用感覺沒有element.ui 的舒服), 設置的交互就用彈層 mt-popup 的形式好了,然后直接點擊色塊便設置對應顏色值

<!-- 

主站蜘蛛池模板:
府谷县|
柳州市|
宁南县|
海丰县|
泽库县|
北安市|
周宁县|
江源县|
托里县|
手游|
大荔县|
偃师市|
江达县|
赫章县|
万源市|
洪湖市|
桂东县|
司法|
思南县|
宁国市|
临江市|
怀安县|
德钦县|
昌平区|
青田县|
托克托县|
辽阳县|
邹城市|
蕉岭县|
中超|
邵阳县|
金华市|
桂林市|
修武县|
南和县|
灵川县|
建阳市|
澎湖县|
茶陵县|
宜丰县|
中山市|