引言:tab选项卡用的地方比较多,例如个人中心的资料展示。写个最最最简洁。复用性超强的,所以不多写css样式。太辣眼睛的话请见谅。
效果如图
原理:点击切换li通过添加类名显示隐藏div.两次for循环。
第一步:写一个最大的div,设个宽高/边框/居中/方便观看
<div id="tab-list"></div>
<style>
#tab-list{width: 300px; height: 100px; margin: 0 auto; border: 1px solid bisque;}
</style>
第二步:左边写一个列表/左浮动,设个active显示一下当前是哪一个li
<div id="tab-list">
<div id="d1">
<ul id="ul1">
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
</div>
<style>
#tab-list{width: 300px; height: 100px; margin: 0 auto; border: 1px solid bisque;}
#d1{width: 100px; height: 100px;float:left;}
#d1 ul li{background-color: #7396B8;}
#d1 ul li.active{
background-color: red;
}
</style>
第三步:右边写一个div 放显示的内容/右浮动一下/再添加两个显示隐藏的类
<div id="tab-list">
<div id="d1">
<ul id="ul1">
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
<div id="d2">
<div>1</div>
<div class="">2</div>
<div class="">3</div>
</div>
<style>
#tab-list{width: 300px; height: 100px; margin: 0 auto; border: 1px solid bisque;}
#d1{width: 100px; height: 100px;float:left;}
#d1 ul li{background-color: #7396B8;}
#d1 ul li.active{
background-color: red;
}
#d2{width: 190px; height: 100px; float: right;border: 1px saddlebrown solid;}
.hide{display: none;}
.show{display: block;}
</style>
页面如下
第五步:把内容2,3 隐藏 添加类名给他们就行了
第六步:js部分
<script type="text/javascript">
var dli=document.getElementById('ul1');
// 获取ul alert(dli);
var ali=dli.getElementsByTagName('li');
// 通过ul获取到ul>li alert(dlis);
var d2=document.getElementById('d2');
//获取显示内容的div
var adiv=d2.getElementsByTagName('div');//通过div获取显示要切换的内容的所有div
for(var i=0;i<ali.length;i++)//遍历列表
{
ali[i].index=i;//添加索引值以便右边的div查询是点击了哪个li
ali[i].onclick=function(){//给每一个li添加点击事件
for(var i=0;i<ali.length;i++){
ali[i].className="";
}//先清空li的样式
this.className="active";//给当前的li添加样式,就背景颜色变了
for(var j=0;j<adiv.length;j++)//遍历所有div
{
adiv[j].className="hide";//先全部隐藏
}
adiv[this.index].className="show";//通过索引值显示对应的div
}
}
</script>
完整代码
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>系好安全带,准备启航</title>
<!--引入外部文件的方式-->
<style>
#tab-list{width: 300px; height: 100px; margin: 0 auto; border: 1px solid bisque;}
#d1{width: 100px; height: 100px;float:left;}
#d1 ul li{background-color: #7396B8;}
#d1 ul li.active{
background-color: red;
}
#d2{width: 190px; height: 100px; float: right;border: 1px saddlebrown solid;}
.hide{display: none;}
.show{display: block;}
</style>
<script type="text/javascript" src="css/jquery-3.2.1.min.js"></script>
</head>
<body>
<div id="tab-list">
<div id="d1">
<ul id="ul1">
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
<div id="d2">
<div>1</div>
<div class="hide">2</div>
<div class="hide">3</div>
</div>
</div>
<script type="text/javascript">
var dli=document.getElementById('ul1');
// alert(dli);
var ali=dli.getElementsByTagName('li');
// alert(dlis);
var d2=document.getElementById('d2');
var adiv=d2.getElementsByTagName('div');
for(var i=0;i<ali.length;i++)
{
ali[i].index=i;
ali[i].onclick=function(){
for(var i=0;i<ali.length;i++){
ali[i].className="";
}
this.className="active";
for(var j=0;j<adiv.length;j++)
{
adiv[j].className="hide";
}
adiv[this.index].className="show";
}
}
</script>
</body>
</html>
有空再改成jq