<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
ul,
ol,
li {
list-style: none;
}
.container {
width: 600px;
height: 400px;
border: 10px solid #333;
margin: 30px auto;
display: flex;
flex-direction: column;
}
.container>ul {
width: 100%;
height: 40px;
display: flex;
}
.container>ul>li {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
font-size: 30px;
color: #fff;
background-color: hotpink;
}
.container>ul>li.active {
background-color: orange;
}
.container>ol {
flex: 1;
position: relative;
}
.container>ol>li {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: skyblue;
color: #fff;
font-size: 100px;
display: flex;
justify-content: center;
align-items: center;
display: none;
}
.container>ol>li.active {
display: flex;
}
</style>
</head>
<body>
<div class="container">
<ul>
<li class="active">1</li>
<li id="1">2</li>
<li id="1">3</li>
</ul>
<ol>
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ol>
</div>
<script>
function Tab(lab){
// 获取页面元素
this.ulLiObj = lab.querySelectorAll('ul > li');
this.olLiObj = lab.querySelectorAll('ol > li');
}
Tab.prototype.tab = function () {
// 常量定义,用户无法修改
const _this = this;
// ulli添加点击事件
this.ulLiObj.forEach((item, index) => {
item.addEventListener('click', () => {
// 去除其他liclass属性
_this.ulLiObj.forEach((ele, index) => {
ele.removeAttribute('class');
// 去除对应olli的class
_this.olLiObj[index].removeAttribute('class');
})
// 给自己添加class
item.setAttribute('class', 'active');
// 给对应olli添加class
_this.olLiObj[index].setAttribute('class', 'active')
})
})
}
let divObj = document.querySelector('.container');
let tab1 = new Tab(divObj);
tab1.tab();
</script>
</body>
</html>