Kártyák és dobozok
Prémium diagonális kártyák
Élő előnézet – a komponens teljes méretben.
Élő előnézet
HTML · CSS · JS
<div class="cards-11">
<article class="card-11">
<div class="card-11-number">01</div>
<div class="card-11-mark">
<i class="bi bi-layers"></i>
</div>
<div class="card-11-content">
<span class="card-11-label">STRUKTÚRA</span>
<h3>Tiszta forma</h3>
<p>
Letisztult szerkezet, határozott arányok
és minden részletében átgondolt megjelenés.
</p>
</div>
<div class="card-11-arrow">
<i class="bi bi-arrow-up-right"></i>
</div>
<div class="card-11-line"></div>
</article>
<article class="card-11">
<div class="card-11-number">02</div>
<div class="card-11-mark">
<i class="bi bi-bezier2"></i>
</div>
<div class="card-11-content">
<span class="card-11-label">MOZGÁS</span>
<h3>Finom dinamika</h3>
<p>
Apró átmenetek és elegáns mozgások,
amelyek életet adnak a felületnek.
</p>
</div>
<div class="card-11-arrow">
<i class="bi bi-arrow-up-right"></i>
</div>
<div class="card-11-line"></div>
</article>
<article class="card-11">
<div class="card-11-number">03</div>
<div class="card-11-mark">
<i class="bi bi-gem"></i>
</div>
<div class="card-11-content">
<span class="card-11-label">MINŐSÉG</span>
<h3>Kifinomult részletek</h3>
<p>
Erős karakter, visszafogott elegancia
és olyan részletek, amelyek megmaradnak.
</p>
</div>
<div class="card-11-arrow">
<i class="bi bi-arrow-up-right"></i>
</div>
<div class="card-11-line"></div>
</article>
</div>
.cards-11 {
width: min(1180px, calc(100% - 30px));
margin: 0 auto;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.card-11 {
position: relative;
min-height: 370px;
overflow: hidden;
padding: 30px;
display: flex;
flex-direction: column;
border: 1px solid rgba(255,255,255,0.08);
border-radius: 24px;
background:
linear-gradient(
145deg,
rgba(255,255,255,0.065),
rgba(255,255,255,0.012)
);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.05),
0 25px 60px rgba(0,0,0,0.28);
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.55s ease;
}
/* FÉNYFOLT */
.card-11::before {
content: "";
position: absolute;
width: 260px;
height: 260px;
right: -130px;
top: -130px;
border-radius: 50%;
background: #2ecc71;
opacity: 0;
filter: blur(90px);
transition:
opacity 0.6s ease,
transform 0.7s ease;
pointer-events: none;
}
.card-11:hover::before {
opacity: 0.07;
transform: scale(1.3);
}
/* DIAGONÁLIS DEKOR */
.card-11::after {
content: "";
position: absolute;
width: 180px;
height: 1px;
right: -30px;
top: 105px;
background:
linear-gradient(
90deg,
transparent,
rgba(46,204,113,0.65)
);
transform: rotate(-35deg) scaleX(0.3);
transform-origin: right center;
opacity: 0;
transition:
transform 0.7s ease,
opacity 0.5s ease;
}
.card-11:hover::after {
transform: rotate(-35deg) scaleX(1);
opacity: 1;
}
/* SORSZÁM */
.card-11-number {
position: absolute;
top: 25px;
right: 28px;
color: rgba(255,255,255,0.13);
font-family: monospace;
font-size: 10px;
letter-spacing: 2px;
transition:
color 0.4s ease,
transform 0.5s ease;
}
.card-11:hover .card-11-number {
color: rgba(46,204,113,0.65);
transform: translateX(-4px);
}
/* IKON */
.card-11-mark {
position: relative;
z-index: 2;
width: 62px;
height: 62px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 45px;
border: 1px solid rgba(46,204,113,0.22);
border-radius: 18px;
color: #2ecc71;
background: rgba(46,204,113,0.025);
box-shadow:
inset 0 0 20px rgba(46,204,113,0.025);
transition:
transform 0.5s ease,
background 0.4s ease,
border-color 0.4s ease,
box-shadow 0.4s ease;
}
.card-11-mark i {
font-size: 21px;
}
.card-11:hover .card-11-mark {
transform:
translateY(-5px)
rotate(-6deg);
border-color: rgba(46,204,113,0.5);
background: rgba(46,204,113,0.08);
box-shadow:
0 0 30px rgba(46,204,113,0.09);
}
/* SZÖVEG */
.card-11-content {
position: relative;
z-index: 2;
flex: 1;
transition:
transform 0.5s ease;
}
.card-11:hover .card-11-content {
transform: translateY(-4px);
}
.card-11-label {
display: block;
margin-bottom: 10px;
color: #2ecc71;
font-family: monospace;
font-size: 8px;
letter-spacing: 2.5px;
}
.card-11 h3 {
margin: 0 0 12px;
color: #ffffff;
font-family: "Bodoni Moda", Georgia, serif;
font-size: 28px;
font-weight: 500;
line-height: 1.15;
}
.card-11 p {
max-width: 280px;
margin: 0;
color: #7d8790;
font-size: 12px;
line-height: 1.75;
transition:
color 0.4s ease;
}
.card-11:hover p {
color: #a6afb6;
}
/* NYÍL */
.card-11-arrow {
position: absolute;
right: 27px;
bottom: 27px;
z-index: 3;
width: 42px;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(46,204,113,0.2);
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-11:hover .card-11-arrow {
transform:
rotate(45deg)
scale(1.08);
color: #07100b;
background: #2ecc71;
box-shadow:
0 0 25px rgba(46,204,113,0.2);
}
/* ALSÓ VONAL */
.card-11-line {
position: absolute;
left: 30px;
bottom: 0;
width: 0;
height: 1px;
background: #2ecc71;
box-shadow:
0 0 15px rgba(46,204,113,0.75);
transition:
width 0.65s ease;
}
.card-11:hover .card-11-line {
width: calc(100% - 60px);
}
/* HOVER */
.card-11:hover {
transform:
translateY(-8px)
rotateX(1deg);
border-color: rgba(46,204,113,0.25);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.07),
0 35px 75px rgba(0,0,0,0.35),
0 0 35px rgba(46,204,113,0.035);
}
/* TABLET */
@media (max-width: 900px) {
.cards-11 {
grid-template-columns: 1fr;
max-width: 600px;
}
}
/* MOBIL */
@media (max-width: 520px) {
.cards-11 {
width: min(100% - 24px, 500px);
}
.card-11 {
min-height: 350px;
padding: 25px;
}
.card-11-mark {
margin-bottom: 35px;
}
}
document.querySelectorAll(".cards-11").forEach(group => {
group.querySelectorAll(".card-11").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.style.transform =
`perspective(1100px)
rotateX(${rotateX}deg)
rotateY(${rotateY}deg)
translateY(-8px)`;
});
card.addEventListener("mouseleave", () => {
card.style.transform = "";
});
});
});