请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 62260|回复: 96

三种简洁的Tab导航(网页选项卡)简析 [复制链接]

easeman 楼主
帖子
272
体力
1189
威望
41
居住地
河南省 周口市
发表于 2007-5-20 16:41:18 |显示全部楼层
在网页中应用选项卡可以使网页显得更紧凑,结合AJAX技术可以使页面在有限的空间内展现更多的内容。本文主要介绍几种简洁的选项卡效果的实现(不涉及滑动门和AJAX),附有实例,无图片,兼容性较好,方便大家直接使用。

第一种形式: 通过更换显示样式实现,这种很常见,就不多说了。
  1. <div id="tabs0">
  2. <ul class="menu0" id="menu0">
  3.   <li onclick="setTab(0,0)" class="hover">新闻</li>
  4.   <li onclick="setTab(0,1)">评论</li>
  5.   <li onclick="setTab(0,2)">技术</li>
  6.   <li onclick="setTab(0,3)">点评</li>
  7. </ul>
  8. <div class="main" id="main0">
  9.   <ul class="block"><li>新闻列表</li></ul>
  10.   <ul><li>评论列表</li></ul>
  11.   <ul><li>技术列表</li></ul>
  12.   <ul><li>点评列表</li></ul>
  13. </div>
  14. </div>
复制代码


