Tworzenie efektów 3D
Tworzenie efektów 3D
CSS pozwala nie tylko na stylizowanie elementów w dwóch wymiarach, ale również na wprowadzenie efektów przestrzennych – tzw. efektów 3D.
Dzięki nim możesz tworzyć animacje i układy, które wyglądają, jakby „wychodziły z ekranu”, przechylały się, obracały lub unosiły w przestrzeni.
Nie potrzebujesz do tego żadnych bibliotek ani JavaScriptu – wystarczy kilka właściwości CSS, takich jak transform, perspective czy backface-visibility.
Transformacje 3D – rotateX, rotateY, rotateZ
Podstawą efektów 3D są obroty w przestrzeni. CSS pozwala obracać elementy w trzech osiach:
- X – obrót w pionie (góra/dół)
- Y – obrót w poziomie (lewo/prawo)
- Z – obrót „na płasko” (jak wskazówki zegara)
.box {
transform: rotateY(45deg);
}
Aby efekt wyglądał realistycznie, trzeba dodać także perspektywę.
Ustawienie perspektywy
perspective to właściwość, która dodaje iluzję głębi. Ustawia się ją na elemencie nadrzędnym (rodzicu):
.scene {
perspective: 800px;
}
.box {
transform: rotateY(30deg);
}
Im mniejsza wartość, tym silniejszy efekt 3D. Zbyt niska wartość może jednak wyglądać nienaturalnie.
Efekt obracanej karty
Jednym z najczęstszych zastosowań 3D w CSS jest „flip card” – element, który obraca się, pokazując drugą stronę. To świetny efekt np. w quizach, kartach ofert czy portfolio.
<style>
.scene {
width: 300px;
height: 200px;
perspective: 1000px;
}
.card {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
transition: transform 0.8s ease;
}
.card:hover {
transform: rotateY(180deg);
}
.card-face {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
display: flex;
align-items: center;
justify-content: center;
font-family: sans-serif;
font-size: 20px;
color: white;
border-radius: 12px;
}
.front {
background: #4caf50;
}
.back {
background: #2196f3;
transform: rotateY(180deg);
}
</style>
<div class="scene">
<div class="card">
<div class="card-face front">Przód</div>
<div class="card-face back">Tył</div>
</div>
</div>
Efekt działania: karta obraca się po najechaniu kursorem, odsłaniając drugą stronę.
👉 Sprawdź w JSFiddle
Efekt uniesienia – proste 3D bez rotacji
Nawet bez pełnego obrotu możesz uzyskać efekt „unoszenia się” elementu – wystarczy translateY i cień:
.card {
transform: translateZ(0);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.card:hover {
transform: translateY(-10px);
box-shadow: 0 12px 24px rgba(0,0,0,0.2);
}
To bardzo prosty i elegancki efekt „głębi” – często stosowany w nowoczesnych interfejsach.
Dobre praktyki
- Efekty 3D używaj z umiarem – zbyt wiele może przytłoczyć użytkownika.
- Dodaj
backface-visibility: hidden, aby uniknąć migotania lub niepotrzebnego wyświetlania drugiej strony. - Upewnij się, że elementy są czytelne i nie zniekształcone na urządzeniach mobilnych.
- Testuj w różnych przeglądarkach – choć wsparcie dla 3D jest dziś dobre, drobne różnice mogą się pojawić.
Podsumowanie
transformpozwala obracać i przesuwać elementy w przestrzeni 3D.perspectivenadaje głębi i realizmu.- Efekty 3D świetnie sprawdzają się w kartach, quizach, animacjach i UI.
- To narzędzie, które – użyte świadomie – może znacząco podnieść jakość projektu.
W kolejnym kroku sprawdzimy Twoją wiedzę – czas na quiz podsumowujący ten punkt.
