html+css+js,现实原理也很简单。
遍历选项卡,清除所有的选中效果,给当前选中的选项卡添加一个active即可。
若有错误,欢迎指正!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
}
ul,
li {
list-style: none;
}
.container {
width: 400px;
margin: 100px;
}
.container ul {
height: 50px;
background-color: skyblue;
text-align: center;
line-height: 50px;
display: flex;
}
.container ul li {
flex: 1;
border-right: 1px solid pink;
color: #000;
}
.container ul li:hover {
cursor: pointer;
}
.container ol {
position: relative;
height: 300px;
background-color: blueviolet;
}
.container ol li {
position: absolute;
top: 0;
left: 0;
text-align: center;
width: 400px;
line-height: 300px;
display: none;
}
.container ul .active {
background-color: rgb(223, 57, 16);
}
.container ol .on {
display: block;
}
</style>
</head>
<body>
<div class="container">
<ul>
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ul>
<ol>
<li class="on">1</li>
<li>2</li>
<li>3</li>
</ol>
</div>
<script>
function Tab() {
this.ulLis = document.querySelectorAll('ul>li')
this.olLis = document.querySelectorAll('ol>li')
this.onTab = function () {
let _this = this
for (let i = 0; i < this.ulLis.length; i++) {
this.ulLis[i].setAttribute('index', i)
this.ulLis[i].addEventListener('click', function () {
console.log(1)
_this.clear()
this.className = 'active'
let index = this.getAttribute('index')
_this.olLis[index].className = 'on'
})
}
}
this.clear = function () {
for (let i = 0; i < this.ulLis.length; i++) {
this.ulLis[i].className = ''
this.olLis[i].className = ''
}
}
}
let t1 = new Tab()
t1.onTab()
</script>
</script>
</body>
</html>