首页 > 代码库 > javascript控件开发之工具栏控件
javascript控件开发之工具栏控件
在前几篇的基础上,本篇将开发工具栏控件,工具栏控件一般包括三部份,
1、toolBar控件,简单说就是工具栏容器,
2、toolButton控件,即工具栏上的按钮控件,该按钮控件包括图标和文字两部份,
3、则是分隔符控件,一般分隔符控件也是在toolButton控件基础上引申出来的,
为了简单易学,我们这里直接用上一篇的控件作为toolBar控件使用,也就是我们这次编写出来的toolButton控件直按放一Panel控件上,
首先在component\ui\文件夹下添加控件文件,com.ui.toolButton.js 如下,
定义com.ui.toolButton控件类,继承com.ui.panel控件。
/** * 按钮控件类. * 创建: QZZ * 日期: 2014-04-06 */(function(undefined) { nameSpace("com.ui"); com.ui.toolButton = Extend(com.ui.panel, { /** * 创建函数. */ create:function(){ this.base(); this.className = "com.ui.toolButton"; this.logInfo("create"); }, /** * 渲染函数. */ render:function() { } });})();
渲染函数如下,把渲染方式默认为“alLeft”,添加一个type属性,用于区别split控件或button控件,分别进行渲染。
1. split控件,则直接创建一个div,设置样式,然后宽度设置为8px;
2. button控件 则创建一个table,分三层次, 第一层用于设置高度,第二层用于放图标,第三层次用于放文字,图标与文字都通过配置方式获得。
/** * 渲染函数. */ render:function(){ this.base(); this.setAlign("alLeft"); if(this.option.type === "split") { this.setWidth(8); this.setStyle(this.win, "toolButtonSplitStyle"); var splitDiv = this.createElement("div"); this.setStyle(splitDiv,"toolSplitStyle"); this.win.appendChild(splitDiv); } else { //初始化caption this.caption = this.win.innerHTML; if(this.option.icon != null) { this.tabIcon = this.createElement("table"); this.setStyle(this.tabIcon, "toolIconTabStyle"); this.topCol = this.tabIcon.insertRow(0).insertCell(0); this.topCol.style.height = "1px"; var col = this.tabIcon.insertRow(1).insertCell(0) col.innerHTML = '<img src=http://www.mamicode.com/"'+this.option.icon>
函数中用到几个画边框的样式,把他们都添加到com.comStyle.css文件中,如下:.toolButtonSplitStyle { border-top:0px solid #EEEEEE; border-left:0px solid #EEEEEE; border-right:0px solid #555555; border-bottom:0px solid #555555; padding-left:4px; position:relative;}.toolSplitStyle { border-top:0px solid #EEEEEE; border-left:0px solid #EEEEEE; border-right:1px solid #EEEEEE; border-bottom:0px solid #555555; height:40px; top:10px; width:1px; background-color:#555555; margin:auto; position:relative;}.toolIconTabStyle{ margin:auto; top:10px;}.toolIconTdStyle { text-align:center; height:16px;}.toolButtonCommonStyle { border-top:0px solid #EEEEEE; border-left:0px solid #EEEEEE; border-right:0px solid #555555; border-bottom:0px solid #555555; position:relative; text-align:center; cursor:pointer;}.toolButtonOverStyle { border-top:1px solid #EEEEEE; border-left:1px solid #EEEEEE; border-right:1px solid #555555; border-bottom:1px solid #555555; position:relative; text-align:center; cursor:pointer;}.toolButtonDownStyle { border-top:1px solid #555555; border-left:1px solid #555555; border-right:1px solid #EEEEEE; border-bottom:1px solid #EEEEEE; position:relative; text-align:center; cursor:pointer;}
下面继续添加按钮的相关鼠标事件、大小变化事件(doResize)和修改文字内容方法,
思路类似前前一篇的按钮控件,//设置显示属性 setCaption:function(caption) { this.caption = caption; if(this.tabIcon != null) { this.tabIcon.rows[1].cells[0].innerHTML = '<img src=http://www.mamicode.com/"'+this.option.icon+'" style="width: 18px; height: 18px;">';>
到此,控件已编写完成,下面我们用它来编写例子,如test.html文件,<!DOCTYPE html> <head><title>test</title> <script src=http://www.mamicode.com/"../script/common/init.js" type="text/javascript"></script>>
其中test.html文件目录下添加image文件夹,并把图标放在文件夹下面,
效果如上图,
可直接下载附件查看源码。
请关注下一篇, javascript控件开发之流动条控件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。