中国数据网
http://www.dbchina.net
收藏本页
联系我们
 
DHTML实例解析:模拟Windows选项卡 ~ admin
下面是一个用javascript控制css模拟windows选项卡的实例,在IE5/IE6中调试通过,这只是一个简单的例子,实际使用中可以再美化一下,比如在“面板”中加上有凸凹效果的框。

  下面我们将描述一下实现的具体过程,我们先把要点说清楚,最后给出代码。
 
关于TBODY标记 关于cells集合 关于tBodies集合 关于display属性


指定行做为表体。
注释:TBODY要素是块要素,并且需要结束标签。
   即使如果表格没有显式定义TBODY要素,该要素也提供给所有表。

参考:《动态HTML参考和开发应用大全》(人民邮电出版社 Microsoft Corporation著 北京华中兴业科技发展有限公司译)


检索表行或者整个表中所有单元格的集合。
应用于TR、TABLE。

参考:《动态HTML参考和开发应用大全》(人民邮电出版社 Microsoft Corporation著 北京华中兴业科技发展有限公司译)


检索表中所有TBODY对象的集合。对象在该集合中按照HTML源顺序排列。
应用于TABLE。

参考:《动态HTML参考和开发应用大全》(人民邮电出版社 Microsoft Corporation著 北京华中兴业科技发展有限公司译)


设置或者检索对象是否被提供。
可能的值为block、none、inline、list-item、table-header-group、table-footer-group。
该特性可读写,块要素默认值为block,内联要素默认值为inline;层叠样式表(CSS)属性不可继承。

参考:《动态HTML参考和开发应用大全》(人民邮电出版社 Microsoft Corporation著 北京华中兴业科技发展有限公司译)

点击此处可参阅微软MSDN在线上的解释。

 整个“面板”的样式实现

  或许,我们首先关心的是整个能看到的样子是怎么实现的。其实就是一个表格,通过用CSS设置表格及单元格的边框以及背景色实现的,我们可以看一下CSS代码:
.sec1 { 
    background-color: #EEEEEE;
    cursor: hand;
    color: #000000;
    border-left: 1px solid #FFFFFF;
    border-top: 1px solid #FFFFFF;
    border-right: 1px solid gray;
    border-bottom: 1px solid #FFFFFF
 }  /*选项卡按钮正常状态下的样式*/
.sec2 { 
    background-color: #D4D0C8;
    cursor: hand;
 color: #000000;
    border-left: 1px solid #FFFFFF; 
    border-top: 1px solid #FFFFFF; 
    border-right: 1px solid gray; 
    font-weight: bold; 
    }  /*选项卡按钮被按下(即当前被选中)的样式*/
.main_tab {
    background-color: #D4D0C8;
    color: #000000;
    border-left:1px solid #FFFFFF;
    border-right: 1px solid gray;
    border-bottom: 1px solid gray; 


} /*整个面板(即表格)的外观*/
  具体属性可参阅相关资料。
  表格部分的实现

  见下图:



  相信这个表格大家是很容易看清楚的,就不再多讲。代码将在后面给出。最关键的,是如何用这两个表格实现一个动态效果,就是实际的选项卡的效果。下面我们就来看看。

 实际效果的实现

  几个要点,最初的例子中都写出来了,tbody、tbodies、cells、display,这里就不再多讲。有一点要说明的是:事实上,tbodies集合就是一个table中tbody块的个数,cells就是一个table中td的个数。
  下面我们来看看实现最后效果的JavaScript函数:
function secBoard(n)  //参数n表示点击的是哪一个按钮
{
  for(i=0;i//通过循球让所有按钮变为未选中状态
  secTable.cells[n].className="sec2";  //把点击的按钮变为选中状态
  for(i=0;i//先让所有的单元格变为隐藏状态
  mainTable.tBodies[n].style.display="block";  //根据哪一个按钮被点击,让对应的单元格显示
}
 
Copyright ©2006-2009 DbChina.Net | 鲁ICP备05031207号