先看下效果
代码
原生js+css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
ul,
li {
list-style: none;
}
ul {
position: relative;
width: 100%;
height: 30px;
}
ul > div {
position: absolute;
display: block;
bottom: 0;
height: 2px;
width: 25%;
background-color: skyblue;
transition-duration: 0.5s;
}
ul li {
float: left;
width: 25%;
padding: 5px;
text-align: center;
}
</style>
</head>
<body>
<ul>
<li>李白</li>
<li>张三</li>
<li>杜甫</li>
<li>唐三藏</li>
<div class="bar"></div>
</ul>
<script>
((doc) => {
const oList = document.getElementsByTagName('li');
[...oList].forEach((li => {
li.addEventListener('click', changeTab)
}))
})(document);
function changeTab (e) {
const bar = document.getElementsByClassName('bar')[0];
bar.style =`transform: translateX(${e.srcElement.offsetLeft}px);`
}
</script>
</body>
</html>