3D Animasyonla İlgili CSS Özellikleri
Bu makale, 3D animasyonlarla ilgili CSS özelliklerini açıklamaktadır.
CSS’de 3D animasyonların nasıl çalıştığını ve gerçek kod örnekleriyle nasıl kullanılacağını açıklayacağız. transform özelliğini kullanarak 3D dönüşümlerin nasıl uygulanacağını ve perspective ile transform-style ile derinlik ve üç boyutlu etki nasıl katılacağını pratik olarak öğreneceksiniz.
YouTube Video
Önizleme için HTML
css-animation-3d.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS 3D Animation</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-animation-3d.css">
9</head>
10<body>
11 <header>
12 <h1>CSS Properties For 3D Animation</h1>
13 </header>
14 <main>
15 <header>
16 <h2>3D Animation Related Properties</h2>
17 </header>
18
19 <!-- 3D Keyframes Section -->
20 <article>
21 <h3>@keyframes with 3D Effects</h3>
22 <section>
23 <header><h4>animation: rotateY3D 4s linear infinite</h4></header>
24 <section class="sample-view">
25 <section class="sample-view-3d">
26 <div class="box-animation-rotateY">Rotate Y</div>
27 </section>
28 </section>
29 <header><h4>animation: rotateX3D 4s linear infinite</h4></header>
30 <section class="sample-view">
31 <section class="sample-view-3d">
32 <div class="box-animation-rotateX">Rotate X</div>
33 </section>
34 </section>
35 <header><h4>animation: cube-spin 6s ease-in-out infinite</h4></header>
36 <section class="sample-view">
37 <section class="sample-view-3d">
38 <div class="box-animation-cube">Spinning Cube</div>
39 </section>
40 </section>
41 </section>
42 </article>
43
44 <article>
45 <h3>Hover to Flip the Card</h3>
46 <section>
47 <header><h4>HTML</h4></header>
48<pre>
49<div class="card-container">
50 <div class="card">
51 <div class="card-face card-front">
52 <h3>Front</h3>
53 <p>This is the front side</p>
54 </div>
55 <div class="card-face card-back">
56 <h3>Back</h3>
57 <p>This is the back side</p>
58 </div>
59 </div>
60</div>
61</pre>
62 </section>
63 <section class="sample-view" style="height: 270px;">
64 <section class="sample-view-3d-card">
65 <div class="card-container">
66 <div class="card">
67 <div class="card-face card-front">
68 <h3>Front</h3>
69 <p>This is the front side</p>
70 </div>
71 <div class="card-face card-back">
72 <h3>Back</h3>
73 <p>This is the back side</p>
74 </div>
75 </div>
76 </div>
77 </section>
78 </section>
79 </article>
80
81 <article>
82 <h3>3D Animation Cube Example</h3>
83 <section>
84 <header><h4>animation: cube-spin 6s ease-in-out infinite</h4></header>
85 <section class="sample-view" style="height: 300px;">
86 <div class="scene">
87 <div class="cube">
88 <div class="face front">Front</div>
89 <div class="face back">Back</div>
90 <div class="face left">Left</div>
91 <div class="face right">Right</div>
92 <div class="face top">Top</div>
93 <div class="face bottom">Bottom</div>
94 </div>
95 </div>
96 </section>
97 </section>
98 </article>
99 </main>
100</body>
101</html>3D Animasyonlar ve Geçişler
Modern web tarayıcıları, yalnızca CSS kullanarak üç boyutlu 3D animasyonlar oluşturmanıza imkan tanır. JavaScript kullanmadan hafif ve görsel olarak çekici etkileşimler oluşturabileceğiniz için, bu durum daha iyi bir UI/UX'e katkıda bulunur.
3D Animasyon Nasıl Çalışır
CSS 3D animasyonlar, genellikle aşağıdaki özellikleri kullanır:.
transformözelliği, öğelerin konumunu, dönüşünü ve ölçeğini değiştirir.perspectiveözelliği, 3D derinliği ifade etmek için bakış noktası mesafesini ayarlar.transform-styleözelliği, alt öğelerin 3D uzayda dönüştürülüp dönüştürülmeyeceğini belirtir.backface-visibilityözelliği, öğelerin arka yüzünün görünürlüğünü kontrol eder.animationvetransitionözellikleri, animasyonları tanımlamak için kullanılır.
@keyframes ve 3D Animasyonlar
Y Ekseni Etrafında Dönme
@keyframes kullanarak bir öğeyi Y ekseni etrafında döndüren bir 3D animasyon tanımlayarak başlayalım.
1.sample-view-3d {
2 width: 100px;
3 height: 100px;
4 margin: 1rem auto;
5 perspective: 800px;
6}
7
8.box-animation-rotateY,
9.box-animation-rotateX,
10.box-animation-cube {
11 width: 100%;
12 height: 100%;
13 background: linear-gradient(45deg, #4facfe, #00f2fe);
14 display: flex;
15 align-items: center;
16 justify-content: center;
17 color: white;
18 font-size: 1.1rem;
19 border-radius: 10px;
20 transform-style: preserve-3d;
21}
22
23/* RotateY animation */
24@keyframes rotateY3D {
25 from { transform: rotateY(0deg); }
26 to { transform: rotateY(360deg); }
27}
28
29.box-animation-rotateY {
30 animation: rotateY3D 4s linear infinite;
31}rotateY3Danimasyonu, öğeyi Y ekseni etrafında 360 derece döndürür.- Çocuk öğelerin 3D dönüşümlerinin korunması için
transform-styleözelliğipreserve-3dolarak ayarlanır. perspectiveözelliği, derinlik hissini ayarlamak için bakış noktası mesafesini belirler. Burada,800pxolarak ayarlanmıştır.
X Ekseni Etrafında Dönme
Şimdi de bir öğeyi X ekseni etrafında döndüren bir 3D animasyon tanımlayalım.
1/* RotateX animation */
2@keyframes rotateX3D {
3 from { transform: rotateX(0deg); }
4 to { transform: rotateX(360deg); }
5}
6
7.box-animation-rotateX {
8 animation: rotateX3D 4s linear infinite;
9}rotateX3Danimasyonu, öğeyi X ekseni etrafında 360 derece döndürür.
Hem X Hem de Y Ekseni Etrafında Dönme
X ve Y eksenlerinde döndürmeleri birleştiren bir 3D animasyon tanımlayalım.
1/* Cube spin (combination of X and Y rotation) */
2@keyframes cube-spin {
3 0% { transform: rotateX(0deg) rotateY(0deg); }
4 50% { transform: rotateX(180deg) rotateY(180deg); }
5 100% { transform: rotateX(360deg) rotateY(360deg); }
6}
7
8.box-animation-cube {
9 animation: cube-spin 6s ease-in-out infinite;
10}- Birden fazla eksende döndürme, daha güçlü bir 3D etkisi oluşturur.
Bir 3D kartın ön ve arkasını çevirme
Bir 3D kartın ön ve arkasını çeviren bir hover animasyon efekti tanımlayalım.
1/* 3D perspective wrapper */
2.sample-view-3d-card {
3 perspective: 1000px;
4 width: 300px;
5 height: 200px;
6 margin: 2rem auto;
7}
8
9/* Outer card container */
10.card-container {
11 width: 100%;
12 height: 100%;
13 position: relative;
14 perspective: 1000px;
15}
16
17/* The card itself */
18.card {
19 width: 100%;
20 height: 100%;
21 position: relative;
22 transform-style: preserve-3d;
23 transition: transform 0.8s ease;
24}
25
26/* Both faces */
27.card-face {
28 position: absolute;
29 width: 100%;
30 height: 100%;
31 backface-visibility: hidden;
32 border-radius: 12px;
33 box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
34 display: flex;
35 flex-direction: column;
36 justify-content: center;
37 align-items: center;
38 font-family: sans-serif;
39 color: white;
40 font-size: 1.1rem;
41 padding: 1rem;
42}
43
44/* Flip the card on hover */
45.card-container:hover .card {
46 transform: rotateY(180deg);
47}
48
49/* Front side style */
50.card-front {
51 background: linear-gradient(135deg, #00c9ff, #92fe9d);
52}
53
54/* Back side style */
55.card-back {
56 background: linear-gradient(135deg, #fc466b, #3f5efb);
57 transform: rotateY(180deg);
58}backface-visibilityözelliğinihiddenolarak ayarlayarak, arka yüzün önde görünmesi engellenir..card-backsınıfınarotateY(180deg)uygulanarak kartın arka yüzü oluşturulur.- Hover durumunda
rotateY(180deg)uygulamak kartı çevirir.
Küp 3D Animasyonu
Bir küp için 3D animasyon tanımlayalım. Küpün her bir yüzü dönerken görünür ve 3D etkisi, hover veya otomatik animasyon ile aktarılır.
1.scene {
2 width: 200px;
3 height: 200px;
4 perspective: 800px; /* Viewing distance (the smaller the value, the stronger the depth effect) */
5 background-color: rgba(255, 255, 255, 0);
6 border: 0;
7}
8
9.cube {
10 width: 100%;
11 height: 100%;
12 transform-style: preserve-3d;
13 transform: rotateX(0deg) rotateY(0deg);
14 animation: rotateCube 10s infinite linear;
15 position: relative;
16 background-color: rgba(255, 255, 255, 0);
17 border: 0;
18}
19
20.face {
21 position: absolute;
22 width: 200px;
23 height: 200px;
24 background: rgba(0, 128, 255, 0.6);
25 border: 1px solid #fff;
26 display: flex;
27 align-items: center;
28 justify-content: center;
29 font-size: 24px;
30 font-weight: bold;
31}
32
33/* Positioning each face */
34.front { transform: translateZ(100px); }
35.back { transform: rotateY(180deg) translateZ(100px); }
36.left { transform: rotateY(-90deg) translateZ(100px); }
37.right { transform: rotateY(90deg) translateZ(100px); }
38.top { transform: rotateX(90deg) translateZ(100px); }
39.bottom { transform: rotateX(-90deg) translateZ(100px); }
40
41/* Rotation animation */
42@keyframes rotateCube {
43 from {
44 transform: rotateX(0deg) rotateY(0deg);
45 }
46 to {
47 transform: rotateX(360deg) rotateY(360deg);
48 }
49}.cubesınıfı,transform-styleözelliğipreserve-3dolarak ayarlandığı için 3D olarak görünür.- Küpün her yüzü
translateZ(100px)ile merkezin önüne taşınır ve böylece 3D bir küp oluşur. rotateCubeanimasyonu, Y ve X eksenlerinin birleştirilmesiyle küpü otomatik olarak döndürür.
Bakış açısı perspective ile değişir
perspective değerini azaltmak, bakış noktasını öğeye yaklaştırır, derinlik vurgulanır ve 3D etki artar. Aksine, değeri artırmak bakış noktasını daha uzaklaştırır ve daha doğal, hafif bir 3D görünüm elde edilir. Burada, küpün 3D animasyonunu göstermek için perspective özelliğini 800px'den 200px'e değiştirelim.
1.scene {
2 perspective: 200px;
3}perspectiveözelliğini800px'den200px'e değiştirerek bakış noktası daha yakın olur ve derinlik daha fazla vurgulanır.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.