Kártyák és dobozok
Rejtett képes prémium panelek
Élő előnézet – a komponens teljes méretben.
Élő előnézet
HTML · CSS · JS
<div class="cards-07">
<article class="card-07">
<div class="card-07-bg"></div>
<div class="card-07-number">01</div>
<div class="card-07-icon">
<i class="bi bi-stars"></i>
</div>
<div class="card-07-content">
<span class="card-07-label">KONCEPCIÓ</span>
<h3>Új perspektívák</h3>
<p>
Olyan vizuális megoldások, amelyek
más nézőpontból mutatják meg a lényeget.
</p>
</div>
<div class="card-07-arrow">
<i class="bi bi-arrow-right"></i>
</div>
</article>
<article class="card-07">
<div class="card-07-bg"></div>
<div class="card-07-number">02</div>
<div class="card-07-icon">
<i class="bi bi-layers"></i>
</div>
<div class="card-07-content">
<span class="card-07-label">STRUKTÚRA</span>
<h3>Rendezett világ</h3>
<p>
Átgondolt rétegek és tiszta struktúrák
egyetlen harmonikus rendszerben.
</p>
</div>
<div class="card-07-arrow">
<i class="bi bi-arrow-right"></i>
</div>
</article>
<article class="card-07">
<div class="card-07-bg"></div>
<div class="card-07-number">03</div>
<div class="card-07-icon">
<i class="bi bi-eye"></i>
</div>
<div class="card-07-content">
<span class="card-07-label">ÉLMÉNY</span>
<h3>Másképp látni</h3>
<p>
Finom részletek és mozgások, amelyek
új élménnyé alakítják a találkozást.
</p>
</div>
<div class="card-07-arrow">
<i class="bi bi-arrow-right"></i>
</div>
</article>
</div>
.cards-07 {
width: min(1180px, calc(100% - 30px));
margin: 0 auto;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 18px;
}
.card-07 {
position: relative;
min-height: 390px;
padding: 30px;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: space-between;
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.018)
);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.05),
0 25px 55px rgba(0,0,0,0.25);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
transition:
transform 0.6s cubic-bezier(.22,.61,.36,1),
border-color 0.5s ease,
box-shadow 0.5s ease;
}
/* KÉP */
.card-07-bg {
position: absolute;
z-index: 0;
top: 0;
right: 0;
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
opacity: 0;
transform: scale(1.12);
transition:
opacity 0.65s ease,
transform 1s cubic-bezier(.22,.61,.36,1);
}
.card-07:nth-child(1) .card-07-bg {
background-image:
linear-gradient(
180deg,
rgba(7,12,17,0.1),
rgba(7,12,17,0.9)
),
url("https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=1000&q=85");
}
.card-07:nth-child(2) .card-07-bg {
background-image:
linear-gradient(
180deg,
rgba(7,12,17,0.1),
rgba(7,12,17,0.9)
),
url("https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?auto=format&fit=crop&w=1000&q=85");
}
.card-07:nth-child(3) .card-07-bg {
background-image:
linear-gradient(
180deg,
rgba(7,12,17,0.1),
rgba(7,12,17,0.9)
),
url("https://images.unsplash.com/photo-1500534623283-312aade485b7?auto=format&fit=crop&w=1000&q=85");
}
.card-07:hover .card-07-bg {
opacity: 1;
transform: scale(1);
}
/* ZÖLD FÉNY */
.card-07::before {
content: "";
position: absolute;
z-index: 1;
width: 180px;
height: 180px;
right: -70px;
top: -70px;
border-radius: 50%;
background: #2ecc71;
opacity: 0;
filter: blur(70px);
transition:
opacity 0.6s ease,
transform 0.7s ease;
}
.card-07:hover::before {
opacity: 0.13;
transform: scale(1.35);
}
/* TARTALMI ELEMEK */
.card-07-number,
.card-07-icon,
.card-07-content,
.card-07-arrow {
position: relative;
z-index: 3;
}
/* SZÁM */
.card-07-number {
align-self: flex-end;
color: rgba(255,255,255,0.3);
font-family: monospace;
font-size: 10px;
letter-spacing: 3px;
transition:
color 0.4s ease;
}
.card-07:hover .card-07-number {
color: rgba(255,255,255,0.75);
}
/* IKON */
.card-07-icon {
width: 58px;
height: 58px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(46,204,113,0.25);
border-radius: 17px;
color: #2ecc71;
background: rgba(46,204,113,0.045);
box-shadow:
inset 0 0 20px rgba(46,204,113,0.025);
transition:
transform 0.5s ease,
background 0.5s ease,
border-color 0.5s ease;
}
.card-07-icon i {
font-size: 20px;
}
.card-07:hover .card-07-icon {
transform: translateY(-5px) rotate(-4deg);
background: rgba(46,204,113,0.11);
border-color: rgba(46,204,113,0.5);
}
/* SZÖVEG */
.card-07-content {
margin-top: auto;
padding-top: 80px;
transition:
transform 0.55s ease;
}
.card-07:hover .card-07-content {
transform: translateY(-8px);
}
.card-07-label {
display: block;
margin-bottom: 10px;
color: #2ecc71;
font-family: monospace;
font-size: 8px;
letter-spacing: 2.5px;
}
.card-07 h3 {
margin: 0 0 10px;
color: #ffffff;
font-family: "Bodoni Moda", Georgia, serif;
font-size: 28px;
font-weight: 500;
line-height: 1.1;
}
.card-07 p {
margin: 0;
max-width: 310px;
color: #858e97;
font-size: 12px;
line-height: 1.7;
transition:
color 0.45s ease;
}
.card-07:hover p {
color: rgba(255,255,255,0.72);
}
/* NYÍL */
.card-07-arrow {
position: absolute;
right: 28px;
bottom: 28px;
width: 45px;
height: 45px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(255,255,255,0.1);
border-radius: 50%;
color: rgba(255,255,255,0.6);
background: rgba(0,0,0,0.15);
transition:
transform 0.5s ease,
color 0.4s ease,
background 0.4s ease,
border-color 0.4s ease;
}
.card-07:hover .card-07-arrow {
transform: translateX(5px);
color: #07100b;
background: #2ecc71;
border-color: #2ecc71;
}
/* ALSÓ FÉNY */
.card-07::after {
content: "";
position: absolute;
z-index: 4;
left: 30px;
right: 30px;
bottom: 0;
height: 1px;
background: #2ecc71;
transform: scaleX(0);
transform-origin: left;
box-shadow:
0 0 15px rgba(46,204,113,0.8);
transition:
transform 0.6s ease;
}
.card-07:hover::after {
transform: scaleX(1);
}
/* TABLET */
@media (max-width: 900px) {
.cards-07 {
grid-template-columns: 1fr;
}
.card-07 {
min-height: 300px;
}
}
/* MOBIL */
@media (max-width: 560px) {
.cards-07 {
width: min(100% - 24px, 500px);
}
.card-07 {
min-height: 330px;
padding: 25px;
}
}
document.querySelectorAll(".cards-07").forEach(group => {
group.querySelectorAll(".card-07").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) * -3;
const rotateY =
((x / rect.width) - 0.5) * 3;
card.style.transform =
`perspective(1000px)
rotateX(${rotateX}deg)
rotateY(${rotateY}deg)
translateY(-6px)`;
});
card.addEventListener("mouseleave", () => {
card.style.transform = "";
});
});
});