打印

三种简洁的Tab导航(网页选项卡)简析

本主题由 cloudgamer 于 2009-8-9 07:34 下沉
在网页中应用选项卡可以使网页显得更紧凑,结合AJAX技术可以使页面在有限的空间内展现更多的内容。本文主要介绍几种简洁的选项卡效果的实现(不涉及滑动门和AJAX),附有实例,无图片,兼容性较好,方便大家直接使用。

第一种形式: 通过更换显示样式实现,这种很常见,就不多说了。
复制内容到剪贴板
代码:
<div id="tabs0">
<ul class="menu0" id="menu0">
  <li onclick="setTab(0,0)" class="hover">新闻</li>
  <li onclick="setTab(0,1)">评论</li>
  <li onclick="setTab(0,2)">技术</li>
  <li onclick="setTab(0,3)">点评</li>
</ul>
<div class="main" id="main0">
  <ul class="block"><li>新闻列表</li></ul>
  <ul><li>评论列表</li></ul>
  <ul><li>技术列表</li></ul>
  <ul><li>点评列表</li></ul>
</div>
</div>
第二种形式: 这种结构比较复杂一些,外面加一个相对层(.menu1box),设置溢出隐藏,将选项卡(#menu1)设为绝对定位,设置层指针为1(z-index:1;),以便可以遮住下主区块(.main1box)1px的高度。设置主区块的边框为1px的黑边,上空白(margin-top)为-1px,使上边框伸到选项卡下。当改变选项卡某项(li)的背景为白色时便可遮住一部分主区块的上边框。这样效果就实现了。
复制内容到剪贴板
代码:
<div id="tabs1">
<div class="menu1box">
  <ul id="menu1">
   <li class="hover" onmouseover="setTab(1,0)"><a href="#">新闻</a></li>
   <li onmouseover="setTab(1,1)"><a href="#">评论</a></li>
   <li onmouseover="setTab(1,2)"><a href="#">技术</a></li>
   <li onmouseover="setTab(1,3)"><a href="#">点评</a></li>
  </ul>
</div>
<div class="main1box">
  <div class="main" id="main1">
   <ul class="block"><li>新闻列表</li></ul>
   <ul><li>评论列表</li></ul>
   <ul><li>技术列表</li></ul>
   <ul><li>点评列表</li></ul>
  </div>
</div>
</div>
第一、二种形式的JS代码:
复制内容到剪贴板
代码:
function setTab(m,n){
var tli=document.getElementById("menu"+m).getElementsByTagName("li"); /*获取选项卡的LI对象*/
var mli=document.getElementById("main"+m).getElementsByTagName("ul"); /*获取主显示区域对象*/
for(i=0;i<tli.length;i++){
  tli[i].className=i==n?"hover":""; /*更改选项卡的LI对象的样式,如果是选定的项则使用.hover样式*/
  mli[i].style.display=i==n?"block":"none"; /*确定主区域显示哪一个对象*/
}
}
第三种形式: 这也是一种不常用的方式,加一个相对层(.menu2box),利用一个背景层(#tip2)定位,通过改变层的左距离(left)实现效果。
复制内容到剪贴板
代码:
<div id="tabs2">
<div class="menu2box">
  <div id="tip2"></div>
  <ul id="menu2">
   <li class="hover" onmouseover="nowtab(2,0)"><a href="#">新闻</a></li>
   <li onmouseover="nowtab(2,1)"><a href="#">评论</a></li>
   <li onmouseover="nowtab(2,2)"><a href="#">技术</a></li>
   <li onmouseover="nowtab(2,3)"><a href="#">点评</a></li>
  </ul>
</div>
  <div class="main" id="main2">
新闻内容
</div>
</div>
效果演示:

 提示:您可以先修改部分代码再运行
[ 本帖最后由 easeman 于 2007-5-20 17:32 编辑 ]
本帖最近评分记录
  • Sheneyan 威望 +1 谢谢分享 2007-5-20 18:30
E-file 互联网基础平台建设项目
简析……果然是简析,感觉有点意犹未尽。

希望下次看到更多好东东
真不错啊,好东西啊
真是谢谢楼主啊,我喜欢你的帖子
我的经典收藏:  http://hi.baidu.com/keysarjan

TOP

不错~顶
吾菜吾知

TOP

真是好东西,谢谢楼主!!!

TOP

http://bbs.blueidea.com/viewthread.php?tid=2747202&highlight=
看过这片是否有所发现,

不可断定是...
引用:
<script>
<!--
/*第一种形式 第二种形式 更换显示样式*/
function setTab(m,n){
var tli=document.getElementById("menu"+m).getElementsByTagName("li");
var mli=document.getElementById("main"+m).getElementsByTagName("ul");
for(i=0;i<tli.length;i++){
  tli[i].className=i==n?"hover":"";
  mli[i].style.display=i==n?"block":"none";
}
}

/*第三种形式 利用一个背景层定位*/
var m3={0:"",1:"评论内容",2:"技术内容",3:"点评内容"}
function nowtab(m,n){
if(n!=0&&m3[0]=="")m3[0]=document.getElementById("main2").innerHTML;
document.getElementById("tip"+m).style.left=n*100+'px';
document.getElementById("main2").innerHTML=m3[n];
}
//-->
</script>
引用:
<script language="JavaScript" type="text/javascript">
//横型菜单
var B=document.getElementById("span").getElementsByTagName("span")
var E=document.getElementById("cap").getElementsByTagName("tr")
for(var i=0;i<B.length;i++){
    B[i].onmouseover=function(){this.style.cursor="pointer"; }   
       B[i].onclick=function(){this.title=1
       for(var f=1;f<E.length;f++)E[f].style.display="none"
       for(var e=0;e<B.length;e++){
              B[e].style.backgroundColor="#3399CC"
              this.style.backgroundColor="#3333CC"
                     if(B[e].title==1)
                            if(E[e+1].style.display=="")E[e+1].style.display="none"
                            else E[e+1].style.display=""}
                            this.title=0
       }
}
</script>
[ 本帖最后由 wjsl 于 2007-5-21 13:41 编辑 ]

TOP

ls什么意思?
www.5study.net www.websdeveloper.cn

TOP

比较详细,支持!

TOP

回复 #7 wjsl 的帖子

有何高见,这段代码有什么问题吗?
E-file 互联网基础平台建设项目

TOP

<pre><code><SCRIPT LANGUAGE="JavaScript">
<!--//
  function Appear(target_div,other_div1,other_div2)
  {
      target_div.style.display="block";
      other_div1.style.display="none";
      other_div2.style.display="none";
           }
//-->
</SCRIPT></code>
</pre>

TOP

不错,支持fox

TOP

ajax最简单的应用:http://www.sysapi.com//test/ajax2/test.htm(有下载)
设计天空:http://www.sjsky.net

TOP

真不错啊,好东西啊

TOP

感谢楼主分享!!  如果能把setTab()函数与7楼的this语句结合会更好

TOP

高手

TOP

支持一下``

TOP

顶一下,虽说看不懂,先收藏再慢慢研究。
成功!

TOP

收藏了
桂林网

TOP

收藏慢慢看,漫漫学习

TOP

是蛮好的.如果不定下也枉路过了,
不能留下什么留下点口水

TOP

强!!!!有空学习一下

TOP

有空学习一下!

TOP

挺简洁的
疯狂纳妾中

TOP

学习ing,太棒了,收藏,哈哈!

TOP

真是谢谢楼主啊,我喜欢你的帖子

TOP

还可以直接用JS访问CSS属性改变DIV的Display属性......
elfvision.com
pagetalks.com

TOP

谢谢LZ

TOP

第二个效果,菜单因为多了边框位置有向下移动

TOP

最近正在找这方面的资料,不想在此得到,感谢下楼主的贡献!

TOP