Kártyák és dobozok
Képes / overlay kártyák
Élő előnézet – a komponens teljes méretben.
Élő előnézet
HTML · CSS · JS
<div class="cards-03">
<article class="card-03">
<div class="card-03-image">
<img src="https://images.unsplash.com/photo-1519608487953-e999c86e7455?auto=format&fit=crop&w=900&q=85" alt="Hegyi táj">
</div>
<div class="card-03-overlay"></div>
<div class="card-03-top">
<span>01</span>
<i class="bi bi-arrow-up-right"></i>
</div>
<div class="card-03-content">
<span class="card-03-label">FELFEDEZÉS</span>
<h3>Ismeretlen tájak</h3>
<p>
Helyek, amelyek egészen más perspektívából
mutatják meg a világ szépségét.
</p>
</div>
</article>
<article class="card-03">
<div class="card-03-image">
<img src="https://images.unsplash.com/photo-1448375240586-882707db888b?auto=format&fit=crop&w=900&q=85" alt="Erdei táj">
</div>
<div class="card-03-overlay"></div>
<div class="card-03-top">
<span>02</span>
<i class="bi bi-arrow-up-right"></i>
</div>
<div class="card-03-content">
<span class="card-03-label">TERMÉSZET</span>
<h3>A csend világa</h3>
<p>
Rejtett helyek, különleges pillanatok és
történetek a természet mélyéről.
</p>
</div>
</article>
<article class="card-03">
<div class="card-03-image">
<img src="https://images.unsplash.com/photo-1470770841072-f978cf4d019e?auto=format&fit=crop&w=900&q=85" alt="Hegyek és tó">
</div>
<div class="card-03-overlay"></div>
<div class="card-03-top">
<span>03</span>
<i class="bi bi-arrow-up-right"></i>
</div>
<div class="card-03-content">
<span class="card-03-label">INSPIRÁCIÓ</span>
<h3>A horizonton túl</h3>
<p>
Vizuális élmények azoknak, akik mindig
keresik a következő különleges nézőpontot.
</p>
</div>
</article>
</div>
.cards-03 {
width: min(1180px, calc(100% - 30px));
margin: 0 auto;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.card-03 {
position: relative;
height: 470px;
overflow: hidden;
border: 1px solid rgba(255,255,255,0.12);
border-radius: 22px;
background: #090e14;
cursor: pointer;
box-shadow:
0 25px 60px rgba(0,0,0,0.3);
transition:
transform 0.5s ease,
border-color 0.5s ease,
box-shadow 0.5s ease;
}
.card-03:hover {
transform: translateY(-8px);
border-color: rgba(46,204,113,0.4);
box-shadow:
0 35px 75px rgba(0,0,0,0.4),
0 0 30px rgba(46,204,113,0.06);
}
/* KÉP */
.card-03-image {
position: absolute;
inset: 0;
overflow: hidden;
}
.card-03-image img {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
transform: scale(1.04);
filter:
brightness(0.65)
saturate(0.8);
transition:
transform 0.8s cubic-bezier(.2,.7,.2,1),
filter 0.8s ease;
}
.card-03:hover .card-03-image img {
transform: scale(1.12);
filter:
brightness(0.78)
saturate(1);
}
/* SÖTÉTÍTŐ RÉTEG */
.card-03-overlay {
position: absolute;
inset: 0;
background:
linear-gradient(
to bottom,
rgba(5,9,13,0.18) 0%,
rgba(5,9,13,0.08) 35%,
rgba(5,9,13,0.5) 58%,
rgba(5,9,13,0.96) 100%
);
transition:
background 0.5s ease;
}
.card-03:hover .card-03-overlay {
background:
linear-gradient(
to bottom,
rgba(5,9,13,0.1) 0%,
rgba(5,9,13,0.04) 30%,
rgba(5,9,13,0.48) 55%,
rgba(5,9,13,0.97) 100%
);
}
/* FELSŐ INFORMÁCIÓ */
.card-03-top {
position: absolute;
top: 22px;
left: 22px;
right: 22px;
display: flex;
align-items: center;
justify-content: space-between;
z-index: 3;
}
.card-03-top span {
font-family: monospace;
font-size: 10px;
letter-spacing: 2px;
color: rgba(255,255,255,0.65);
padding: 8px 10px;
border: 1px solid rgba(255,255,255,0.18);
border-radius: 20px;
background: rgba(0,0,0,0.18);
backdrop-filter: blur(8px);
}
.card-03-top i {
width: 42px;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(255,255,255,0.2);
border-radius: 50%;
color: #ffffff;
background: rgba(0,0,0,0.18);
backdrop-filter: blur(8px);
transition:
transform 0.45s ease,
background 0.45s ease,
border-color 0.45s ease;
}
.card-03:hover .card-03-top i {
transform: rotate(45deg);
background: #2ecc71;
border-color: #2ecc71;
color: #07100b;
}
/* TARTALOM */
.card-03-content {
position: absolute;
left: 28px;
right: 28px;
bottom: 28px;
z-index: 3;
transform: translateY(25px);
transition:
transform 0.5s cubic-bezier(.2,.7,.2,1);
}
.card-03:hover .card-03-content {
transform: translateY(0);
}
.card-03-label {
display: block;
margin-bottom: 12px;
color: #2ecc71;
font-family: monospace;
font-size: 9px;
letter-spacing: 2.5px;
}
.card-03 h3 {
margin: 0 0 12px;
color: #ffffff;
font-family: "Bodoni Moda", Georgia, serif;
font-size: 31px;
font-weight: 500;
line-height: 1.08;
}
.card-03 p {
max-width: 310px;
margin: 0;
color: rgba(255,255,255,0.68);
font-size: 12px;
line-height: 1.75;
opacity: 0;
transform: translateY(12px);
transition:
opacity 0.45s ease 0.08s,
transform 0.45s ease 0.08s;
}
.card-03:hover .card-03-content p {
opacity: 1;
transform: translateY(0);
}
/* ALSÓ FÉNY */
.card-03::after {
content: "";
position: absolute;
left: 25%;
right: 25%;
bottom: 0;
height: 2px;
background: #2ecc71;
box-shadow:
0 0 18px rgba(46,204,113,0.7);
opacity: 0;
transform: scaleX(0);
transition:
opacity 0.4s ease,
transform 0.5s ease;
}
.card-03:hover::after {
opacity: 1;
transform: scaleX(1);
}
/* RESZPONZÍV */
@media (max-width: 900px) {
.cards-03 {
grid-template-columns: 1fr;
max-width: 520px;
}
}
@media (max-width: 480px) {
.cards-03 {
width: calc(100% - 24px);
}
.card-03 {
height: 430px;
}
.card-03-content {
transform: translateY(0);
}
.card-03-content p {
opacity: 1;
transform: none;
}
}
document.querySelectorAll(".cards-03").forEach(group => {
group.querySelectorAll(".card-03").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 =
`translateY(-8px) perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
});
card.addEventListener("mouseleave", () => {
card.style.transform = "";
});
});
});