| Web页面中选项卡Tabview的实现 |
|
| 作者是 如坐春风 | |
| 2008-05-06 07:42:32 | |
|
Web页面中TabView的作用 1.将TabView分为菜单和内容两个部分 Tabview,顾名思义,就是一个tab加上一个view,tab用无序列表构造的菜单来实现,view则用div来实现即可.在Web中这样设计实现Tabview比较快捷,如果象可视化编程环境那样用动态隐藏和显示每个tab对应的view则耗时比较长,有些得不偿失. <!-- 选项卡代码开始 --> <table border=0 cellspacing="0" cellpadding="0" height="100%" width="100%"> <tr height="20"><td width="100%"> <div id="tabsHeader"> <ul> <li><a href='javascript:changeTab("date")' id="date"><span>定时取日期</span></a></li> <li><a href='javascript:changeTab("time")' id="time" class="current"><span class="current">定时取日期时间</span></a></li> <li><a href='javascript:changeTab("random")' id="random"><span>定时取随机数</span></a></li> </ul> </div> </td></tr> <tr height="98%" valign="top"><td width="100%"> <div id="tabsBody"> <p>点击每个选项卡</p> <p>程序将使用Ajax从服务器端获得新数据并显示在内容中</p> <p></p> <p></p> <p></p> </div> </td></tr> </table> <!-- 选项卡代码结束 -->![]() tabsHeader的CSS定义 #tabsHeader { width:460px; height:100%; font-size:93%; line-height:normal; } #tabsHeader ul { margin:0; padding:0px; list-style:none; } #tabsHeader li { display:inline; margin:0; padding:0; } #tabsHeader a { float:left; background:url("tableft10.gif") no-repeat left top; margin:0; padding:0 0 0 4px; text-decoration:none; } #tabsHeader a.current { float:left; background:url("tableft10.gif") no-repeat left top; background-position:0% -42px; margin:0; padding:0 0 0 4px; text-decoration:none; } #tabsHeader a span { float:left; display:block; background:url("tabright10.gif") no-repeat right top; padding:5px 15px 4px 6px; color:#FFF; } #tabsHeader a span.current { float:left; display:block; background:url("tabright10.gif") no-repeat right top; background-position:100% -42px; padding:5px 15px 4px 6px; color:#FFF; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ #tabsHeader a span { float:none; } /* End IE5-Mac hack */ #tabsHeader a:hover span { color:#FFF; }![]() .current { background-color:#F6F6F6; }![]() tabsBody的CSS定义 #tabsBody{ width:460px; height:92%; padding:10px; border-left:1px solid #2763A5; border-right:1px solid #2763A5; border-top:1px solid #2763A5; border-bottom:1px solid #2763A5; }2.点击选项卡更换内容的处理 在可视化编程环境中点击选项卡是切换view,在web要这样实现不是不可以,只是有点费力不讨好,其实直接把tabsBody DIV的innerHTML更换掉就实现了view切换的效果. 更换内容的示例代码 // 取得返回文字 var subInnerHTML=ajaxObj.responseXML.getElementsByTagName("content")[0].xml;![]() // 给选项页设置文字 var tabsBodyDiv=document.getElementById("tabsBody"); tabsBodyDiv.innerHTML=subInnerHTML;![]()
Tabview还有一个视觉上的功能是突出显示当前选项卡,这个我们可以通过JS修改菜单的class来实现. Tabview还有一个视觉上的功能是突出显示当前选项卡,这个我们可以通过JS动态修改菜单的class来实现. 菜单的代码如下: <div id="tabsHeader"> <ul> <li><a href='javascript:changeTab("date")' id="date"><span>定时取日期</span></a></li> <li><a href='javascript:changeTab("time")' id="time" class="current"><span class="current">定时取日期时间</span></a></li> <li><a href='javascript:changeTab("random")' id="random"><span>定时取随机数</span></a></li> </ul> </div>![]()
function changeTab(id){ var tabs10Div=document.getElementById("tabsHeader"); // 将所有链接标签重置 var linkNodes=tabs10Div.getElementsByTagName("a"); for(var i=0;i<linkNodes.length;i++){ linkNodes[i].className=""; } // 将所有Span标签重置 var spanNodes=tabs10Div.getElementsByTagName("span"); for(var i=0;i<spanNodes.length;i++){ spanNodes[i].className=""; } // 将当前选择的链接置深 var currentLink=document.getElementById(id); currentLink.className="current"; // 将当前选择的Span置深 var currentSpan=currentLink.getElementsByTagName("span")[0]; currentSpan.className="current"; ajaxObj=createAjaxObject(); var url=prjName+"FetchText?id="+id; // alert(ajaxObj); ajaxObj.open("Get",url,true); ajaxObj.onreadyStateChange=changeTabCallBack; ajaxObj.send(null); }![]() 代码下载: http://www.blogjava.net/Files/sitinspring/TabView20080506114949.zip |
|
| 最近更新 ( 2008-05-06 07:42:32 ) |





}
width

}