有的 jQuery UI 插件都允许开发人员无缝集成 UI 小部件到他们网站或应用程序的外观和感观。每个插件通过 CSS 定义样式,且包含了两层样式信息:标准的 jQuery UI CSS 框架 样式和具体的插件样式。
jQuery UI CSS 框架提供了语义表示的类,用来表明小部件内元素的角色,比如标题、内容或可点击区域。这些在所有的小部件中都是一致的,一个可点击的 tab(标签页)、accordion(折叠面板)或 button(按钮)都有相同的 ui-state-default
class,用来表明它们是可点击的。当用户鼠标悬浮在这些元素上面时,这个 class 就变成 ui-state-hover
,当选中这些元素时则变成 ui-state-active
。这些 class 的一致性使得所有部件中具有相似角色或交互状态的元素在外观表现上一致。
CSS 框架样式封装在一个单独的文件中,名为 ui.theme.css
。这个文件时通过 ThemeRoller 应用程序来修改的。框架样式只包含影响外观和感观的属性,只要是颜色、背景图像、图标等。所以这些是 "安全的" 样式,不会影响到插件的功能。这种分隔意味着开发人员可以通过在 theme.css
文件中修改颜色和图像来创建一个自定义的外观和感观。由于未来的插件或者 bug 修复将是可用的,这些不通过修改即可与主题一起使用。
由于框架样式只覆盖了外观和感观,所以还需要包含具体的插件样式表,这些样式表包括了所有额外的让小部件具有功能性的结构样式规则,比如尺寸、内边距、外边距、定位、浮动。每个插件的样式表位于 themes/base
文件夹内,且配合插件进行命名,比如 "jquery.ui.accordion.css"。这些样式必须认真编辑,因为它们与脚本一起提供了框架样式的覆盖。
我们鼓励所有的开发人员创建 jQuery 插件,jQuery UI CSS 框架使得最终用户更容易定制主题和使用插件。
主题化
下面列出了三种主题化 jQuery UI 插件的一般方法:
下载 ThemeRoller 主题:最早的创建主题的方式是使用 ThemeRoller 来生成和下载一个主题。这个应用程序将创建一个新的 ui.theme.css
文件和一个包含了所有必需的背景图像及图标精灵的 images
文件夹。这个方法是最早的创建和维护主题的方式,但是它对 ThemeRoller 中提供的选项限制了自定义。
修改 CSS 文件:为了对外观和感观做进一步的控制,您可以选择从默认主题(Smoothness)开始,或者从一个由 ThemeRoller 生成的主题开始,然后调整 ui.theme.css
文件,或者任意一个独立插件的样式表。例如,您可以很容易地调整所有按钮的角半径为不同于其他 UI 组件的值,或者使用自定义设置为图标精灵改变路径。通过一点点的样式范围,您甚至可以在一个 UI 中同时使用多个主题。为了易于维护,建议只更改 ui.theme.css
文件和图像。
重新编写自定义的 CSS:为了最大程度地控制外观和感观,可以重新开始编写每个插件的 CSS,而不使用框架类或者特定的插件样式表。如果想要的外观和感观不能通过修改 CSS 来实现或者使用高度自定义的标记,那么就可以采用这个方法。这个方法要求在 CSS 方面有深厚的专业知识,且要求手动更新未来的插件。
使用 ThemeRoller、jQuery UI CSS 框架,以及设计自定义主题
jQuery UI ThemeRoller
jQuery UI CSS 框架 API
设计主题
大家好,图标在UI设计中占了一席之地,不同风格的图标会影响页面整体风格效果。前面2篇文章分别介绍了《线性图标》、《面性图标》,今天我跟大家分享一下线面结合图标的一些设计样式。
于Element UI
Element UI是一套采用 Vue 2.0 作为基础框架实现的组件库,一套为开 发者、设计师和产品经理准备的基于 Vue 2.0 的组件库,提供了配套设计 资源,帮助网站快速成型。
Element UI的官方网址是:https://element.eleme.cn/
Element UI预定义了几乎所有标签的常规设计样式,在绝大 部分情况下,你不需要考虑例如按钮的宽度、高度、背景颜色、文本大小、 文本颜色等样式规则,只需要直接使用即可,例如Element UI提供的按 钮:
按钮
当然,除了按钮以外,对于表格、表单、表单中各控件、弹出框等常见的 页面元素,Element UI都设计了非常简约美观的样式,例如:
表单
Element UI之所以被称之为“组件库”,是因为它不再使用传统的HTML 标签,而是自行定制了一系列的标签(包括 标签属性),以按钮为例, 其源代码大概是这样的:
<el-button type="primary">主要按钮</el-button>
除了样式以外,Element UI还提 供了便利的表单控件的验证方式, 执行效果例如:
验证
由于Element UI定义了大量的组件,每个组件都有许多属性,所以,学 习Element UI时需要记忆大量的组件特征,这将是一个非常漫长的过程, 通常不建议刻意的死记硬背,应该重点关注Element UI可以做到什么, 例如有哪些样式,各组件的核心属性等用法,然后结合官方文档 (https://element.eleme.cn/#/zh-CN/component/)进行开发。
安装Element UI
//我的项目是放在这个位置,你们根据自己项目进入工程即可
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):通过此前的学习,你应该知道有些文件在此工程中是可以不必保留的,应该将这些文件删除,例如:
– 删除import HomeView from '../views/HomeView.vue'
– 删除routes常量中各对象(值为空数组即可)
2):如果你认为这些页面元素占据了100%宽度,并且默认是靠左对齐的 (当占据100%宽度时你可能看不出来),这样的显示效果不够美观,你可 以自行做一些调整:
//使用你已经掌握的CSS样式进行调整,例如:
<div style="width: 500px; margin: 0 auto;"> <!-- 页面元素 --> </div>
//学习更多的Element UI的做法,例如:
<div style="width: 500px; margin: 0 auto;">
<!-- 页面元素 -->
</div>
<el-row type="flex" justify="center">
<el-col :span="12">
<!-- 页面元素 -->
</el-col>
</el-row>
设计登录视图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>
学习记录,如有侵权请联系删除
*请认真填写需求信息,我们会在24小时内与您取得联系。