漂亮的widgets,支持换肤和后期开发新皮肤


Posted in Javascript onApril 23, 2007

作者:ucren
演示效果:http://ucren.com/ucren-examples/widgets.html

已知缺陷:
1、换肤功能由于图片变动量比较大,所以加载有些慢。
2、widgets 不支持多态。

未来考虑解决的问题:
1、对图片进行预载处理
2、与框架 vjbox 整合到一起

未来考虑开发的新控件:
1、滑块调节器(类似windows音量调节器)
2、进度条
3、outlook 菜单
4、树
widgets.js

/* 
 * Ucren example. 
 * Author:Dron 
 * Date:2007-3-31 
 * Contact:ucren.com 
 */ var example = Ucren.getElement("example"); 
/* - - - - - - - - - - 定义按钮 - - - - - - - - - - */ 
var testbtn = new Ucren.Button({ caption: "示例按钮1", width: 80, handler: function (){ Ucren.alert("Hello world!", "示例按钮1"); } }); 
    testbtn.applyTo("test-btn"); 
var testbtn2 = new Ucren.Button({ caption: "示例按钮2", width: 80, disabled: true }); 
    testbtn2.applyTo("test-btn2"); 
var defaultbtn = new Ucren.Button({ caption: "经典样式", width: 74, handler: function (){ Ucren.useSkin("default"); } }); 
    defaultbtn.applyTo("default-btn"); 
var xpbtn = new Ucren.Button({ caption: "XP样式", width: 74, handler: function (){ Ucren.useSkin("xp"); } }); 
    xpbtn.applyTo("xp-btn"); 
var xpbtn = new Ucren.Button({ caption: "QQ样式", width: 74, handler: function (){ Ucren.useSkin("qq"); } }); 
    xpbtn.applyTo("qq-btn"); 
var vistabtn = new Ucren.Button({ caption: "Vista样式", width: 74, handler: function (){ Ucren.useSkin("vista"); } }); 
    vistabtn.applyTo("vista-btn"); 
var examplebtn = new Ucren.Button({ caption: "显示示例窗体", width: 100, handler: function (){ win1.show(); } }); 
    examplebtn.applyTo("example"); 
var alertbtn = new Ucren.Button({ caption: "Alert", width: 60, handler: function (){ Ucren.alert("Test!", "模拟Alert"); } }); 
    alertbtn.applyTo("alert-btn"); 
var promptbtn = new Ucren.Button({ caption: "Prompt", width: 60, handler: function (){ Ucren.prompt("请键入你的名字:", "匿名", returnValue);} }); 
    promptbtn.applyTo("prompt-btn"); 
var confirmbtn = new Ucren.Button({ caption: "Confirm", width: 60, handler: function (){ Ucren.confirm("你真的要这样操作吗?", "请确认:", returnValue);} }); 
    confirmbtn.applyTo("confirm-btn"); 
var ewin2btn = new Ucren.Button({ caption: "示例窗体2", width: 80, disabled: true, handler: function (){ win2.show(); } }); 
    ewin2btn.applyTo("ewin2-btn"); 
var ewin3btn = new Ucren.Button({ caption: "示例窗体3", width: 80, disabled: true, handler: function (){ win3.show(); } }); 
    ewin3btn.applyTo("ewin3-btn"); 
var cboxvaluebtn = new Ucren.Button({ caption: "值", width: 40, handler: function (){ Ucren.alert(testckbox.getValue(), "多选框的值是"); } }); 
    cboxvaluebtn.applyTo("cbox-value"); 
var rdvaluebtn = new Ucren.Button({ caption: "值", width: 40, handler: function (){ Ucren.alert(testradio.getValue(), "单选框的值是"); } }); 
    rdvaluebtn.applyTo("radio-value"); 
var cbvaluebtn = new Ucren.Button({ caption: "值", width: 40, handler: function (){ Ucren.alert(testcombo.getValue(), "下拉框的值是"); } }); 
    cbvaluebtn.applyTo("combobox-value"); 

