html代码:
<div id="warp"> <ul id="left_list"> <li class="active">a</li> <li>b</li> <li>c</li> <li>d</li> </ul> <div id="right"> <div class="right_box test haha" style="display: block"> <a href="#">a1</a> <ul> <li class="active">a1</li> <li>a2</li> <li>a3</li> <li>a4</li> </ul> </div> <div class="right_box"> <a href="#">b1</a> <ul> <li class="active">b1</li> <li>b2</li> <li>b3</li> <li>b4</li> </ul> </div> <div class="right_box"> <a href="#">c1</a> <ul> <li class="active">c1</li> <li>c2</li> <li>c3</li> <li>c4</li> </ul> </div> <div class="right_box"> <a href="#">d1</a> <ul> <li class="active">d1</li> <li>d2</li> <li>d3</li> <li>d4</li> </ul> </div> </div> </div>
css代码:
<style>
* {
padding: 0;
margin: 0;
list-style: none;
}
#warp {
800px;
border: 1px solid #000000;
margin: 20px auto;
background: blue;
height: 362px;
}
#left_list {
float: left
}
#left_list li {
200px;
height: 89px;
background: red;
margin-bottom: 2px;
color: #fff;
font: 50px/89px "黑体";
text-align: center;
}
#left_list .active {
background: yellow;
color: #000;
}
#right {
float: left
}
#right a {
display: block;
600px;
height: 322px;
text-align: center;
color: #000;
font: 100px/322px "Microsoft YaHei";
text-decoration: none;
background: #0F0;
}
#right li {
height: 40px;
float: left;
148px;
background: #909;
text-align: center;
font: 20px/40px "Microsoft YaHei";
margin-right: 2px;
color: #fff;
}
#right .active {
background: #fff;
color: #000;
}
#right div {
display: none;
}
</style>
js代码:
<script>
// 获取元素
var leftList = document.getElementById("left_list"),
leftListOlis = leftList.getElementsByTagName("li");
var right = document.getElementById("right"),
rightBoxs = right.getElementsByClassName("right_box");
console.log(leftListOlis, rightBoxs);
// 循环绑定事件
for (var i = 0; i < leftListOlis.length; i++) {
// 自定义索引
leftListOlis[i].index = i;
// 给当前这个li绑定事件
leftListOlis[i].onclick = function () {
// 函数的调用 传递实参(当前这个li自定义索引的值)
tabChage(this.index);
}
}
// 大的选项卡切换
function tabChage(index) {
// 先清空所有的激活样式
for (var i = 0; i < leftListOlis.length; i++) {
leftListOlis[i].className = "";
rightBoxs[i].style.display = "none";
}
// 再让当前这个li和对应的那个div有激活样式
leftListOlis[index].className = "active";
rightBoxs[index].style.display = "block";
// 当前展示区域下 小的选项卡切换
change(rightBoxs[index]);
}
// 默认展示是第一项 对应的是第一块区域 如果用户直接点击第一块区域对应的小的选项卡没办法切换 默认调永一次change方法
change(rightBoxs[0]);
// 小的选项卡切换
//curRightBox 限定获取范围
function change(curRightBox){
// 获取元素
var curOlis = curRightBox.getElementsByTagName("li"),
curA = curRightBox.getElementsByTagName("a")[0];
console.log(curOlis,curA);
// 循环变量给当前这块区域下的每一个li绑定事件
for(var i = 0;i<curOlis.length;i++){
curOlis[i].onclick = function(){
// 先清空所有的激活样式
for(var j = 0;j<curOlis.length;j++){
curOlis[j].className = "";
}
// 让当前这个li有激活样式
this.className = "active";
// 将当前这个li的内容展示到a标签
curA.innerHTML = this.innerHTML;
}
}
}
</script>
展示效果图:
