<div class="flip-nav-container">
<div class="flip-nav-demo">
<nav class="flip-navbar">
<div class="nav-brand-3d">
<div class="brand-cube">
<div class="cube-face front">LOGO</div>
<div class="cube-face back">3D</div>
</div>
</div>
<div class="flip-nav-menu">
<div class="nav-item-3d">
<div class="nav-cube">
<div class="cube-face front">Inicio</div>
<div class="cube-face back">🏠</div>
</div>
</div>
<div class="nav-item-3d">
<div class="nav-cube">
<div class="cube-face front">Acerca</div>
<div class="cube-face back">👥</div>
</div>
</div>
<div class="nav-item-3d">
<div class="nav-cube">
<div class="cube-face front">Servicios</div>
<div class="cube-face back">⚙️</div>
</div>
</div>
<div class="nav-item-3d">
<div class="nav-cube">
<div class="cube-face front">Portafolio</div>
<div class="cube-face back">💼</div>
</div>
</div>
<div class="nav-item-3d">
<div class="nav-cube">
<div class="cube-face front">Contacto</div>
<div class="cube-face back">📧</div>
</div>
</div>
</div>
<div class="nav-actions-3d">
<div class="action-cube">
<div class="cube-face front">Acceder</div>
<div class="cube-face back">🔐</div>
</div>
</div>
</nav>
</div>
</div>
.flip-nav-container {
background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
padding: 30px;
border-radius: 20px;
perspective: 1000px;
max-width: 1200px;
margin: 0 auto;
}
.flip-nav-demo {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
border-radius: 15px;
border: 1px solid rgba(255, 255, 255, 0.2);
overflow: hidden;
}
.flip-navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 40px;
position: relative;
}
.nav-brand-3d, .nav-item-3d, .action-cube {
perspective: 200px;
}
.brand-cube, .nav-cube, .action-cube {
position: relative;
transform-style: preserve-3d;
transition: transform 0.6s cubic-bezier(0.4, 0.0, 0.2, 1);
cursor: pointer;
}
.brand-cube {
width: 80px;
height: 40px;
}
.nav-cube {
width: 100px;
height: 40px;
}
.action-cube {
width: 80px;
height: 40px;
}
.cube-face {
position: absolute;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 600;
border-radius: 8px;
transition: all 0.3s ease;
}
.brand-cube .cube-face {
background: linear-gradient(45deg, #ff6b6b, #ee5a24);
color: white;
font-size: 1.2rem;
}
.nav-cube .cube-face {
background: linear-gradient(45deg, #74b9ff, #0984e3);
color: white;
font-size: 0.9rem;
}
.action-cube .cube-face {
background: linear-gradient(45deg, #00b894, #00a085);
color: white;
font-size: 0.9rem;
}
.cube-face.front {
transform: rotateY(0deg) translateZ(20px);
}
.cube-face.back {
transform: rotateY(180deg) translateZ(20px);
font-size: 1.5rem;
}
.flip-nav-menu {
display: flex;
gap: 20px;
align-items: center;
}
.nav-brand-3d:hover .brand-cube,
.nav-item-3d:hover .nav-cube,
.nav-actions-3d:hover .action-cube {
transform: rotateY(180deg);
}
.nav-brand-3d:hover .brand-cube {
transform: rotateY(180deg) scale(1.1);
}
.nav-item-3d:hover .nav-cube {
transform: rotateY(180deg) translateY(-5px);
}
.action-cube:hover {
transform: rotateY(180deg) scale(1.05);
}
.cube-face:hover {
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
}
@media (max-width: 768px) {
.flip-navbar {
flex-direction: column;
gap: 20px;
padding: 20px;
}
.flip-nav-menu {
flex-wrap: wrap;
justify-content: center;
gap: 15px;
}
.nav-cube, .brand-cube, .action-cube {
width: 80px;
height: 35px;
}
.cube-face {
font-size: 0.8rem;
}
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
}
.flip-navbar {
animation: float 6s ease-in-out infinite;
}
document.addEventListener('DOMContentLoaded', function() {
const navItems = document.querySelectorAll('.nav-item-3d, .nav-brand-3d, .nav-actions-3d');
// Agregar efectos de clic
navItems.forEach(item => {
item.addEventListener('click', function(e) {
e.preventDefault();
// Agregar efecto de pulso
this.style.transform = 'scale(0.95)';
setTimeout(() => {
this.style.transform = 'scale(1)';
}, 150);
// Agregar efecto de ondas
const ripple = document.createElement('div');
ripple.style.cssText = `
position: absolute;
border-radius: 50%;
background: rgba(255, 255, 255, 0.6);
transform: scale(0);
animation: ripple 0.6s linear;
pointer-events: none;
left: 50%;
top: 50%;
width: 20px;
height: 20px;
margin-left: -10px;
margin-top: -10px;
`;
this.style.position = 'relative';
this.appendChild(ripple);
setTimeout(() => {
ripple.remove();
}, 600);
});
});
// Agregar CSS para animación de ondas
const style = document.createElement('style');
style.textContent = `
@keyframes ripple {
to {
transform: scale(4);
opacity: 0;
}
}
`;
document.head.appendChild(style);
// Efecto de rotación aleatoria al cargar
setTimeout(() => {
navItems.forEach((item, index) => {
setTimeout(() => {
const cube = item.querySelector('.brand-cube, .nav-cube, .action-cube');
if (cube) {
cube.style.transform = 'rotateY(360deg)';
setTimeout(() => {
cube.style.transform = 'rotateY(0deg)';
}, 600);
}
}, index * 100);
});
}, 500);
});