/* - - - - - - - - - - 定义窗体 - - - - - - - - - - */ 
var win1 = new Ucren.Window({ 
    left : 100, top : 100, width : 430, height : 350, 
    minWidth : 430, minHeight : 350, 
    panel : "example-panel", 
    caption : "示例窗体", 
    icon : "images/ico.gif", 
    minButton : true, maxButton : true, cloButton : true, resizeAble : true, 
    onOpen :    function (){ example.setDisplay(false); }, 
    onClose :    function (){ example.setDisplay(true); }, 
    onResize :    function (){ }, 
    onMove :    function (){ }, 
    onFocus :    function (){ }, 
    onBlur :    function (){ } 
}); 
var win2 = new Ucren.Window({ 
    left : 260, top : 30, width : 300, height : 250, 
    minWidth : 300, minHeight : 250, 
    panel : "example-panel2", 
    caption : "示例窗体2", 
    icon : "images/ico.gif", 
    minButton : true, maxButton : true, cloButton : true, resizeAble : true, 
    onOpen :    function (){ ewin2btn.setDisabled(true); }, 
    onClose :    function (){ ewin2btn.setDisabled(false); }, 
    onResize :    function (){ }, 
    onMove :    function (){ }, 
    onFocus :    function (){ }, 
    onBlur :    function (){ } 
}); 
var win3 = new Ucren.Window({ 
    left : 290, top : 210, width : 380, height : 150, 
    minWidth : 380, minHeight : 150, 
    panel : "example-panel3", 
    caption : "示例窗体3", 
    icon : "images/ico.gif", 
    minButton : true, maxButton : false, cloButton : true, resizeAble : false, 
    onOpen :    function (){ ewin3btn.setDisabled(true); }, 
    onClose :    function (){ ewin3btn.setDisabled(false); }, 
    onResize :    function (){ }, 
    onMove :    function (){ }, 
    onFocus :    function (){ }, 
    onBlur :    function (){ } 
}); 
win2.show(); 
win3.show(); 
win1.show(); // 把 win1 放到最后 show 可以令 win1 初始化后置于最上层 
/* - - - - - - - - - - 定义示例文本框 - - - - - - - - - - */ 
var testtxf1 = new Ucren.TextField({ text: "Test!", width: 120 }); 
    testtxf1.applyTo("test-txf1"); 
var testtxf2 = new Ucren.TextField({ text: "Test!", width: 120, disabled: true }); 
    testtxf2.applyTo("test-txf2"); 
/* - - - - - - - - - - 定义多选框 - - - - - - - - - - */ 
var testckbox = new Ucren.CheckBox([ 
    { container: "test-cbox1", value: "1", lable: "选项一", checked: true }, 
    { container: "test-cbox2", value: "2", lable: "选项二" }, 
    { container: "test-cbox3", value: "3", lable: "选项三", disabled: true }, 
    { container: "test-cbox4", value: "4", lable: "选项四", checked: true, disabled: true } 
]); 
/* - - - - - - - - - - 定义单选框 - - - - - - - - - - */ 
var testradio = new Ucren.Radio([ 
    { container: "test-radio1", value: "1", lable: "选项一" }, 
    { container: "test-radio2", value: "2", lable: "选项二", checked: true }, 
    { container: "test-radio3", value: "3", lable: "选项三" }, 
    { container: "test-radio4", value: "4", lable: "选项四", disabled: true } 
]); 
/* - - - - - - - - - - 定义下拉框 - - - - - - - - - - */ 
var combodatas = new Ucren.DataVess({ 
    fields: ["text", "value"], 
    data: [ 
        ["选项1" , "option-1" ], 
        ["选项2" , "option-2" ], 
        ["选项3" , "option-3" ], 
        ["选项4" , "option-4" ], 
        ["选项5" , "option-5" ], 
        ["选项6" , "option-6" ], 
        ["选项7" , "option-7" ], 
        ["选项8" , "option-8" ], 
        ["选项9" , "option-9" ], 
        ["选项10", "option-10"], 
        ["选项11", "option-11"], 
        ["选项12", "option-12"], 
        ["选项13", "option-13"], 
        ["选项14", "option-14"] 
    ] 
}); 
var testcombo = new Ucren.ComboBox({width: 120, value: "option-2", disabled: false, data: combodatas }); 
    testcombo.applyTo("test-combobox"); 
/* - - - - - - - - - - functions - - - - - - - - - - */ 
function returnValue(v) { Ucren.alert(v + "", "返回值"); }

本地下载
Javascript 相关文章推荐
js里的prototype使用示例
Nov 19 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
AngularJS过滤器filter用法分析
Dec 11 Javascript
Ajax基础知识详解
Feb 17 Javascript
Node.js中 __dirname 的使用介绍
Jun 19 Javascript
详解swiper在vue中的应用(以3.0为例)
Sep 20 Javascript
vue2 拖动排序 vuedraggable组件的实现
Aug 08 Javascript
JS实现灯泡开关特效
Mar 30 Javascript
解决vue的过渡动画无法正常实现问题
Oct 31 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
IE与FireFox的兼容性问题分析
Apr 22 #Javascript
javascript生成/解析dom的CDATA类型的字段的代码
Apr 22 #Javascript
XML+XSL 与 HTML 两种方案的结合
Apr 22 #Javascript
用javascript实现的图片马赛克后显示并切换加文字功能
Apr 21 #Javascript
JS Timing
Apr 21 #Javascript
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 #Javascript
JS 建立对象的方法
Apr 21 #Javascript
You might like
Yii数据库缓存实例分析
2016/03/29 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python中的列表知识点汇总
2015/04/14 Python
python开发之thread线程基础实例入门
2015/11/11 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
行政经理岗位职责
2013/11/09 职场文书
好家长事迹材料
2014/01/23 职场文书
项目投资意向书
2014/04/01 职场文书
警校毕业生自我评价
2014/04/06 职场文书
党员干部一句话承诺
2014/05/30 职场文书
八年级语文教学反思
2016/03/03 职场文书