有的 jQuery UI 插件都允許開發(fā)人員無縫集成 UI 小部件到他們網(wǎng)站或應(yīng)用程序的外觀和感觀。每個插件通過 CSS 定義樣式,且包含了兩層樣式信息:標(biāo)準(zhǔn)的 jQuery UI CSS 框架 樣式和具體的插件樣式。
jQuery UI CSS 框架提供了語義表示的類,用來表明小部件內(nèi)元素的角色,比如標(biāo)題、內(nèi)容或可點(diǎn)擊區(qū)域。這些在所有的小部件中都是一致的,一個可點(diǎn)擊的 tab(標(biāo)簽頁)、accordion(折疊面板)或 button(按鈕)都有相同的 ui-state-default
class,用來表明它們是可點(diǎn)擊的。當(dāng)用戶鼠標(biāo)懸浮在這些元素上面時,這個 class 就變成 ui-state-hover
,當(dāng)選中這些元素時則變成 ui-state-active
。這些 class 的一致性使得所有部件中具有相似角色或交互狀態(tài)的元素在外觀表現(xiàn)上一致。
CSS 框架樣式封裝在一個單獨(dú)的文件中,名為 ui.theme.css
。這個文件時通過 ThemeRoller 應(yīng)用程序來修改的??蚣軜邮街话绊懲庥^和感觀的屬性,只要是顏色、背景圖像、圖標(biāo)等。所以這些是 "安全的" 樣式,不會影響到插件的功能。這種分隔意味著開發(fā)人員可以通過在 theme.css
文件中修改顏色和圖像來創(chuàng)建一個自定義的外觀和感觀。由于未來的插件或者 bug 修復(fù)將是可用的,這些不通過修改即可與主題一起使用。
由于框架樣式只覆蓋了外觀和感觀,所以還需要包含具體的插件樣式表,這些樣式表包括了所有額外的讓小部件具有功能性的結(jié)構(gòu)樣式規(guī)則,比如尺寸、內(nèi)邊距、外邊距、定位、浮動。每個插件的樣式表位于 themes/base
文件夾內(nèi),且配合插件進(jìn)行命名,比如 "jquery.ui.accordion.css"。這些樣式必須認(rèn)真編輯,因?yàn)樗鼈兣c腳本一起提供了框架樣式的覆蓋。
我們鼓勵所有的開發(fā)人員創(chuàng)建 jQuery 插件,jQuery UI CSS 框架使得最終用戶更容易定制主題和使用插件。
主題化
下面列出了三種主題化 jQuery UI 插件的一般方法:
下載 ThemeRoller 主題:最早的創(chuàng)建主題的方式是使用 ThemeRoller 來生成和下載一個主題。這個應(yīng)用程序?qū)?chuàng)建一個新的 ui.theme.css
文件和一個包含了所有必需的背景圖像及圖標(biāo)精靈的 images
文件夾。這個方法是最早的創(chuàng)建和維護(hù)主題的方式,但是它對 ThemeRoller 中提供的選項(xiàng)限制了自定義。
修改 CSS 文件:為了對外觀和感觀做進(jìn)一步的控制,您可以選擇從默認(rèn)主題(Smoothness)開始,或者從一個由 ThemeRoller 生成的主題開始,然后調(diào)整 ui.theme.css
文件,或者任意一個獨(dú)立插件的樣式表。例如,您可以很容易地調(diào)整所有按鈕的角半徑為不同于其他 UI 組件的值,或者使用自定義設(shè)置為圖標(biāo)精靈改變路徑。通過一點(diǎn)點(diǎn)的樣式范圍,您甚至可以在一個 UI 中同時使用多個主題。為了易于維護(hù),建議只更改 ui.theme.css
文件和圖像。
重新編寫自定義的 CSS:為了最大程度地控制外觀和感觀,可以重新開始編寫每個插件的 CSS,而不使用框架類或者特定的插件樣式表。如果想要的外觀和感觀不能通過修改 CSS 來實(shí)現(xiàn)或者使用高度自定義的標(biāo)記,那么就可以采用這個方法。這個方法要求在 CSS 方面有深厚的專業(yè)知識,且要求手動更新未來的插件。
使用 ThemeRoller、jQuery UI CSS 框架,以及設(shè)計(jì)自定義主題
jQuery UI ThemeRoller
jQuery UI CSS 框架 API
設(shè)計(jì)主題
大家好,圖標(biāo)在UI設(shè)計(jì)中占了一席之地,不同風(fēng)格的圖標(biāo)會影響頁面整體風(fēng)格效果。前面2篇文章分別介紹了《線性圖標(biāo)》、《面性圖標(biāo)》,今天我跟大家分享一下線面結(jié)合圖標(biāo)的一些設(shè)計(jì)樣式。
于Element UI
Element UI是一套采用 Vue 2.0 作為基礎(chǔ)框架實(shí)現(xiàn)的組件庫,一套為開 發(fā)者、設(shè)計(jì)師和產(chǎn)品經(jīng)理準(zhǔn)備的基于 Vue 2.0 的組件庫,提供了配套設(shè)計(jì) 資源,幫助網(wǎng)站快速成型。
Element UI的官方網(wǎng)址是:https://element.eleme.cn/
Element UI預(yù)定義了幾乎所有標(biāo)簽的常規(guī)設(shè)計(jì)樣式,在絕大 部分情況下,你不需要考慮例如按鈕的寬度、高度、背景顏色、文本大小、 文本顏色等樣式規(guī)則,只需要直接使用即可,例如Element UI提供的按 鈕:
按鈕
當(dāng)然,除了按鈕以外,對于表格、表單、表單中各控件、彈出框等常見的 頁面元素,Element UI都設(shè)計(jì)了非常簡約美觀的樣式,例如:
表單
Element UI之所以被稱之為“組件庫”,是因?yàn)樗辉偈褂脗鹘y(tǒng)的HTML 標(biāo)簽,而是自行定制了一系列的標(biāo)簽(包括 標(biāo)簽屬性),以按鈕為例, 其源代碼大概是這樣的:
<el-button type="primary">主要按鈕</el-button>
除了樣式以外,Element UI還提 供了便利的表單控件的驗(yàn)證方式, 執(zhí)行效果例如:
驗(yàn)證
由于Element UI定義了大量的組件,每個組件都有許多屬性,所以,學(xué) 習(xí)Element UI時需要記憶大量的組件特征,這將是一個非常漫長的過程, 通常不建議刻意的死記硬背,應(yīng)該重點(diǎn)關(guān)注Element UI可以做到什么, 例如有哪些樣式,各組件的核心屬性等用法,然后結(jié)合官方文檔 (https://element.eleme.cn/#/zh-CN/component/)進(jìn)行開發(fā)。
安裝Element UI
//我的項(xiàng)目是放在這個位置,你們根據(jù)自己項(xiàng)目進(jìn)入工程即可
cd d:/Vue-Workspace/vue-project-02
//推薦第一種安裝命令
npm i element-ui -S
//或者下面這種寫法
npm install --save element-ui
// main.js 文件配置中加入下面三行
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
配置
在頁面中顯示Element UI組件
1):通過此前的學(xué)習(xí),你應(yīng)該知道有些文件在此工程中是可以不必保留的,應(yīng)該將這些文件刪除,例如:
– 刪除import HomeView from '../views/HomeView.vue'
– 刪除routes常量中各對象(值為空數(shù)組即可)
2):如果你認(rèn)為這些頁面元素占據(jù)了100%寬度,并且默認(rèn)是靠左對齊的 (當(dāng)占據(jù)100%寬度時你可能看不出來),這樣的顯示效果不夠美觀,你可 以自行做一些調(diào)整:
//使用你已經(jīng)掌握的CSS樣式進(jìn)行調(diào)整,例如:
<div style="width: 500px; margin: 0 auto;"> <!-- 頁面元素 --> </div>
//學(xué)習(xí)更多的Element UI的做法,例如:
<div style="width: 500px; margin: 0 auto;">
<!-- 頁面元素 -->
</div>
<el-row type="flex" justify="center">
<el-col :span="12">
<!-- 頁面元素 -->
</el-col>
</el-row>
設(shè)計(jì)登錄視圖Demo
修改APP.vue頁面,代碼如下:
<template>
<div id="app">
<el-row type="flex" justify="center">
<el-col :span="8">
<h3>用戶登錄</h3>
<el-divider></el-divider>
<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="用戶名" prop="username">
<el-input v-model="ruleForm.username"></el-input>
</el-form-item>
<el-form-item label="密碼" prop="pass">
<el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
<el-button @click="resetForm('ruleForm')">重置</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
data() {
var checkUsername=(rule, value, callback)=> {
if (!value) {
return callback(new Error('用戶名不能為空'));
}
callback();
};
var validatePass=(rule, value, callback)=> {
if (value==='') {
callback(new Error('請輸入密碼'));
}
callback();
};
return {
ruleForm: {
pass: '',
username: ''
},
rules: {
pass: [
{ validator: validatePass, trigger: 'blur' }
],
username: [
{ validator: checkUsername, trigger: 'blur' }
]
}
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid)=> {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
}
}
</script>
學(xué)習(xí)記錄,如有侵權(quán)請聯(lián)系刪除
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。