Как создать анимированное горизонтальное меню с индикатором | How to Create Animated Navbar Menu with Indicator using HTML CSS and JavaScript
Всем Привет! В этом видео мы создадим анимированное горизонтальное меню панели навигации с индикатором, используя HTML CSS и JavaScript. Надеюсь, это видео будет полезным для вас. Скачать коды можно по ссылке ниже.
Кроме того, если у вас есть какие-либо вопросы, предложения или отзывы, то оставьте комментарий ниже. Ваши отзывы помогают нам создавать более ценный контент.
HTML КОД:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Animated Navbar Menu</title>
<!--css file-->
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<nav class="nav">
<a href="#" class="item active">Home</a>
<a href="#" class="item">Services</a>
<a href="#" class="item">Reviews</a>
<a href="#" class="item">About</a>
<a href="#" class="item">Contact</a>
<span class="indicator"></span>
</nav>
<script src="app.js"></script>
</body>
</html>
CSS КОД:
/* Google Fonts(Poppins) */
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800&display=swap");
* {
font-family: "Poppins", sans-serif;
text-decoration: none;
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: #f2f2f2;
}
.nav {
position: relative;
display: inline-flex;
max-width: 100%;
background: #fff;
padding: 0 20px;
border-radius: 40px;
box-shadow: 0 10px 40px rgba(159, 162, 177, 0.8);
overflow: hidden;
}
.nav .item {
color: #83818c;
padding: 20px;
margin: 0 6px;
font-size: 18px;
font-weight: 500;
position: relative;
transition: 0.5s;
}
.nav .item::before {
position: absolute;
content: "";
width: 100%;
height: 5px;
background: #dfe2ea;
border-radius: 8px 8px 0 0;
left: 0;
bottom: -6px;
opacity: 0;
transition: 0.5s;
}
.nav .item:not(.active):hover:before {
opacity: 1;
bottom: 0;
}
.nav .item:not(.active):hover {
color: #333;
}
.nav .item.active {
color: #0b8c4c;
}
.nav .indicator {
position: absolute;
width: var(--widthJS);
height: 5px;
background: #0b8c4c;
left: 0;
bottom: 0;
transform: translateX(var(--transformJS));
border-radius: 8px 8px 0 0;
transition: 0.5s;
}
JAVASCRIPT КОД:
let navItems = document.querySelectorAll(".item");
let indicator = document.querySelector(".indicator");
let activeLink = document.querySelector(".active");
changeIndicator(activeLink);
navItems.forEach((item) =>
item.addEventListener("click", () => {
document.querySelector(".active").classList.remove("active");
item.classList.add("active");
changeIndicator(item);
})
);
function changeIndicator(item) {
indicator.style.setProperty("--transformJS", `${item.offsetLeft}px`);
indicator.style.setProperty("--widthJS", `${item.offsetWidth}px`);
}
0 Комментарии