本吊是程序小白,写的代码肯定质量不高,希望看到的朋友不要笑话。从网上找了一部分源码,结合自己的思考,制作了一个能显示二级选项卡的网页。其中一级选项卡部分的源码是从网上找的,我的工作就是在这个源码的基础上做出了二级选项卡效果。通过自己的研究做出了一点东西,就想找个地方记录一下,想必做技术的都有这个爱好吧。废话不多说,上代码吧。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>二级选项卡</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
!window.jQuery && document.write('<script src=http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js><\/script>');
</script>
<script type="text/javascript">
$(document).ready(function() {
jQuery.jqtab = function(tabtit,tabcon) {
$(tabcon).hide();
$(tabtit+" li:first").addClass("thistab").show();
$(tabcon+":first").show();
$(tabtit+" li").mouseover(function() {
$(tabtit+" li").removeClass("thistab");
$(this).addClass("thistab");
$(tabcon).hide();
var activeTab = $(this).find("a").attr("tab");
$("#"+activeTab).fadeIn();
return false;
});
};
/*调用方法如下:*/
$.jqtab("#tabs",".tab_con");
$.jqtab("#tabs2",".tab_con2");
});
</script>
<script language="javascript">
function a(o){return document.getElementById(o);}
function showdiv(i){
for(var j=1;j<=12;j++){
a("div"+j).className="undisplay" //将所有DIV隐藏;
}
for(var k=1;k<=12;k++){
if(k==1||k==5||k==9){
continue;
}
a("li"+k).className="list_unchoosed" //将所有LI样式设为未被选中时的样式
}
a("div"+i).className="display" //显示所需DIV
a("li"+i).className="list_choosed" //对应LI变换样式
}
</script>
<style>
body {
color: #333;
background: #FFF;
font-size: 12px;
}
ul, dl, dd, h1, h2, h3, h4, h5, h6, form, p {
padding: 0;
margin: 0;
}
ul {
list-style: none;
}
a {
text-decoration: none;
color: #333333;
}
a:hover {
text-decoration: underline;
}
.clear {
clear: both;
}
.h2 {
height: 2px;
wodth: 100%;
}
.h100 {
height: 100px;
wodth: 100%;
}
.tab_conbox {
overflow: hidden;
}
.tab_con {
display: none;
}
.tabs {
height: 34px;
width: 100%;
}
.tabs li {
height: 27px;
line-height: 27px;
float: left;
overflow: hidden;
position: relative;
text-align: center;
background: #15CB00;
margin-top: 5px;
margin-left: 10px
}
.tabs li a {
display: block;
width: 142px;
utline: none;
font-size: 14px;
color: #fff;
font-weight: bold
}
.tabs li a:hover {
background: #fff;
color: #318600;
}
.tabs .thistab, .tabs .thistab a:hover {
background: #fff;
}
.tabs .thistab, .tabs .thistab a {
background: #fff;
color: #318600;
}
.index00 {
width: 550px;
height: 32px;
line-height: 34px;
background: #15CB00
}
.list01 {
width: 300px;
height: 30px;
margin-left: 10px;
top: 0px;
border: 1px solid #15CB00;
}
.list01 li {
width: 33.333333333%;
height: 25px;
padding-top: 5px;
float: left;
text-align: center;
background: #15CB00;
}
.list02 {
width: 300px;
height: 30px;
margin-left: 100px;
top: 0px;
border: 1px solid #15CB00;
}
.list02 li {
width: 33.333333333%;
height: 25px;
padding-top: 5px;
float: left;
text-align: center;
background: #15CB00;
}
.list03 {
width: 300px;
height: 30px;
margin-left: 241px;
top: 0px;
border: 1px solid #15CB00;
}
.list03 li {
width: 33.333333333%;
height: 25px;
padding-top: 5px;
float: left;
text-align: center;
background: #15CB00;
}
.list_unchoosed {
display: block;
font-size: 14px;
color: #fff;
font-weight: bold;
line-height: 25px;
border-left: 5px solid #15CB00;
border-right: 5px solid #15CB00;
}
.list_choosed {
background: #fff;
color: #318600;
display: block;
font-size: 14px;
font-weight: bold;
line-height: 25px;
border-left: 5px solid #15CB00;
border-right: 5px solid #15CB00;
}
.display {
display: block;
margin-top: 10px;
height: 100px;
line-height: 100px;
border: 1px solid #1456fd;
font-size: 20px;
font-weight: bold;
text-align: center;
color: #FF0000;
}
.undisplay {
display: none;
}
.tab_conbox2 {
overflow: hidden;
}
.tab_con2 {
display: none;
}
.tabs2 {
height: 34px;
width: 100%;
}
.tabs2 li {
height: 27px;
line-height: 27px;
float: left;
overflow: hidden;
position: relative;
text-align: center;
background: #15CB00;
margin-top: 5px;
margin-left: 10px
}
.tabs2 li a {
display: block;
width: 142px;
utline: none;
font-size: 14px;
color: #fff;
font-weight: bold
}
.tabs2 li a:hover {
background: #fff;
color: #318600;
}
.tabs2 .thistab, .tabs2 .thistab a:hover {
background: #fff;
}
.tabs2 .thistab, .tabs2 .thistab a {
background: #fff;
color: #318600;
}
.display2 {
margin-top: 10px;
height: 100px;
line-height: 100px;
border: 1px solid #1456fd;
font-size: 20px;
font-weight: bold;
text-align: center;
color: #FF0000;
}
</style>
</head>
<body>
<div style="margin: 0px auto;width: 550px;">
<!--主选项卡部分-->
<div class="index00">
<ul class="tabs" id="tabs">
<li οnmοuseοver="showdiv(1)"><a href="/" target="_blank" tab="tab1">选项卡1</a></li>
<li οnmοuseοver="showdiv(5)"><a href="/" target="_blank" tab="tab2">选项卡2</a></li>
<li οnmοuseοver="showdiv(9)"><a href="/" target="_blank" tab="tab3">选项卡3</a></li>
</ul>
</div>
<!--主选项卡部分结束-->
<div class="h2 clear"></div>
<!--副选项卡部分-->
<div>
<ul class="tab_conbox">
<!--选项卡1部分-->
<li id="tab1" class="tab_con" >
<ul class="list01" >
<li οnmοuseοver="showdiv(2)"><a href="/" target="_blank" id="li2" class="list_unchoosed">选项卡1-1</a></li>
<li οnmοuseοver="showdiv(3)"><a href="/" target="_blank" id="li3" class="list_unchoosed">选项卡1-2</a></li>
<li οnmοuseοver="showdiv(4)"><a href="/" target="_blank" id="li4" class="list_unchoosed">选项卡1-3</a></li>
</ul>
<li id="div1" class="display"> 选项卡1的内容 </li>
<li id="div2" class="undisplay" > 选项卡1-1的内容 </li>
<li id="div3" class="undisplay" > 选项卡1-2的内容 </li>
<li id="div4" class="undisplay" > 选项卡1-3的内容 </li>
</li>
<!--选项卡1部分结束-->
<!--选项卡2部分-->
<li id="tab2" class="tab_con" >
<ul class="list02" >
<li οnmοuseοver="showdiv(6)"><a href="/" target="_blank" id="li6" class="list_unchoosed">选项卡2-1</a></li>
<li οnmοuseοver="showdiv(7)"><a href="/" target="_blank" id="li7" class="list_unchoosed">选项卡2-2</a></li>
<li οnmοuseοver="showdiv(8)"><a href="/" target="_blank" id="li8" class="list_unchoosed">选项卡2-3</a></li>
</ul>
<li id="div5" class="undisplay"> 选项卡2的内容 </li>
<li id="div6" class="undisplay" > 选项卡2-1的内容 </li>
<li id="div7" class="undisplay" > 选项卡2-2的内容 </li>
<li id="div8" class="undisplay" > 选项卡2-3的内容 </li>
</li>
<!--选项卡1部分结束-->
<!--选项卡3部分-->
<li id="tab3" class="tab_con" >
<ul class="list03" >
<li οnmοuseοver="showdiv(10)"><a href="/" target="_blank" id="li10" class="list_unchoosed">选项卡3-1</a></li>
<li οnmοuseοver="showdiv(11)"><a href="/" target="_blank" id="li11" class="list_unchoosed">选项卡3-2</a></li>
<li οnmοuseοver="showdiv(12)"><a href="/" target="_blank" id="li12" class="list_unchoosed">选项卡3-3</a></li>
</ul>
<li id="div9" class="undisplay"> 选项卡3的内容 </li>
<li id="div10" class="undisplay"> 选项卡3-1的内容 </li>
<li id="div11" class="undisplay"> 选项卡3-2的内容 </li>
<li id="div12" class="undisplay"> 选项卡3-3的内容 </li>
</li>
<!--选项卡3部分结束-->
</ul>
</div>
<!--副选项卡部分结束-->
<div class="h100 clear"></div>
<!--作为对比一级选项卡-->
<div >
<p style="font-size: 20px;font-weight: bold;margin-bottom:10px;">【作为对比:一级选项卡】</p>
<div class="index00">
<ul class="tabs2" id="tabs2">
<li ><a href="/" target="_blank" tab="tab4">选项卡1</a></li>
<li ><a href="/" target="_blank" tab="tab5">选项卡2</a></li>
<li ><a href="/" target="_blank" tab="tab6">选项卡3</a></li>
</ul>
</div>
<div class="h2 clear"></div>
<div>
<ul class="tab_conbox2">
<li id="tab4" class="tab_con2" >
<div class="display2"> 选项卡1的内容 </div>
</li>
<li id="tab5" class="tab_con2" >
<div class="display2">选项卡2的内容</div>
</li>
<li id="tab6" class="tab_con2" >
<div class="display2">选项卡3的内容</div>
</li>
</ul>
</div>
</div>
</div>
</body>
</html>
总体思想:1、给每一个选项卡对应的内容赋一个ID ,通过JS控制每一个ID的className,从而控制它的显示与隐藏。
2、要显示某个选项卡的内容之前,将所有选项卡的内容隐藏,同时将所有选项卡的LI样式设为未被选中时的样式;之后通过函数的参数显示出所需内容,同时变换对应LI样式。
不足之处:用onmouseover 事件触发函数,如果要选择主选项卡(选项卡1、2、3)里面的内容,那么鼠标不能直接往下移,必须从旁边绕过副选项卡区域
解决方法:用 onclick 事件触发函数,但这种情况下,选项卡内不能含有超链接。