Navigáció
Futurisztikus lebegő vonalmenü
Élő előnézet – a komponens teljes méretben.
Élő előnézet
HTML · CSS · JS
<nav class="future-line-menu">
<a href="#" class="future-item active">
<span class="future-number">01</span>
<span class="future-label">Kezdőlap</span>
</a>
<a href="#" class="future-item">
<span class="future-number">02</span>
<span class="future-label">Rólunk</span>
</a>
<a href="#" class="future-item">
<span class="future-number">03</span>
<span class="future-label">Munkáink</span>
</a>
<a href="#" class="future-item">
<span class="future-number">04</span>
<span class="future-label">Szolgáltatások</span>
</a>
<a href="#" class="future-item">
<span class="future-number">05</span>
<span class="future-label">Kapcsolat</span>
</a>
</nav>
.future-line-menu {
display: flex;
align-items: stretch;
width: max-content;
max-width: calc(100% - 30px);
margin: 0 auto;
border-top: 1px solid rgba(46, 204, 113, 0.22);
border-bottom: 1px solid rgba(46, 204, 113, 0.12);
background: rgba(8, 13, 19, 0.75);
}
.future-item {
position: relative;
min-width: 125px;
padding: 17px 22px;
display: flex;
flex-direction: column;
gap: 5px;
color: #657180;
text-decoration: none;
border-left: 1px solid rgba(255, 255, 255, 0.055);
overflow: hidden;
transition:
color 0.3s ease,
background 0.3s ease;
}
.future-item:last-child {
border-right: 1px solid rgba(255, 255, 255, 0.055);
}
.future-item::before {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 2px;
background: #2ecc71;
transform: scaleX(0);
transform-origin: left;
transition: transform 0.35s ease;
box-shadow: 0 0 12px rgba(46, 204, 113, 0.7);
}
.future-item::after {
content: "";
position: absolute;
top: 0;
right: 0;
width: 1px;
height: 100%;
background: linear-gradient(
to bottom,
transparent,
rgba(46, 204, 113, 0.5),
transparent
);
opacity: 0;
transition: opacity 0.3s ease;
}
.future-item:hover,
.future-item.active {
color: #ffffff;
background: rgba(46, 204, 113, 0.045);
}
.future-item:hover::before,
.future-item.active::before {
transform: scaleX(1);
}
.future-item:hover::after {
opacity: 1;
}
.future-number {
color: #3f4b58;
font-family: monospace;
font-size: 10px;
letter-spacing: 2px;
transition: color 0.3s ease;
}
.future-label {
font-size: 13px;
letter-spacing: 0.5px;
}
.future-item:hover .future-number,
.future-item.active .future-number {
color: #2ecc71;
}
.future-item.active::before {
box-shadow:
0 0 8px rgba(46, 204, 113, 0.7),
0 0 20px rgba(46, 204, 113, 0.3);
}
@media (max-width: 700px) {
.future-line-menu {
width: calc(100% - 30px);
flex-wrap: wrap;
}
.future-item {
flex: 1 1 120px;
}
}
@media (max-width: 480px) {
.future-label {
font-size: 12px;
}
.future-item {
min-width: 50%;
}
}
document.querySelectorAll(".future-line-menu").forEach(menu => {
const items = menu.querySelectorAll(".future-item");
items.forEach(item => {
item.addEventListener("click", function () {
items.forEach(link => {
link.classList.remove("active");
});
this.classList.add("active");
});
});
});