第二种形式: 这种结构比较复杂一些,外面加一个相对层(.menu1box),设置溢出隐藏,将选项卡(#menu1)设为绝对定位,设置层指针为1(z-index:1;),以便可以遮住下主区块(.main1box)1px的高度。设置主区块的边框为1px的黑边,上空白(margin-top)为-1px,使上边框伸到选项卡下。当改变选项卡某项(li)的背景为白色时便可遮住一部分主区块的上边框。这样效果就实现了。
  1. <div id="tabs1">
  2. <div class="menu1box">
  3.   <ul id="menu1">
  4.    <li class="hover" onmouseover="setTab(1,0)"><a href="#">新闻</a></li>
  5.    <li onmouseover="setTab(1,1)"><a href="#">评论</a></li>
  6.    <li onmouseover="setTab(1,2)"><a href="#">技术</a></li>
  7.    <li onmouseover="setTab(1,3)"><a href="#">点评</a></li>
  8.   </ul>
  9. </div>
  10. <div class="main1box">
  11.   <div class="main" id="main1">
  12.    <ul class="block"><li>新闻列表</li></ul>
  13.    <ul><li>评论列表</li></ul>
  14.    <ul><li>技术列表</li></ul>
  15.    <ul><li>点评列表</li></ul>
  16.   </div>
  17. </div>
  18. </div>
复制代码


第一、二种形式的JS代码:
  1. function setTab(m,n){
  2. var tli=document.getElementById("menu"+m).getElementsByTagName("li"); /*获取选项卡的LI对象*/
  3. var mli=document.getElementById("main"+m).getElementsByTagName("ul"); /*获取主显示区域对象*/
  4. for(i=0;i<tli.length;i++){
  5.   tli[i].className=i==n?"hover":""; /*更改选项卡的LI对象的样式,如果是选定的项则使用.hover样式*/
  6.   mli[i].style.display=i==n?"block":"none"; /*确定主区域显示哪一个对象*/
  7. }
  8. }
复制代码


第三种形式: 这也是一种不常用的方式,加一个相对层(.menu2box),利用一个背景层(#tip2)定位,通过改变层的左距离(left)实现效果。
  1. <div id="tabs2">
  2. <div class="menu2box">
  3.   <div id="tip2"></div>
  4.   <ul id="menu2">
  5.    <li class="hover" onmouseover="nowtab(2,0)"><a href="#">新闻</a></li>
  6.    <li onmouseover="nowtab(2,1)"><a href="#">评论</a></li>
  7.    <li onmouseover="nowtab(2,2)"><a href="#">技术</a></li>
  8.    <li onmouseover="nowtab(2,3)"><a href="#">点评</a></li>
  9.   </ul>
  10. </div>
  11.   <div class="main" id="main2">
  12. 新闻内容
  13. </div>
  14. </div>
复制代码


效果演示:

 提示:您可以先修改部分代码再运行



[ 本帖最后由 easeman 于 2007-5-20 17:32 编辑 ]
已有 1 人评分威望 收起 理由
Sheneyan + 1 谢谢分享

总评分: 威望 + 1   查看全部评分

E-file 互联网基础平台建设项目
西部数码顶级域名注册商39元抢注!

子虚乌有

荣誉管理 手机认证 

帖子
8391
体力
26707
威望
187
居住地
江苏省 苏州市
发表于 2007-5-20 18:31:22 |显示全部楼层
简析……果然是简析,感觉有点意犹未尽。

希望下次看到更多好东东
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

脚本之家

银牌会员

帖子
202
体力
1006
威望
1
居住地
江苏省 徐州市
发表于 2007-5-20 19:23:36 |显示全部楼层
真不错啊,好东西啊

使用道具 举报

刀郎人

高级会员

帖子
438
体力
883
威望
0
居住地
新疆维吾尔自治区 喀什地区
发表于 2007-5-21 12:49:42 |显示全部楼层
真是谢谢楼主啊,我喜欢你的帖子
我的经典收藏:  http://hi.baidu.com/keysarjan

使用道具 举报

dwcli 

莺歌海

银牌会员

帖子
658
体力
1317
威望
0
居住地
海南省 三亚市
发表于 2007-5-21 12:55:06 |显示全部楼层
不错~顶
吾菜吾知

使用道具 举报

蓝色水滴

银牌会员

帖子
304
体力
1404
威望
0
居住地
天津市 南开区
发表于 2007-5-21 13:17:32 |显示全部楼层
真是好东西,谢谢楼主!!!

使用道具 举报

wjsl 
帖子
106
体力
355
威望
0
发表于 2007-5-21 13:40:19 |显示全部楼层
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.className=i==n?"hover":"";
  mli.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.onmouseover=function(){this.style.cursor="pointer"; }   
       B.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 编辑 ]

使用道具 举报

风无双

钻石会员 手机认证 

帖子
1979
体力
6800
威望
1
居住地
广东省 深圳市
发表于 2007-5-21 13:42:55 |显示全部楼层
ls什么意思?

使用道具 举报

绿叶舟

中级会员

帖子
123
体力
262
威望
0
发表于 2007-5-21 13:53:39 |显示全部楼层
比较详细,支持!

使用道具 举报

easeman 楼主
帖子
272
体力
1189
威望
41
居住地
河南省 周口市
发表于 2007-5-21 16:40:15 |显示全部楼层

回复 #7 wjsl 的帖子

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

使用道具 举报

stiub 
帖子
20
体力
41
威望
0
发表于 2007-5-21 20:47:52 |显示全部楼层
<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>

使用道具 举报

帖子
222
体力
908
威望
0
发表于 2007-5-22 11:33:29 |显示全部楼层
不错,支持fox

使用道具 举报

帖子
109
体力
430
威望
0
发表于 2007-5-22 15:17:27 |显示全部楼层
ajax最简单的应用:http://www.sysapi.com//test/ajax2/test.htm(有下载)
设计天空:http://www.sjsky.net

使用道具 举报

帖子
295
体力
551
威望
0
发表于 2007-5-29 16:55:21 |显示全部楼层
真不错啊,好东西啊

使用道具 举报

zcfg 
帖子
169
体力
341
威望
5
发表于 2007-5-29 21:42:30 |显示全部楼层
感谢楼主分享!!  如果能把setTab()函数与7楼的this语句结合会更好

使用道具 举报

帖子
4
体力
33
威望
0
发表于 2007-5-29 22:30:21 |显示全部楼层
高手

使用道具 举报

Deno 

sundown

中级会员

帖子
138
体力
294
威望
0
发表于 2007-6-6 11:30:38 |显示全部楼层
支持一下``

使用道具 举报

红铁

初级会员

帖子
33
体力
114
威望
0
居住地
山东省 济南市
发表于 2007-6-6 13:14:38 |显示全部楼层
顶一下,虽说看不懂,先收藏再慢慢研究。
成功!

使用道具 举报

usming 
帖子
74
体力
193
威望
0
居住地
广西壮族自治区 桂林市
发表于 2007-8-20 10:56:01 |显示全部楼层
收藏了
桂林网

使用道具 举报

lao7 
帖子
4
体力
18
威望
0
发表于 2007-8-20 11:20:51 |显示全部楼层
收藏慢慢看,漫漫学习

使用道具 举报

sun139 
帖子
69
体力
150
威望
0
居住地
江苏省 无锡市
发表于 2007-8-20 11:31:18 |显示全部楼层
是蛮好的.如果不定下也枉路过了,
不能留下什么留下点口水

使用道具 举报

帖子
67
体力
313
威望
0
居住地
广东省 中山市
发表于 2007-8-21 15:36:32 |显示全部楼层
强!!!!有空学习一下

使用道具 举报

帖子
165
体力
758
威望
0
发表于 2007-8-21 16:10:42 |显示全部楼层
有空学习一下!

使用道具 举报

来呢希

初级会员

帖子
111
体力
127
威望
0
发表于 2007-8-21 16:40:21 |显示全部楼层
挺简洁的
疯狂纳妾中

使用道具 举报

MrShan 

罐装曲奇

银牌会员 手机认证 

帖子
443
体力
1550
威望
0
居住地
山东省 烟台市
发表于 2007-8-22 00:29:44 |显示全部楼层
学习ing,太棒了,收藏,哈哈!

使用道具 举报

holyli 
帖子
453
体力
2163
威望
0
发表于 2007-8-22 08:44:07 |显示全部楼层
真是谢谢楼主啊,我喜欢你的帖子

使用道具 举报

帖子
194
体力
710
威望
1
居住地
湖北省 武汉市
发表于 2007-8-23 17:39:20 |显示全部楼层
还可以直接用JS访问CSS属性改变DIV的Display属性......
elfvision.com
pagetalks.com

使用道具 举报

黑色瞳孔

银牌会员

帖子
616
体力
1120
威望
0
居住地
大洋洲 澳大利亚
发表于 2007-8-23 20:25:53 |显示全部楼层
谢谢LZ

使用道具 举报

午饭

银牌会员

帖子
31
体力
1240
威望
0
居住地
广东省 深圳市
发表于 2007-8-24 11:22:14 |显示全部楼层
第二个效果,菜单因为多了边框位置有向下移动

使用道具 举报

帖子
55
体力
137
威望
0
发表于 2007-8-24 11:31:17 |显示全部楼层
最近正在找这方面的资料,不想在此得到,感谢下楼主的贡献!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-4 15:30 , Processed in 0.634939 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部