-
[CSS, JS] ๊ฝ์ด ํ๋ค๊ฑฐ๋ฆฌ๋ ํจ๊ณผ ๊ตฌํํ๊ธฐCoding 2023. 5. 19. 11:21๋ฐ์ํ
๊ฝ์ด ๋ฐ๋์ ํ๋ค๊ฑฐ๋ฆฌ๋ ์ ๋๋ฉ์ด์ ์ CSS ๋ฒ์ ๊ณผ JS ๋ฒ์ ์ผ๋ก ๊ฐ๊ฐ ๊ตฌํํด ๋น๊ตํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
< HTML >
<img src="https://cdn.pixabay.com/photo/2023/01/26/18/09/yellow-flowers-7746722_960_720.png" class="flower">
๋จผ์ ๊ฝ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
- CSS Ver.
< CSS >
img.flower { transform-origin: center bottom; // rotate ๊ธฐ์ค์ bottom ์ผ๋ก }
transform-origin์ transform ์์ฑ์ ์ฌ์ฉํ ๋ ์ฌ์ฉํ๋ค.
์ด๊ธฐ๊ฐ์ center๋ก transform-origin: 50% 50%;์ด๋ค.
transform์ ์ฌ์ฉํ ์์์ ๊ธฐ์ค์ ์ ์ ํ๋ค.
๊ฝ์ด ํ๋ค๊ฑฐ๋ฆฌ๋ ๊ฑธ ํํํ๋ ค๋ฉด X๋ center(50%) Y๋ bottom (100%) ์ด์ด์ผ ์ํ๋ ๋ชจ์์ผ๋ก ๋์จ๋ค.
| ์ฐธ๊ณ ์๋ฃ |
transform-origin - CSS: Cascading Style Sheets | MDN
The transform-origin CSS property sets the origin for an element's transformations.
developer.mozilla.org
img.flower { animation: swaying-flower 3s infinite ease-in-out; } @keyframes swaying-flower { 0% {transform: rotate(-10deg);} 50% {transform: rotate(10deg);} 100% {transform: rotate(-10deg);} }
transform: rotate ์์ฑ์ ์ฌ์ฉํด ์ด๋ฏธ์ง ํ์ ์ ๋ฐ๋ณตํด ์ฃผ๋ keyframe์ ์คํํฉ๋๋ค.
๊ฝ์ด -10 deg์์ 10 deg๋ก ๊ฐ๋ค๊ฐ ๋ค์ ๋์์ค๋ ๊ฒ์ ๋ฐ๋ณตํด์ผ ํ๊ธฐ ๋๋ฌธ์ keyframe์ 3๊ฐ๋ก ๋ถ๋ฆฌํ๊ณ ,
animation์ ๊ธฐ๋ณธ easing์ ease-in-out์ผ๋ก ์ถ๊ฐํ์ฌ ์ข ๋ ๋ฐ๋์ ํ๋ค๋ฆฌ๋ ๊ฒ์ฒ๋ผ ๊ตฌํํด ๋ดค์ต๋๋ค.
- JS Ver.
< CSS >
img.flower { transform-origin: center bottom; // rotate ๊ธฐ์ค์ bottom ์ผ๋ก }
JS ๋ฒ์ ๊ธฐ๋ณธ CSS๋ ์์ ๋์ผํฉ๋๋ค.
< HTML >
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script>
JS ๋ฒ์ ์์๋ gsap๋ผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๊ตฌํํ์ต๋๋ค.
css๋ ์ผ๋ฐ Javascript๋ง์ผ๋ก๋ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ ์ ์์ง๋ง,
gsap๋ ์ ๋๋ฉ์ด์ ์ ์ต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ธฐ ๊ฐํธํ๊ณ ํธํ์ฑ์ด ์ข์ต๋๋ค.
< JS >
gsap.fromTo(".flower", { rotate: -10, }, { rotate: 10, duration: 1.5, repeat: -1, yoyo: true, ease: 'power2.inOut', });
fromTo๋ ๋ง ๊ทธ๋๋ก ~๋ก๋ถํฐ ~๋ก๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๊ฝ์ด rotate -10deg์์ 10deg๋ก ์์ง์ด๋๋ก ํํํ์๊ณ ,
duration์ -10deg์์ 10deg๋ก ๊ฐ๋ ์๊ฐ์ ๋๋ค.
repeat: -1๋ css์ animation: infinite์ ๊ฐ์ต๋๋ค.
yoyo๋ -10deg์์ 10deg / 10deg์์ -10deg๋ก ๋ฐ๋ณตํ๊ฒ ๋ค๋ ์๋ฏธ์ ๋๋ค.
ease ์ญ์ css์ easing๊ณผ ๋์ผํ๋ฐ gsap์์๋ ํจ์ฌ ๋ค์ํ easing์ ์ ๊ณตํ๋ฏ๋ก
ํ๋ค๋ฆฌ๋ ๊ฝ์ ์ข ๋ ํจ๊ณผ์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค.
| ์ฐธ๊ณ ์๋ฃ |
Docs
Documentation for GreenSock Animation Platform (GSAP)
greensock.com
- ํฉ์ณ์ง ์ฝ๋
CSS๋ฒ์ ๊ณผ JS๋ฒ์ ์ ๋น๊ตํ ์ ์๋ ์ฝ๋์ ๋๋ค.
๋ ๋ฒ์ ์ easing์ด ๋ฌ๋ผ์ ํ๋ค๋ฆฌ๋ ์๋๊ฐ๋ ๋ฌ๋ผ ๋ณด์ด๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค.
๋ฐ์ํ'Coding' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