Kártyák és dobozok
3D lebegő rétegek
Élő előnézet – a komponens teljes méretben.
Élő előnézet
HTML · CSS · JS
<div class="cards-10">
<article class="card-10">
<div class="card-10-layer layer-back"></div>
<div class="card-10-layer layer-middle"></div>
<div class="card-10-inner">
<div class="card-10-number">01</div>
<div class="card-10-icon">
<i class="bi bi-boxes"></i>
</div>
<div class="card-10-content">
<span class="card-10-label">STRUKTÚRA</span>
<h3>Rétegek harmóniája</h3>
<p>
Több finom részlet találkozik egyetlen
rendezett és elegáns vizuális rendszerben.
</p>
</div>
<div class="card-10-action">
<i class="bi bi-arrow-up-right"></i>
</div>
</div>
</article>
<article class="card-10">
<div class="card-10-layer layer-back"></div>
<div class="card-10-layer layer-middle"></div>
<div class="card-10-inner">
<div class="card-10-number">02</div>
<div class="card-10-icon">
<i class="bi bi-intersect"></i>
</div>
<div class="card-10-content">
<span class="card-10-label">KAPCSOLAT</span>
<h3>Összekapcsolódó elemek</h3>
<p>
Minden részletnek saját szerepe van,
mégis egyetlen egységes élményt alkotnak.
</p>
</div>
<div class="card-10-action">
<i class="bi bi-arrow-up-right"></i>
</div>
</div>
</article>
<article class="card-10">
<div class="card-10-layer layer-back"></div>
<div class="card-10-layer layer-middle"></div>
<div class="card-10-inner">
<div class="card-10-number">03</div>
<div class="card-10-icon">
<i class="bi bi-bezier2"></i>
</div>
<div class="card-10-content">
<span class="card-10-label">EGYENSÚLY</span>
<h3>Precíz részletek</h3>
<p>
Finom arányok, tiszta vonalak és tudatosan
felépített vizuális egyensúly.
</p>
</div>
<div class="card-10-action">
<i class="bi bi-arrow-up-right"></i>
</div>
</div>
</article>
</div>
.cards-10 {
width: min(1180px, calc(100% - 30px));
margin: 0 auto;
display: grid;
grid-template-columns: 1fr;
gap: 22px;
}
.card-10 {
position: relative;
min-height: 185px;
perspective: 1200px;
}
.card-10-layer {
position: absolute;
left: 2%;
right: 2%;
height: 100%;
border: 1px solid rgba(255,255,255,0.055);
border-radius: 22px;
background:
linear-gradient(
110deg,
rgba(255,255,255,0.035),
rgba(255,255,255,0.008)
);
transition:
transform 0.65s cubic-bezier(.22,.61,.36,1),
opacity 0.5s ease;
}
.layer-back {
z-index: 0;
top: 12px;
opacity: 0.35;
}
.layer-middle {
z-index: 1;
top: 6px;
left: 1%;
right: 1%;
opacity: 0.6;
}
/* FŐ KÁRTYA */
.card-10-inner {
position: relative;
z-index: 3;
width: 100%;
min-height: 185px;
display: grid;
grid-template-columns:
1fr
70px
minmax(0, 10fr)
70px;
align-items: center;
padding: 25px 28px;
border: 1px solid rgba(255,255,255,0.085);
border-radius: 22px;
background:
linear-gradient(
110deg,
rgba(255,255,255,0.065),
rgba(255,255,255,0.018)
);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.05),
0 22px 55px rgba(0,0,0,0.25);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
transition:
transform 0.55s cubic-bezier(.22,.61,.36,1),
border-color 0.45s ease,
box-shadow 0.5s ease;
}
/* HÁTTÉR FÉNY */
.card-10-inner::before {
content: "";
position: absolute;
width: 300px;
height: 300px;
left: 42%;
top: 50%;
transform:
translate(-50%, -50%)
scale(0.65);
border-radius: 50%;
background: #2ecc71;
opacity: 0;
filter: blur(100px);
pointer-events: none;
transition:
opacity 0.6s ease,
transform 0.8s ease;
}
.card-10:hover .card-10-inner::before {
opacity: 0.05;
transform:
translate(-50%, -50%)
scale(1.1);
}
/* RÉTEGEK SZÉTVÁLÁSA */
.card-10:hover .layer-back {
transform:
translateY(14px)
scale(0.965);
opacity: 0.6;
}
.card-10:hover .layer-middle {
transform:
translateY(7px)
scale(0.985);
opacity: 0.8;
}
/* FŐ KÁRTYA */
.card-10:hover .card-10-inner {
transform: translateY(-4px);
border-color: rgba(46,204,113,0.25);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.07),
0 32px 65px rgba(0,0,0,0.32),
0 0 30px rgba(46,204,113,0.04);
}
/* SZÁM */
.card-10-number {
position: relative;
z-index: 2;
color: rgba(255,255,255,0.23);
font-family: monospace;
font-size: 11px;
letter-spacing: 2px;
transition:
color 0.4s ease,
transform 0.5s ease;
}
.card-10:hover .card-10-number {
color: rgba(46,204,113,0.7);
transform: translateX(3px);
}
/* IKON */
.card-10-icon {
position: relative;
z-index: 2;
width: 54px;
height: 54px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(46,204,113,0.22);
border-radius: 16px;
color: #2ecc71;
background: rgba(46,204,113,0.035);
transition:
transform 0.5s ease,
border-color 0.45s ease,
background 0.45s ease,
box-shadow 0.45s ease;
}
.card-10-icon i {
font-size: 19px;
}
.card-10:hover .card-10-icon {
transform:
translateY(-4px)
rotate(-5deg)
scale(1.06);
border-color: rgba(46,204,113,0.48);
background: rgba(46,204,113,0.08);
box-shadow:
0 0 25px rgba(46,204,113,0.1);
}
/* TARTALOM */
.card-10-content {
position: relative;
z-index: 2;
min-width: 0;
padding: 0 30px;
transition:
transform 0.5s ease;
}
.card-10:hover .card-10-content {
transform: translateX(6px);
}
.card-10-label {
display: block;
margin-bottom: 8px;
color: #2ecc71;
font-family: monospace;
font-size: 8px;
letter-spacing: 2.5px;
}
.card-10 h3 {
margin: 0 0 8px;
color: #ffffff;
font-family: "Bodoni Moda", Georgia, serif;
font-size: 28px;
font-weight: 500;
line-height: 1.15;
}
.card-10 p {
max-width: 800px;
margin: 0;
color: #7f8993;
font-size: 13px;
line-height: 1.7;
transition:
color 0.4s ease;
}
.card-10:hover p {
color: #a8b0b7;
}
/* AKCIÓ */
.card-10-action {
position: relative;
z-index: 2;
width: 48px;
height: 48px;
justify-self: end;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(46,204,113,0.22);
border-radius: 50%;
color: #2ecc71;
background: rgba(46,204,113,0.025);
transition:
transform 0.5s ease,
background 0.4s ease,
color 0.4s ease,
box-shadow 0.4s ease;
}
.card-10-action i {
transition:
transform 0.35s ease;
}
.card-10:hover .card-10-action {
transform: scale(1.08);
background: #2ecc71;
color: #07100b;
box-shadow:
0 0 25px rgba(46,204,113,0.18);
}
.card-10:hover .card-10-action i {
transform: translate(2px,-2px);
}
/* ALSÓ FÉNY */
.card-10-inner::after {
content: "";
position: absolute;
left: 28px;
right: 28px;
bottom: 0;
height: 1px;
background: #2ecc71;
transform: scaleX(0);
transform-origin: left;
box-shadow:
0 0 14px rgba(46,204,113,0.75);
transition:
transform 0.6s ease;
}
.card-10:hover .card-10-inner::after {
transform: scaleX(1);
}
/* TABLET */
@media (max-width: 750px) {
.card-10-inner {
grid-template-columns:
55px
60px
minmax(0, 1fr)
60px;
}
.card-10-content {
padding: 0 20px;
}
}
/* MOBIL */
@media (max-width: 560px) {
.cards-10 {
width: min(100% - 24px, 500px);
}
.card-10,
.card-10-inner {
min-height: 225px;
}
.card-10-inner {
grid-template-columns:
45px
minmax(0, 1fr);
padding: 25px 20px;
}
.card-10-number {
align-self: start;
padding-top: 3px;
}
.card-10-icon {
position: absolute;
left: 20px;
top: 55px;
}
.card-10-content {
grid-column: 2;
padding: 45px 10px 0 25px;
}
.card-10 h3 {
font-size: 23px;
}
.card-10 p {
font-size: 12px;
}
.card-10-action {
position: absolute;
right: 18px;
top: 18px;
width: 38px;
height: 38px;
}
}
document.querySelectorAll(".cards-10").forEach(group => {
group.querySelectorAll(".card-10").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) * -2;
const rotateY =
((x / rect.width) - 0.5) * 2;
card.querySelector(".card-10-inner").style.transform =
`perspective(1200px)
rotateX(${rotateX}deg)
rotateY(${rotateY}deg)
translateY(-4px)`;
});
card.addEventListener("mouseleave", () => {
card.querySelector(".card-10-inner").style.transform = "";
});
});
});