以前已經發過關於CMUI的介紹,還不瞭解的小夥伴能夠點擊這裏。今天要爲你們放出的是CMUI中部分功能的使用包以及上手指南。須要上手體驗的請移步文章底部。因爲涉及內容較多,我儘可能用最簡短的語言來向你描述使用方法,最好的方式仍是你直接上手嘗試。javascript
本次放出的內容包括:css
cyan:CMUI樣式庫Cyan的完整版html
component:CMUI組件庫中和佈局相關的list組件(基於Vue)vue
styleInit:CMUI方法庫中的動態樣式java
針對人羣:CMUI的開發主要針對的人羣是配有設計師,可是沒有本身的設計標準或者沒有和設計標準匹配的UI框架的公司或團隊。gulp
和UI庫的區別:大部分UI庫提供開箱即用的UI設計,一般適用於我的項目或中臺系統,CMUI使用描述型樣式來匹配設計稿,同時提供主題庫進行開箱即用。bootstrap
和描述型庫的區別:常見的描述型庫如Tailwind,bulma等都是對css的徹底抽取,幾乎就是使用class重寫一遍CSS,不管從代碼量,記憶量和上手難度都很高。Cyan儘可能使用減法對CSS進行抽取,你用過一次就知道它有多簡單,你甚至不須要看文檔。api
cmui依賴Vue而且採用rem佈局,同時須要動態樣式的支持,所以你須要在使用前進行初始化。數組
Cyan採用SASS編寫,你可使用你喜歡的編譯工具對其進行編譯,建議使用koala或gulp,配合autoprefixer編譯爲CSS並插入你的HTML中。瀏覽器
<link rel="stylesheet" type="text/css" href="CMUI/style/cmuiMobile.css">
<script charset="utf-8" src="vue.js"></script><!--組件依賴VUE-->
<script charset="utf-8" src="lodash.js"></script><!--組件依賴lodash-->
<script charset="utf-8" src="CMUI/lib/index.umd.min.js"></script><!--加載組件庫-->
<script charset="utf-8" src="CMUI/lib/styleInit.umd.min.js"></script><!--加載動態初始化文件-->
<script charset="utf-8"> styleInit()//初始化rem並添加動態樣式支持 </script>
複製代碼
你也能夠在你的項目裏引入源文件。
import vue from 'vue'
import _ from 'lodash'
import 'CMUI/cyan/cmuiMobile.scss'
import styleInit from 'CMUI/es/styleInit.es.js'
import cmui from 'CMUI/es/index.es.js'
vue.use(cmui)
styleInit()
複製代碼
cyan封裝了6種常見佈局,幾乎能夠知足全部的佈局要求。
使用方式和bootstrap徹底相同,12列用span,15列用col
.container>.row>.span3*4
.container>.row>.col3*5
複製代碼
網格間距默認響應式20px,如需修改請修改_variables.scss中的$container_padding
和網格佈局徹底相同,網格間無間距
.box-container>.box-row>.box-span3*4
.box-container>.box-row>.box-col3*5
複製代碼
<div class="ratio-container">
<div>這個DIV以1:1展現</div>
</div>
複製代碼
<div class="ratio-container" ratio="2/3">
<div>這個DIV以2:3展現</div>
</div>
複製代碼
製做圖片提示
<div class="ratio-container">
<img src="">
<div class="mask top-a padding20 text-white">這是一段文字</div>
</div>
<div class="ratio-container">
<img src="">
<div class="mask top-a padding20 mask-white">這是一段文字</div>
</div>
複製代碼
<div class="img-container">
<img src="" alt="">
</div>
複製代碼
拉伸 | 填充 | 邊框 | 圓角 | 位置 |
---|---|---|---|---|
full | flex-x/flex-y | border | round/radius | top/left/bottom/right |
直接將class到img-container後面便可,值得注意的是這些class能夠隨意組合甚至所有組合到一塊兒。
<!--讓圖片在容器的左上角顯示-->
<div class="img-container top left">
<img src="" alt="">
</div>
<!--製做一個直徑爲50px的圓形容器並放置圖片,可用於製做頭像-->
<!--使用img-container並手動設置行內的width是一個常見的操做-->
<div class="img-container round" style="width:50px">
<img src="" alt="">
</div>
複製代碼
<div class="flex-container">
這裏填寫內部結構,橫向排列
</div>
<div class="flex-container-col">
這裏填寫內部結構,縱向排列
</div>
複製代碼
默認的佈局爲between結構可選around,但你幾乎不會用到。
間隔類型選擇 | 順序翻轉 | 位置控制 | 子節點橫縱向填滿 |
---|---|---|---|
round/between | reverse | top/left/right/bottom/center | vfull/hfull |
子節點位置:爲子節點添加top/left/right/bottom/center進行精確控制
子節點比例:爲子節點添加flex1~flex5,來控制它佔據剩餘空間的比例
橫向滾動
<div class="scroll-container"></div>
縱向滾動,一般須要設置高度
<div class="scroll-container"></div>
複製代碼
demo:
<div class="scroll-container">
<div style="width:100px;" v-for="item in imgUrls">
<div class="img-container">
<img :src="item" alt="">
</div>
</div>
</div>
複製代碼
列表樣式可建立等分的行列結構,一般用於製做底部導航,圖標導航,廣告位,商品列表等
<div class="list">
<div class="list-item"></div>
<div class="list-item"></div>
...
</div>
複製代碼
輔助class
控制列數 | 控制邊框 | 位置控制 |
---|---|---|
list-col{num} num的範圍爲1~6 | border | radius |
建立三列 帶有邊框 外層邊框圓角的列表
<div class="list list-col3 border radius">
<div class="list-item"></div>
<div class="list-item"></div>
...
</div>
複製代碼
提示:
列表組件支持無限嵌套,自定義分組,自定義間距和自定義色彩邊框色彩
props:
屬性名稱 | 類型 | 默認值 | 用途 | 說明 |
---|---|---|---|---|
col | Number | [Nmuber] | 1 | 設置列數 | 列數,若是是數字表示平分爲N列,若是是數組,數組長度表示列數,數組中的數字表示每列所佔比例 |
space | Number | 0 | 設置間距 | 每列之間的間距,對應750設計稿中的值 |
border | Boolean | String | false | 設置邊框 | 若是是Boolean類型表示是否使用默認值設置邊框,若是是String類型,表示邊框的顏色值 |
輸入
<template>
<cmui-list :col="col" :space="space" :border="border">
<cmui-list-item v-for="i in 8">
<cmui-list :col="3" :border="true">
<cmui-list-item v-for="i in 3">{{i}}</cmui-list-item>
</cmui-list>
</cmui-list-item>
</cmui-list>
</template>
<script>
export default {
data() {
return {
col:[2,3,4,5],//設置爲4列,比例爲2:3:4:5
space:22,//間距爲22,對應到375的顯示上爲11px
border:'#e2b453'//設置邊框顏色爲#e2b453
}
}
}
</script>
複製代碼
輸出
使用提示:
須要在列表內展現大量數據可使用虛擬列表,僅渲染在可視區內的數據
<template>
<cmui-virtual-list height="500px" :listData="data" v-slot="xxx">
<div class="borderb padding10">
{{xxx.item.value}}
</div>
</cmui-virtual-list>
</template>
<script> export default { data() { return { data:Array.from({length:10000}).map(faker.lorem.sentences) } } } </script>
複製代碼
輸出
props
屬性名 | 類型 | 默認值 | Description |
---|---|---|---|
listData | Array | [] | 列表所須要的數據 |
bufferScale | Number | 1 | 在可見區域以外的上/下方預渲染比例,避免快速滑動時出現閃爍 |
estimatedItemSize | Number | 150 | 列表項的預估高度,用於預先計算可視區域的顯示項數 |
height | String | 100% | 包裹元素的高度。 |
類名 | 做用 |
---|---|
float-right | 向右浮動 |
float-left | 向左浮動 |
clearfix | 清除浮動 |
類名 | 做用 |
---|---|
pos-r | 設置position爲relative |
pos-a | 設置position爲absolute |
pos-f | 設置position爲fixed |
pos-s | 設置position爲sticky |
類名 | 做用 |
---|---|
vcenter | 絕對定位,水平居中 |
hcenter | 絕對定位,垂直居中 |
fullcenter | 絕對定位,徹底居中 |
abs-{position} | 在某個方向上絕對定位,你可使用top,right,bottom,left,full,center六個值當中的任意一個代替position |
fixed-{position} | 在某個方向上固定定位,你可使用top,right,bottom,left,full,center六個值當中的任意一個代替position |
<!--使用vcenter hcenter fullcenter abs-{position}須要爲外層容器增長pos-r-->
<div class="pos-r">
<div class="vcenter"></div>
<div class="abs-bottom"></div>
</div>
<!--使用fixed-{position}能夠直接使用-->
<div class="fixed-bottom"></div>
複製代碼
類名 | 做用 |
---|---|
overflow-h | 溢出隱藏 |
overflow-xh | 水平方向上溢出隱藏 |
overflow-yh | 垂直方向上溢出隱藏 |
overflow-i | 溢出初始化 有些時候你須要關閉overflow:hidden的時候能夠用到這個class |
<body class="overflow-xh">body不會出現橫向滾動條</body>
複製代碼
類名 | 做用 |
---|---|
dis-b | display:block |
dis-i | display:inline |
dis-n | display:none |
dis-t | display:table |
dis-it | display:inline-table |
<div class="dis-n"></div>
複製代碼
對於padding margin top bottom left right這些樣式咱們採用了動態樣式,會根據你class自動生成並插入動態樣式表,因此直接使用就行了。
結構:
<div class="paddingt24 marginv22 paddingh34 top4 right-n12"></div>
複製代碼
爲何不支持width和height?
在實際開發中width和height會同時使用px或rem,這是設計和交互決定的,咱們沒法判斷你的實際需求。
上面介紹的內容已經徹底能夠解決你佈局的需求,下面咱們將介紹和內容排版有關的用法
_variables中的$colorList定義了7種顏色,這些色彩會同時被繼承到按鈕,文本,背景,表單,徽標等元素。建議你刪除全部的色彩,並根據設計須要從新定義顏色。
色彩系統會繼承到按鈕,表單,文本等多項元素並再次進行翻轉和深淺的拓展,所以每增長一種顏色都會增長大約1k的CSS(gzip後),咱們會在後面的版本的動態樣式中加入對動態色彩的支持。
你能夠直接將你定義的色彩名稱應用到背景,按鈕,徽標,文本,表單。
對於按鈕,徽標,表單,你能夠直接應用到對應元素上
<div class="btn red">按鈕</div>
<div class="badge red">徽標</div>
<input type="checkbox" class="red">
複製代碼
對於文本和背景須要設置前置名稱
<p class="bg-blue text-red">紅色的文本,藍色背景</p>
複製代碼
使用text-{color}的組合來設置文本的顏色,顏色的可取值爲_variables中colorList和grayList的值。
<p class="text-red">紅色的文本</p>
<p class="text-dark">深色的文本</p>
複製代碼
使用fs-{size}或frs-{size}設置文字大小,文本的默認字號是14px
fs-{size}:size的範圍爲10-20;對應表示了已PX爲單位的對應字體大小。
frs-{size}:size的範圍爲20-40之間的偶數;表示了已rem爲單位的對應字體大小。
在實際的交互中縮放的字體大小會極大的影響美感,所以咱們的建議是儘可能使用fs-{size}來保持字體的尺寸,除非你有特殊的須要可使用frs-{size}。
下面兩行文本在375的設備上顯示效果徹底相同,可是在其餘尺寸設備下,frs-30對應的文字會進行縮放
<p class="fs-15">15px的固定大小文字</p>
<p class="frs-30">15px的響應式文字</p>
複製代碼
類名 | 做用 |
---|---|
text-left | 文本居左排列 |
text-right | 文本居右排列 |
text-center | 文本居中排列 |
text-justify | 文本兩端對齊,僅最後一行有效,可是一般用於僅有一行的文本 |
text-nowrap | 強制禁止文本換行,會對flex佈局形成影響 |
text-indent | 段落預留兩個字符的空白 |
類名 | 做用 |
---|---|
text-lowercase | 將文本轉換爲小寫 |
text-uppercase | 將文本轉換爲大寫 |
text-capitalize | 將文本轉換爲駝峯形式 |
類名 | 做用 |
---|---|
text-bolder | 文本加粗 |
text-delete | 文本劃線刪除 |
text-vcenter | 文本垂直居中 |
text-vtop | 在一行文本大小不一的時候,文本垂直居頂部 |
text-vbottom | 在一行文本大小不一的時候,文本垂直居底部 |
提示: 對於排列在一行可是字體大小不一的文本,若是你須要使用text-vtop,text-vcenter,text-vbottom來對齊他們在上中下的位置,你須要爲外層容器添加text-container
類名 | 做用 |
---|---|
text-limit{num} | 不管文本長度如何,限制文本不能超過num行,超出的部分用...顯示 |
text-fixed{num} | 不管文本長度如何,固定文本爲num行,即便文本長度不足,依舊佔用高度 |
默認行高爲1,能夠爲節點添加lh-{num}類來設置行高,num的取值範圍是12~60之間4的倍數
<span class="lh-40">設置行高爲40PX</span>
複製代碼
<span class="btn">button</span>
複製代碼
類名 | 做用 |
---|---|
{color} | 繼承於色彩系統中的$colorList,默承認選值爲red orange yellow green coffee blue purple |
{size} | 繼承於尺寸系統,能夠不寫,默承認選值爲small big |
radius | 爲按鈕增長圓角 |
reverse | 對按鈕進行翻轉 |
light | 進行淺色處理 |
block | 轉換爲block結構,從而使按鈕充滿所在容器,經常使用於登錄等位置 |
修改_variables.scss中的$btn-size-list,你能夠隨意定義名稱和尺寸,內部的轉換關係已經幫你寫好了,你只須要根據設計要求設置三個值,高度,左右的填充,字體大小。在設置的過程當中請注意如下幾點
<div class="btn">默認</div>
<div class="btn blue">藍色</div>
<div class="btn blue reverse">翻轉</div>
<div class="btn blue reverse radius">圓角</div>
<div class="btn blue light">變淡</div>
<div class="btn blue small">small</div>
<div class="btn blue radius">
<i class="baseIcon baseIcon-add"></i>嵌套圖標
</div>
<div class="btn blue radius">
<span class="badge red round">2</span>嵌套徽標
</div>
複製代碼
輸出
將按鈕放置在.btn-group中能夠造成按鈕組,從而輕易製做出分頁樣式
<div class="btn-group">
<div class="btn green radius reverse" v-for="i in 10">{{i}}</div>
</div>
複製代碼
<span class="badge">button</span>
複製代碼
徽標在本質上和按鈕是徹底相同的,所以全部按鈕的使用方法均可以在徽標中使用。
它和按鈕的區別以下
類名 | 做用 |
---|---|
pill | 藥片形狀的標籤 |
round | 圓形標籤 |
square | 正方形形狀的標籤 |
flag | 旗幟形狀的標籤,一般和絕對定位(pos-a)組合使用 |
修改_variables.scss中的$badge-size-list,具體內容參考按鈕的尺寸調整,可使用和btn相同的名稱,但若是值也相同那麼最終它們將以相同的形式出現
這裏僅展現不一樣於btn的使用方法。其餘方法可見btn案例
<div class="badge">默認</div>
<div class="badge green pill">藥片</div>
<div class="badge green round">1</div>
<div class="badge green square">券</div>
<div class="badge green reverse round">1</div>
<div class="badge green reverse square">券</div>
<div class="badge green flag">券</div>
複製代碼
輸出
咱們保留的系統默認樣式,若是須要用Cyan的樣式,將表單元素包裹在.form中便可
<div class="form">
<input type="text">
</div>
複製代碼
如下輔助class用於非radio和CheckBox的元素
類名 | 做用 |
---|---|
focus | 獲取焦點樣式,可手動添加class觸發,也能夠經過點擊的方式觸發 |
radius | 增長圓角 |
disabled | 禁用 |
reverse | 翻轉樣式 |
transparent | 透明樣式 |
<div class="form">
<input type="text" class="radius">
<select name="" id="" class="radius"></select>
</div>
複製代碼
如下class用於radio和CheckBox
類名 | 做用 |
---|---|
disabled | 禁用 |
reverse | 翻轉樣式 |
square | 正方形樣式 |
right | 對號樣式:僅用於radio |
switch | 滑動開關樣式:僅用於CheckBox |
<div class="form">
<p>checkbox 樣式</p>
<input type="checkbox" label="未選中">
<input type="checkbox" checked label="默認選中">
<input type="checkbox" class="reverse" checked label="reverse選中">
<input type="checkbox" class="square" checked label="square選中">
<input type="checkbox" class="square reverse" checked label="square reverse 選中">
<p>switch 樣式</p>
<input type="checkbox" class="switch" checked label="square reverse 選中">
<p>radio樣式</p>
<input type="radio" label="未選中">
<input type="radio" checked label="默認選中">
<input type="radio" class="reverse" checked label="reverse選中">
<input type="radio" class="square" checked label="square選中">
<input type="radio" class="square reverse" checked label="square reverse 選中">
<input type="radio" class="right" checked label="right選中">
<input type="radio" class="right reverse" checked label="right reverse 選中">
</div>
複製代碼
CheckBox以及radio繼承了按鈕的樣式,按鈕的所有輔助class均可以組合使用,這對於實現分類選擇的功能很是適用。
<div class="form">
<input type="checkbox" class="btn radius" label="未選中">
<input type="checkbox" class="btn radius" checked label="默認選中">
<input type="checkbox" class="btn radius light" checked label="light選中">
<input type="checkbox" class="btn radius reverse" checked label="reverse選中">
<input type="checkbox" class="btn radius square reverse" checked label="square reverse 選中">
<input type="radio" class="btn radius reverse" checked label="radio reverse 選中">
</div>
複製代碼
爲表單元素添加文本可使用label標籤,若是同級使用它們會以底部對齊,若是但願居中對齊,能夠將表單元素包裹在label標籤內部,對於CheckBox和radio,更好的辦法是直接調用label屬性。
同級使用,底部對齊
<input type="checkbox"/><label for="">label</label>
嵌套使用,居中對齊
<label for=""><input type="checkbox"/>label</label>
屬性調用,居中對齊
<input type="checkbox" label="label"/>
複製代碼
爲了表單和按鈕同時使用的美觀和編碼統一,表單元素的尺寸繼承於按鈕,所以每當你修改$btn-size-list,表單的尺寸也會同步修改,於此同時你也能夠直接在表單元素上調用你設置的尺寸名稱。
<div class="form flex-container">
<input type="text" class="big"/>
<span class="btn big">submit</span>
</div>
複製代碼
默認色:_variables中的$form-color-base表示表單的默認色,在不添加額外顏色的時候全部表單元素在激活狀態下均使用這個顏色。
色彩庫:表單元素繼承於色彩系統,所以在$colorList中設置的全部色彩你均可以應用到表單上,你能夠有兩種形式來使用
統一設置:全部的表單元素都將變爲red對應的顏色
<div class="form red">
...表單元素
</div>
複製代碼
單獨設置:text設置爲blue對應的顏色,CheckBox設置爲green對應的顏色
<div class="form">
<input type="text" class="blue"/>
<input type="checkbox" class="green"/>
</div>
複製代碼
對於偶爾使用的表單顏色,無需在色彩庫中添加,爲元素添加custom能夠直接使用自定義顏色
<div class="form" style="color:#ab36cc">
使用自己的顏色#23546a
<input type="text" class="custom" style="color:#23546a"/>
從父容器繼承,使用#ab36cc
<input type="text" class="custom"/>
<input type="text" class="custom"/>
</div>
複製代碼
以上爲你們介紹了CMUI的部分功能,但這只是所有框架的冰山一角,因爲Demo和文檔的美化工做以及部分收尾工做還在進行中,所以目前只能向你們提供本文所介紹的功能的安裝包。可是你徹底能夠應用到你的項目裏,解決你的佈局和UI問題,若是你是在使用VUE那麼你可使用本文介紹的全部功能,若是你是使用其餘框架,那麼你能夠直接使用cyan樣式庫和styleInit動態樣式。