漂亮的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 相关文章推荐
javascript 面向对象编程  function是方法(函数)
Sep 17 Javascript
Jquery.Form 异步提交表单的简单实例
Mar 03 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
Aug 23 Javascript
微信小程序--组件(swiper)详细介绍
Jun 13 Javascript
webpack开发跨域问题解决办法
Aug 03 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
JS实现手风琴特效
Nov 08 Javascript
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
php数组的一些常见操作汇总
2011/07/17 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
React简单介绍
2017/05/24 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python使用knn实现特征向量分类
2018/12/26 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
护理不良事件检讨书
2014/02/06 职场文书
新闻编辑求职信
2014/04/09 职场文书
服务行业口号
2014/06/11 职场文书
小学班主任评语
2014/12/29 职场文书
MySQL基础(二)
2021/04/05 MySQL
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS