jQuery UI
31 Oct 2013
jQuery UI 是什么
jQuery UI 是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库。包含底层用户交互、动画、特效和可更换主题的可视控件。
jQuery UI 有什么
jQuery UI 主要分为3个部分:Interactions、Widgets和Effects。
+ Interactions
一些与鼠标交互相关的内容,包括Draggable(拖动)、Droppable(放置)、Resizable(缩放)、Selectable(可选)、Sortable(排序)等。
+ Widgets
主要是一些界面的扩展,包括Accordion(手风琴堆叠)、AutoComplete(自动完成)、Button(按钮)、Datepicker(日期选择)、Dialog(对话框)、Menu(菜单)、ProgressBar(进度条)、Slider(滑条)、Spinner(数字微调)、Tabs、Tooltip(提示)等。
jQuery UI有丰富的主题,可以非常方便地更换widget主题,也可以自己自定义主题。
+ Effects
用于提供丰富的动画效果,让动画不再局限于jQuery的animate()方法。
jQuery UI 没有什么
jQuery UI 没有Datagrid、没有Tree、没有Layout、没有ComboBox、没有RichTextEditor、更没有Mobile支持、……。
一个简单示例
+ 引用
```
<link rel="Stylesheet" type="text/css" href="themes/base/jquery.ui.all.css" />
<script type="text/javascript" src="ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="ui/jquery.ui.accordion.js"></script>
```
+ 实现代码
```
<div id="accordion" class="ui-widget-content" style="height: 80%;">
<h6><a href="#">用户管理</a></h6>
<div>...</div>
<h6><a href="#">商品管理</a></h6>
<div>...</div>
<h6><a href="#">订单管理</a></h6>
<div>
<ul>
<li><a href="#">订单管理</a></li>
<li><a href="#">收货地址管理</a></li>
<li><a href="#">退货管理</a></li>
</ul>
</div>
<h6><a href="#">统计</a></h6>
<div>...</div>
</div>
```
```
//初始化手风琴
function initAccordion(){
$('#accordion').accordion({
collapsible: true
});
}
$(document).ready(function() {
//手风琴
initAccordion();
});
```
+ 实现效果
![jQuery UI Tab](/img/jQuery UI/jQueryUI-accordion.png)
+ 方法调用
```
// getter
var active = $('#accordion').accordion('option', 'active');
// setter
$('#accordion').accordion('option', 'active', 2);
```
- jQuery UI可以用来做什么
+ Interactions
通用的鼠标交互效果,可以简化页面的交互的实现方式,比如拖动、排序。
+ Widgets
只是一些界面的小组件,提供的组件比较有限,只能用于页面部分效果的处理,无法像Dojo、ExtJs那样代替整个页面的实现。另外,大部分组件和Bootstrap重复了。
jQuery UI提供丰富的主题,并可以进行自定义。
不过jQuery UI提供了扩展自定义widget的方式,另外也有一些开源的扩展widget实现,比如http://quasipartikel.at/multiselect 中的MultiSelect
PS:个人感觉jQuery UI 的界面效果做得不怎么样,自带的theme效果也不是很好,例如:
jQuery UI
![jQuery UI Tab](/img/jQuery UI/jQueryUI-tab.png)
Bootstrape
![Bootstrap Tab](/img/jQuery UI/bootstrap-tab.png)
+ Effects
对jQuery动画的扩展,实际使用中并不是很必要,也不是很有意义。
综上,jQuery UI 的widget和Effect意义并不是很大。反倒是Interactions更实用一些。