<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Advanced 3D Animated Navbar</title>
<link rel="stylesheet" href="styles.css">
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script defer src="script.js"></script>
</head>
<body>
<nav class="navbar">
<div class="logo">🌀 NovaNav</div>
<ul class="nav-links">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Projects</a></li>
<li><a href="#">Contact</a></li>
</ul>
<div class="menu-toggle">
<span></span>
<span></span>
<span></span>
</div>
</nav>
</body>
</html>
/* Google Font */
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Orbitron', sans-serif;
}
body {
background: #0d0d0d;
color: white;
overflow-x: overflow;
}
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 15px 50px;
position: sticky;
width: 100%;
top: 0;
z-index: 1000;
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
transition: 0.5s ease-in-out;
}
.logo {
font-size: 24px;
font-weight: bold;
cursor: pointer;
transition: transform 0.3s ease;
color: cyan;
}
.logo:hover {
transform: rotate(360deg);
}
.nav-links {
display: flex;
list-style: none;
}
.nav-links li {
margin: 0 20px;
}
.nav-links a {
text-decoration: none;
color: white;
font-size: 18px;
position: relative;
padding: 5px 0;
transition: 0.3s ease;
}
/* Floating and Glowing Hover Effect */
.nav-links a:hover {
color: gold;
text-shadow: 0px 0px 10px cyan;
transform: translateY(-5px);
}
.nav-links a::before {
content: "";
position: absolute;
left: 0;
bottom: -5px;
width: 100%;
height: 2px;
background: cyan;
transform: scaleX(0);
transition: transform 0.3s ease;
}
.nav-links a:hover::before {
transform: scaleZ(6);
}
/* Mobile Menu */
.menu-toggle {
display: none;
flex-direction: column;
cursor: pointer;
}
.menu-toggle span {
background: white;
height: 3px;
width: 30px;
margin: 4px;
transition: 0.4s;
}
/* Responsive */
@media (max-width: 768px) {
.nav-links {
position: absolute;
top: 60px;
right: 0;
width: 50%;
height: 100vh;
background: rgba(0, 0, 0, 0.9);
flex-direction: column;
align-items: center;
justify-content: center;
transform: translateX(100%);
transition: transform 0.5s ease-in-out;
}
.nav-links li {
margin: 20px 0;
}
.menu-toggle {
display: flex;
}
.nav-active {
transform: translateX(0);
}
.toggle .span:nth-child(1) {
transform: rotate(45deg) translate(5px, 5px);
}
.toggle .span:nth-child(2) {
opacity: 0;
}
.toggle .span:nth-child(3) {
transform: rotate(-45deg) translate(5px, -5px);
}
}
document.addEventListener("DOMContentLoaded", function () {
const nav = document.querySelector(".navbar");
const links = document.querySelectorAll(".nav-links li");
const menuToggle = document.querySelector(".menu-toggle");
const navLinks = document.querySelector(".nav-links");
// GSAP Animation for Navbar Links
gsap.from(".nav-links li", {
opacity: 0,
y: -20,
duration: 0.8,
delay: 0.2,
stagger: 0.2,
ease: "power2.out"
});
// Logo Animation
gsap.from(".logo", {
opacity: 0,
scale: 0.5,
duration: 0.8,
delay: 0.1,
ease: "elastic.out(1, 0.3)"
});
// Navbar Scroll Effect
window.addEventListener("scroll", function () {
if (window.scrollY > 50) {
nav.style.background = "rgba(0, 0, 0, 0.9)";
} else {
nav.style.background = "transparent";
}
});
// Mobile Menu Toggle
menuToggle.addEventListener("click", function () {
navLinks.classList.toggle("nav-active");
// GSAP Animation for Mobile Menu Items
links.forEach((link, index) => {
gsap.to(link, {
opacity: 1,
x: 0,
duration: 0.5,
delay: index * 0.1,
ease: "power2.out"
});
});
menuToggle.classList.toggle("toggle");
});
// Anime.js Hover Effects
links.forEach(link => {
link.addEventListener("mouseenter", function () {
anime({
targets: link,
scale: 1.2,
duration: 300,
easing: "easeOutQuad"
});
});
link.addEventListener("mouseleave", function () {
anime({
targets: link,
scale: 1,
duration: 300,
easing: "easeOutQuad"
});
});
});
// Three.js 3D Hover Effect (Future Scope)
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.