基于 jquery ui 扩展Widget
jQuery UI CSS Framework是jQuery UI中的一个样式框架,可以利用jQuery Theme roller 来生成自己想要的css样式效果。我们可以利用jQuery UI的一些框架来开发出基于jQuery UI CSS Framework效果的插件来。
jQuery UI中两大核心的css文件是ui.core.css和ui.theme.css.这两个css样式贯穿整个基于jQuery ui的界面上,并且可以通过jQuery ui ThemeRoller来生成自己的样式。
.ui-helper-hidden :为元素应用display:none
.ui-helper-hidden-accessible:将元素的绝对位置设置为不可见
.ui-helper-clearfix:适用于浮动包裹父元素的属性
. ui-helper-zfix:适用于修复iframe元素覆盖的问题
.ui-state-default:元素的默认样式
.ui-state-hover:元素为hover状态的样式
.ui-state-focus:元素为focus状态的样式
.ui-state-active:元素为active状态(一般为鼠标选中)的样式
.ui-state-hightlight:需要高亮状态的样式
.ui-state-error:元素为错误状态(一般描述错误信息)的样式
.ui-state-error-text:描述错误文字的样式
.ui-state-disabled:元素被禁用的样式
.ui-priority-primary:被应用于级别为第一级的button,如果button需要区分曾记的话。将应用加粗字体
.ui-priority-secondary:被应用于级别为第二级的button,和上一场景相对应,将应用一般粗细的字体,并且相对于元素轻度透明
Icon types:css framework提供了一套默认的图标,这些图标适用于大多场景,一般使用的方式是“ui-icon ui-icon-****”来指定icon
.ui-corner-tl:左上角圆角,基于css3,ie不支持
.ui-corner-tr:右上角圆角,基于css3,ie不支持
.ui-corner-bl:左下角圆角,基于css3,ie不支持
.ui-corner-br:右下角圆角,基于css3,ie不支持
.ui-corner-top:上面两个角圆角,基于css3,ie不支持
.ui-corner-bottom:底部两个角圆角,基于css3,ie不支持
.ui-corner-right:右部两个角圆角,基于css3,ie不支持
.ui-corner-left:左部两个角圆角,基于css3,ie不支持
.ui-corner-all:全部角圆角,基于css3,ie不支持
.ui-widget-overlay:遮罩
.ui-widget-shadow:阴影
在写jQuery ui widget的时候合适的利用这些css就可以做出和jQuery ui theme兼容的自定义ui来。
jQuery ui 提供了一些基本的widget,但是他提供了很好的机制来创建widget。在jQuery css framework中包含了基本的css样式(视觉和感觉诸如颜色,字体大小,图标等),而在ui的css中,则需要定义构建widget结构的css,比如margin,padding,position等。在开发widget的时候也要尽量遵循这一原则,这样才能很好的利用jquery theme roller来应用样式,从而在整体上保持一致,在前面的文章中简单的 介绍了jquery css framework。下面就简单的介绍下jquery ui 的开发指引。
Jquery的官方文档中对此写的很清晰。一般来说,jquery ui都是继承自jquery.ui.widget.js这个文件的。这个文件提供了一个工厂方法来创建widget对象。其方法是$.widget(String name, Options prototype).下面简单介绍下这个类提供的方法和属性。在创建widget的时候将重写这些。
destroy():将widget实例从dom对象上移除,在开发widget的时候一般此方法是必须的。就是移除你自己在dom element上添加的样式和行为以及dom结构
options:在这里面保存的是widget的配置信息,在创建widget的时候需要设置一些配置参数。
element:就是widget作用的dom对象。
enable()和disable():这两个方法就是禁用和启用widget的。其实是修改options.disabled。
还有两个私有方法是创建widget的时候要重写的。在widget中,所有的私有方法都将加以"_"前缀。
_create(): 这个方法就是创建widget的方法,在页面调用widget的时候,就会执行此方法,来构建widget。Widget的绝大大多数行为和结构都是在这里创建的。
_init(): 这个方法大多数时候不会被重写,这个方法在构建widget的时候在_create后执行。
从相关的文档上查询到:
_create(): 方法在widget构建的时候执行,而_init()方法在构建和重新初始化的时候执行。而destroy方法则是在移除widget的时候被执行。
_setOption(): 此方法提供了options的属性的设置,一般情况下如果options里面的参数不需要特殊处理(校验,类型转换,以及设置属性的时候触发某一操作等)的时候不需要对此方法进行重写。
下面这段代码说明了_create()方法和_init()方法的不同:
view source
print?01 $(function(){
02
03 // _create() 和 _init() 在第一次调用的时候被执行
04 $("div").mywidget();
05
06 // widget已经实例化到div上了,此时只执行_init()方法
07 $("div").mywidget();
08
09 // 销毁widget
10 $("div").mywidget("destroy");
11
12 // 因为widget已经被销毁,此时_create()和_init()方法都将被执行
13 $("div").mywidget();
14
15 });
事件
如果有自定义的事件,可以采用widget为我们封装好的方法_trigger()来处理,其调用方法为 this._trigger(type, event, data),第一个参数为时间类型,第二个参数为事件event对象,第三个参数为事件要传递的参数。
接下来会用一个简单的jquery ui widget代码,来说明如何开发widget。
view source
print?01 //此widget是将textbox进行修饰一下的。自身没有css,采用的是jquery ui css framework的样式
02 (function($){
03 //ui默认采用jquery的ui前缀,后面的是widget名称
04 $.widget("ui.textboxdecorator", {
05 //此widget中没有options
06 options:{
07 },
08 _init: function(){
09 //验证是否是需要装饰的元素
10
11 if (!(this.element.attr("tagName").toLowerCase() === "input" || this.element.attr("tagName").toLowerCase() === "textarea")) {
12 return;
13 }
14 if (!(this.element.attr("type").toLowerCase() === "text" || this.element.attr("type").toLowerCase() === "password")) {
15 if (this.element.attr("tagName").toLowerCase() === "input")
16 return;
17 }
18 //this.element也就是调用此widget的元素
19 var e = this.element;
20 //ui-widget widget基本的样式,ui-state-default。默认状态的样式;ui- corner-all 圆角(基于css3,ie下不起作用)
21 this.element.addClass("ui-widget ui-state-default ui-corner-all");
22 //添加hover效果和active效果
23 this.element.mouseover(function(){
24 e.addClass("ui-state-hover");
25 }).mouseout(function(){
26 e.removeClass("ui-state-hover");
27 }).mousedown(function(){
28 e.addClass("ui-state-active");
29 }).mouseup(function(){
30 e.removeClass("ui-state-active");
31 });
32 },
33 //销毁时,移除widget增加的样式
34 destroy:function(){
35 this.element.removeClass("ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active");
36 }
37 })
38 })(jQuery)
在使用该widget的时候,需要引用jquery,jquery.ui.core.js,jquery.ui.widget.js文件,css文件需要jquery.ui.core.css和jquery.ui.theme.css两个文件
在调用的时候采用$("***"). textboxdecorator();来调用此widge
基于 jquery ui 扩展Widget相关推荐
- html5拖动的面板 panel,基于jQuery UI的Bootstrap Panel面板功能增强插件
LobiPanel是一款基于jQuery UI的Bootstrap Panel面板功能增强插件.通过该插件可以为Bootstrap的原生Panel面板增加编辑标题,最大化,最小化,面板拖动关闭面板等功 ...
- html下拉式列表框多选,基于jQuery UI的多项选择下拉列表框组件
jquery.multiselect.js是一款基于jQuery UI的多项选择下拉列表框组件.该下拉列表功能强大,可以实现多选和单选,可制作打开和关闭下拉框时的炫酷动画效果,提供丰富的回调函数和其它 ...
- 一款基于jquery ui的动画提交表单
今天要给大家分享一款基于jquery ui的动画提交表单.这款提交表单的的效果是以动画的形式依次列表所需填写的信息.效果非常不错,效果图如下: 在线预览 源码下载 实现的代码. html代码: & ...
- html5窗口播放插件,基于jQuery UI的模拟windows窗口插件
jquery-lwd是一款轻量级的基于jQueryUI的模拟windows窗口插件.该插件可以模拟windows窗口,对窗口进行最大化,最小化,拖动等操作.并提供windows2000经典主题效果.它 ...
- jQuery:收集一些基于jQuery框架开发的控件/jquery插件2
Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. 主页:http://letmehaveblog.blogspot.com/2007/10/ ...
- w3cschool教程之jQuery UI 教程概述
w3cschool教程之jQuery UI 教程概述 链接地址: http://www.w3cschool.cc/jqueryui/jqueryui-tutorial.html w3cschool教程 ...
- JMJS系统总结系列----Jquery分页扩展库(五)
文件名:JS/common/Grid.js 简介:这是基于Jquery的扩展库 用途:这个扩展库控件是针对JMJS系统的列表页面而开发的.主要功能包括:分页.排序.全选. 模板的创建.设置 A. 创建 ...
- Wijmo 更优美的jQuery UI部件集:爱上 ThemeRoller
Wijmo 是一个基于jQuery UI的UI部件的套件.Wijmo最方便使用的特点之一就是兼容ThemeRoller.ThemeRoller 是一个创建独特的jQuery UI web 部件主题皮肤 ...
- jQuery UI Datepicker 选择时分秒
jQuery UI Datepicker日期选择插件很好用了,只不过只能精确到日,不能选择时间(小时分钟秒)很遗憾,而jquery-ui-timepicker-addon.js正是基于jQuery U ...
最新文章
- 带有中文的字符串各个字符的获取c++程序
- TripleO (openstack)
- Oracle10g安装步骤(一)
- 使用 GraalVM 将纯 JavaFX 项目打包成 EXE
- SQL里学习通配符时LIKE和RLIKE的区别
- 微信支付 签名算法 sign node实现
- Git学习文档之一 学习文档-合并分支
- 串口示波器---伏特加 彻底的爱了
- maven常见问题处理(3-3)Gradle编译时下载依赖失败解决方法
- 数据模型与决策_好的数据模型最终都为业务而生
- 微信工程师为你讲述春晚红包的系统设计和优化
- Chrome浏览器如何完美实现截长屏幕
- MS-DOS虚拟机安装
- javascript获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
- ass字幕转换成文本文件
- bio-linux软件包教程,biolinux包含软件
- 微信公众号注册认证流程
- 扔掉Windows 中的盗版软件,使用免费正版软件
- java设计模式adapter,java设计模式-适配器模式(Adapter)
- C语言 | 求圆周长 面积 圆球表面积 体积
热门文章
- .NET爬虫获取拼多多商品价格
- 用js代码简单的介绍自己
- 拉杰尔安卓服务器注册上限,航海王启航409区圣地玛丽杰尔开服时间表_航海王启航新区开服预告_第一手游网手游开服表...
- 电脑上的记事本便签纸怎么用
- 计算机怎么搜索特定格式文件,win10 查找指定类型文件方法_win10怎么查找指定类型文件-win7之家...
- hypixel服务器显示无法登录,我的世界hypixel服务器盗版可以登录?
- 腾讯云HiFlow场景连接器7月最受欢迎新应用模版推荐
- 搞笑新闻联播之老公岗位制度(上)铃声 搞笑新闻联播之老公岗...
- Vue——v-if控制元素是否显示
- H.264的两个概念:DC系数和AC系数