Kártyák és dobozok
Neon fókusz
Élő előnézet – a komponens teljes méretben.
Élő előnézet
HTML · CSS · JS
<div class="cards-04">
<article class="card-04">
<div class="card-04-glow"></div>
<div class="card-04-top">
<span>01</span>
<div class="card-04-status">
<i></i>
ACTIVE
</div>
</div>
<div class="card-04-orb">
<div class="card-04-ring ring-1"></div>
<div class="card-04-ring ring-2"></div>
<div class="card-04-ring ring-3"></div>
<div class="card-04-core"></div>
</div>
<div class="card-04-content">
<span class="card-04-label">DIGITAL EXPERIENCE</span>
<h3>Új perspektíva</h3>
<p>
Olyan digitális élmény, amely nem egyszerűen
megjelenik, hanem karaktert ad az oldalnak.
</p>
</div>
<a href="#" class="card-04-link">
<span>Felfedezem</span>
<i class="bi bi-arrow-up-right"></i>
</a>
</article>
<article class="card-04">
<div class="card-04-glow"></div>
<div class="card-04-top">
<span>02</span>
<div class="card-04-status">
<i></i>
ACTIVE
</div>
</div>
<div class="card-04-orb">
<div class="card-04-ring ring-1"></div>
<div class="card-04-ring ring-2"></div>
<div class="card-04-ring ring-3"></div>
<div class="card-04-core"></div>
</div>
<div class="card-04-content">
<span class="card-04-label">SMART SYSTEM</span>
<h3>Intelligens forma</h3>
<p>
A technológia akkor működik igazán jól,
amikor a komplexitás egyszerűnek látszik.
</p>
</div>
<a href="#" class="card-04-link">
<span>Megnézem</span>
<i class="bi bi-arrow-up-right"></i>
</a>
</article>
<article class="card-04">
<div class="card-04-glow"></div>
<div class="card-04-top">
<span>03</span>
<div class="card-04-status">
<i></i>
ACTIVE
</div>
</div>
<div class="card-04-orb">
<div class="card-04-ring ring-1"></div>
<div class="card-04-ring ring-2"></div>
<div class="card-04-ring ring-3"></div>
<div class="card-04-core"></div>
</div>
<div class="card-04-content">
<span class="card-04-label">CREATIVE LAB</span>
<h3>Határtalan ötlet</h3>
<p>
Merész koncepciók, finom részletek és
olyan megoldások, amelyekre emlékezni lehet.
</p>
</div>
<a href="#" class="card-04-link">
<span>Tovább</span>
<i class="bi bi-arrow-up-right"></i>
</a>
</article>
</div>
.cards-04 {
width: min(1180px, calc(100% - 30px));
margin: 0 auto;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.card-04 {
position: relative;
min-height: 500px;
padding: 28px;
overflow: hidden;
display: flex;
flex-direction: column;
border: 1px solid rgba(255,255,255,0.08);
border-radius: 26px;
background:
radial-gradient(
circle at 50% 35%,
rgba(46,204,113,0.055),
transparent 34%
),
linear-gradient(
145deg,
#0d1519,
#070b10
);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.04),
0 25px 60px rgba(0,0,0,0.35);
transition:
transform 0.5s ease,
border-color 0.5s ease,
box-shadow 0.5s ease;
}
.card-04:hover {
transform: translateY(-9px);
border-color: rgba(46,204,113,0.35);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.06),
0 35px 80px rgba(0,0,0,0.45),
0 0 40px rgba(46,204,113,0.07);
}
/* =========================
FÉNY
========================= */
.card-04-glow {
position: absolute;
width: 230px;
height: 230px;
left: 50%;
top: 85px;
transform: translateX(-50%);
border-radius: 50%;
background: #2ecc71;
opacity: 0.035;
filter: blur(60px);
transition:
transform 0.7s ease,
opacity 0.7s ease;
}
.card-04:hover .card-04-glow {
transform: translateX(-50%) scale(1.5);
opacity: 0.09;
}
/* =========================
FELSŐ RÉSZ
========================= */
.card-04-top {
position: relative;
z-index: 5;
display: flex;
align-items: center;
justify-content: space-between;
}
.card-04-top > span {
color: rgba(255,255,255,0.3);
font-family: monospace;
font-size: 10px;
letter-spacing: 2px;
}
.card-04-status {
display: flex;
align-items: center;
gap: 7px;
color: rgba(255,255,255,0.35);
font-family: monospace;
font-size: 8px;
letter-spacing: 1.5px;
}
.card-04-status i {
width: 5px;
height: 5px;
border-radius: 50%;
background: #2ecc71;
box-shadow:
0 0 10px rgba(46,204,113,0.9);
animation: card04Pulse 2s ease-in-out infinite;
}
@keyframes card04Pulse {
0%, 100% {
opacity: 0.35;
transform: scale(0.8);
}
50% {
opacity: 1;
transform: scale(1.2);
}
}
/* =========================
ORBIT
========================= */
.card-04-orb {
position: absolute;
width: 205px;
height: 205px;
left: 50%;
top: 65px;
transform: translateX(-50%);
border-radius: 50%;
}
.card-04-ring {
position: absolute;
inset: 0;
border: 1px solid rgba(46,204,113,0.12);
border-radius: 50%;
}
.ring-1 {
animation: card04Rotate 14s linear infinite;
}
.ring-2 {
inset: 22px;
border-color: rgba(46,204,113,0.18);
transform: rotateX(65deg);
animation: card04RotateReverse 10s linear infinite;
}
.ring-3 {
inset: 48px;
border-color: rgba(46,204,113,0.24);
transform: rotateY(65deg);
animation: card04Rotate 7s linear infinite;
}
.card-04-core {
position: absolute;
width: 18px;
height: 18px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 1px solid #2ecc71;
border-radius: 50%;
background: rgba(46,204,113,0.18);
box-shadow:
0 0 12px rgba(46,204,113,0.8),
0 0 35px rgba(46,204,113,0.3);
animation: card04Core 2.5s ease-in-out infinite;
}
@keyframes card04Rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes card04RotateReverse {
from {
transform: rotate(360deg) rotateX(65deg);
}
to {
transform: rotate(0deg) rotateX(65deg);
}
}
@keyframes card04Core {
0%, 100% {
box-shadow:
0 0 12px rgba(46,204,113,0.8),
0 0 35px rgba(46,204,113,0.3);
}
50% {
box-shadow:
0 0 18px rgba(46,204,113,1),
0 0 55px rgba(46,204,113,0.5);
}
}
/* =========================
TARTALOM
========================= */
.card-04-content {
position: relative;
z-index: 5;
margin-top: auto;
padding-top: 245px;
}
.card-04-label {
display: block;
margin-bottom: 13px;
color: #2ecc71;
font-family: monospace;
font-size: 9px;
letter-spacing: 2.5px;
}
.card-04 h3 {
margin: 0 0 14px;
color: #ffffff;
font-family: "Bodoni Moda", Georgia, serif;
font-size: 30px;
font-weight: 500;
line-height: 1.08;
}
.card-04 p {
margin: 0;
max-width: 310px;
color: #7d8993;
font-size: 12px;
line-height: 1.8;
}
/* =========================
LINK
========================= */
.card-04-link {
position: relative;
z-index: 5;
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 22px;
padding-top: 17px;
border-top: 1px solid rgba(255,255,255,0.07);
color: #ffffff;
text-decoration: none;
font-size: 11px;
letter-spacing: 0.7px;
}
.card-04-link i {
color: #2ecc71;
transition:
transform 0.35s ease;
}
.card-04-link:hover i {
transform: translate(4px, -4px);
}
/* =========================
RESZPONZÍV
========================= */
@media (max-width: 900px) {
.cards-04 {
grid-template-columns: 1fr;
max-width: 520px;
}
}
@media (max-width: 480px) {
.cards-04 {
width: calc(100% - 24px);
}
.card-04 {
min-height: 470px;
}
}
document.querySelectorAll(".cards-04").forEach(group => {
group.querySelectorAll(".card-04").forEach(card => {
card.addEventListener("mousemove", event => {
const rect = card.getBoundingClientRect();
const x = event.clientX - rect.left;
const y = event.clientY - rect.top;
const rotateX =
((y / rect.height) - 0.5) * -4;
const rotateY =
((x / rect.width) - 0.5) * 4;
card.style.transform =
`translateY(-9px) perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
});
card.addEventListener("mouseleave", () => {
card.style.transform = "";
});
});
});