Mga Katangian ng CSS na Kaugnay sa 3D Animation
Ipapaliwanag ng artikulong ito ang mga katangian ng CSS na nauugnay sa 3D animations.
Ipapaliwanag namin kung paano gumagana ang 3D animation sa CSS at kung paano ito gamitin gamit ang mga totoong halimbawa ng code. Matututuhan mo kung paano praktikal na maglagay ng 3D transformations gamit ang transform
na katangian at kung paano magdagdag ng lalim at three-dimensional na epekto gamit ang perspective
at transform-style
.
YouTube Video
HTML para sa Preview
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 Animation at mga Paglipat (Transitions)
Pinapayagan ka ng mga modernong web browser na gumawa ng three-dimensional na 3D animation gamit lamang ang CSS. Dahil maaari kang gumawa ng magagaan at kaakit-akit na mga interaksyon nang hindi gumagamit ng JavaScript, nakakatulong ito sa pagpapaganda ng UI/UX.
Paano Gumagana ang 3D Animation
Pangunahing ginagamit ng CSS 3D animations ang mga sumusunod na katangian:.
- Binabago ng katangiang
transform
ang posisyon, ikot (rotation), at laki (scale) ng mga elemento. - Itinatakda ng katangiang
perspective
ang distansya ng viewpoint upang maipakita ang lalim ng 3D. - Itinatakda ng katangiang
transform-style
kung ang mga anak na elemento ay dapat baguhin sa 3D na espasyo. - Kinokontrol ng katangiang
backface-visibility
ang pagiging kita o tago ng likod ng elemento. - Ginagamit ang mga katangiang
animation
attransition
upang tukuyin ang mga animation.
@keyframes
at 3D Animations
Pag-ikot sa Y-Axis
Magsimula tayo sa pagtukoy ng 3D animation na umiikot lamang ang isang elemento sa Y-axis gamit ang @keyframes
.
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}
- Iniiikot ng animation na
rotateY3D
ang elemento ng 360 degrees sa paligid ng Y-axis. - Itinakda ang katangiang
transform-style
sapreserve-3d
upang mapanatili ang 3D transformations ng mga anak na elemento. - Itinatakda ng katangiang
perspective
ang distansya ng viewpoint upang i-adjust ang pakiramdam ng lalim. Dito, ang800px
ang ginamit.
Pag-ikot sa X-Axis
Magdeklara din tayo ng 3D animation na umiikot ang elemento sa X-axis.
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}
- Iniiikot ng animation na
rotateX3D
ang elemento ng 360 degrees sa paligid ng X-axis.
Pag-ikot sa Parehong X-Axis at Y-Axis
Magdeklara tayo ng 3D animation na nagsasama ng ikot sa parehong X at Y axes.
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}
- Ang pag-ikot sa maraming axis ay lumilikha ng mas matinding 3D na epekto.
Pagbabaligtad ng harap at likod ng 3D card
Magdeklara tayo ng hover animation effect na bumabaligtad sa harap at likod ng 3D card.
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}
- Sa pamamagitan ng pagtatalaga ng
backface-visibility
na katangian sahidden
, napipigilan ang likod na lumabas sa harap. - Sa paglalagay ng
rotateY(180deg)
sa klaseng.card-back
, nililikha ang likod ng card. - Sa pag-hover, ang pag-apply ng
rotateY(180deg)
ay bumabaligtad sa card.
Cube 3D Animation
Magdeklara tayo ng 3D animation para sa isang cube. Bawa't mukha ng cube ay lilitaw habang umiikot, ipinapakita ang 3D effect sa pamamagitan ng hover o automatic na animation.
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}
- Ipinapakita ang klaseng
.cube
sa 3D dahil nakatakda angtransform-style
nito sapreserve-3d
. - Bawa't mukha ng cube ay inilalapit palabas mula sa gitna ng cube gamit ang
translateZ(100px)
, na bumubuo ng 3D cube. - Ang
rotateCube
na animation ay awtomatikong umiikot sa cube gamit ang kombinasyon ng Y at X axes.
Nagbabago ang viewpoint gamit ang perspective
Ang pagbabawas ng halaga ng perspective
ay nagpapalapit ng viewpoint sa elemento, pinapalakas ang lalim at pinapahusay ang 3D effect. Sa kabilang banda, ang pagtaas ng halaga ay inilalayo ang viewpoint, kaya't nagreresulta ng mas natural at banayad na 3D na anyo. Dito, palitan natin ang perspective
na katangian mula 800px
tungong 200px
upang ipakita ang 3D animation ng cube.
1.scene {
2 perspective: 200px;
3}
- Sa pamamagitan ng pagpapalit ng
perspective
na katangian mula800px
tungong200px
, napapalapit ang viewpoint at mas napapansin ang lalim.
Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.