注册
登录


<!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">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<nav class="navigation">
<ul >
<li class="list active" style="--clr:#f44336"><a href="#"> <span class="icon"><ion-icon name="home-outline"></ion-icon></span></a></li>
<li class="list" style="--clr:#ffa117" ><a href="#"> <span class="icon"><ion-icon name="person-outline"></ion-icon></span></a></li>
<li class="list" style="--clr:#0fc70f"><a href="#"> <span class="icon"><ion-icon name="chatbubble-outline"></span></ion-icon></a></li>
<li class="list" style="--clr:#2196f3"><a href="#"> <span class="icon"><ion-icon name="settings-outline"></ion-icon></span></a></li>
<li class="list" style="--clr:#b145e9"><a href="#"> <span class="icon"><ion-icon name="camera-outline"></ion-icon></span></a></li>
<div class="indicator"></div>
</ul>
</nav>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
<script>
const list = document.querySelectorAll(".list");
function activeLink(){
console.log("1");
list.forEach((element) =>
element.classList.remove('active')
);
this.classList.add('active');
}
list.forEach((element) =>
element.addEventListener('click',activeLink)
);
</script>
</body>
</html>
style.css
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #222327;
}
.navigation{
position: relative;
background-color: #fff;
width: 400px;
height: 60px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10px;
}
.navigation ul {
display: flex;
width: 350px;
}
.navigation ul li {
list-style: none;
position: relative;
width: 70px;
height: 60px;
z-index: 2 ;
}
.navigation ul li a {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.navigation ul li a .icon{
position: relative;
width: 55px;
height: 55px;
text-align: center;
line-height: 65px;
border-radius: 50%;
font-size: 1.5em;
color: #222327;
transition: 0.5s;
transition-delay: 0s;
}
.navigation ul li.active a .icon{
background: var(--clr);
color: #fff;
transform: translateY(-27px);
transition-delay: 0.25s;
}
.navigation ul li a .icon::before{
content: "";
position: absolute;
top: 10px;
left: 0;
width: 100%;
height: 100%;
background-color: var(--clr);
border-radius: 50%;
filter: blur(5px);
opacity: 0;
transition: 0.5s;
transition-delay: 0s;
}
.navigation ul li.active a .icon::before{
opacity: 0.5;
transition-delay: 0.25s;
}
.indicator{
position: absolute;
width: 70px;
height: 70px;
background-color: #fff;
top: -35px;
border-radius: 50%;
z-index: 1;
transition: 0.5s;
}
.indicator::before{
content: "";
position: absolute;
top: 5px;
left: -28px;
background-color: transparent;
width: 30px;
height: 30px;
border-radius: 50%;
box-shadow: 15px 18px #fff;
}
.indicator::after{
content: "";
position: absolute;
top: 5px;
right: -28px;
background-color: transparent;
width: 30px;
height: 30px;
border-radius: 50%;
box-shadow: -15px 18px #fff;
}
.navigation ul li:nth-child(1).active ~ .indicator{
transform: translateX(calc(70px* 0));
}
.navigation ul li:nth-child(2).active ~ .indicator{
transform: translateX(calc(70px * 1));
}
.navigation ul li:nth-child(3).active ~ .indicator{
transform: translateX(calc(70px * 2));
}
.navigation ul li:nth-child(4).active ~ .indicator{
transform: translateX(calc(70px * 3));
}
.navigation ul li:nth-child(5).active ~ .indicator{
transform: translateX(calc(70px * 4));
}