CSS @view-transition์ผ๋ก ๋์ฑ ๋ถ๋๋ฝ๊ณ ๋งค๋ ฅ์ ์ธ ์น์ฌ์ดํธ ๋ด๋น๊ฒ์ด์ ์ ๊ตฌํํ์ธ์. ๋ทฐ ์ ํ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ, ์ค์ฉ์ ์ธ ์์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํตํด ๋ชจ๋ ์ฅ์น์์ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์ฌ์ฉ์ ๊ฒฝํ ํฅ์: CSS @view-transition์ ํ์ฉํ ๋ด๋น๊ฒ์ด์ ์ ๋๋ฉ์ด์ ๋ง์คํฐํ๊ธฐ
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ํํ๊ณ ์ง๊ด์ ์ธ ๋ด๋น๊ฒ์ด์
๊ฒฝํ์ ์ฌ์ฉ์ ์ฐธ์ฌ์ ์ ๋ฐ์ ์ธ ๋ง์กฑ๋์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. CSS @view-transition์ ๊ฐ๋ฐ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ํ ์ํ ๊ฐ์ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ ํ์ ๋ง๋ค์ด ์ฌ์ฉ์ ์ฌ์ ์ ํฅ์์ํฌ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค.
CSS ๋ทฐ ์ ํ์ด๋ ๋ฌด์์ ๋๊น?
CSS ๋ทฐ ์ ํ์ DOM์ ๋ ์ํ ๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์ ์ธ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ์กด CSS ์ ํ ๋๋ JavaScript ๊ธฐ๋ฐ ์ ๋๋ฉ์ด์ ๊ณผ ๋ฌ๋ฆฌ ๋ทฐ ์ ํ์ ๋ณ๊ฒฝ ์ ๊ณผ ํ์ ํ์ด์ง ์ํ๋ฅผ ์บก์ฒํ๊ณ ๊ทธ ์ฌ์ด๋ฅผ ๋ถ๋๋ฝ๊ฒ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ณต์กํ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์ ๋์ฑ ์ ์ฐํ๊ณ ์์ฐ์ค๋ฌ์ด ์ ํ์ด ์ด๋ฃจ์ด์ง๋ฉฐ, ๊ฐ์์ค๋ฌ์ด ์ ํ๋ฅผ ๋ฐฉ์งํ๊ณ ์น์ฌ์ดํธ์ ์ธ์ง๋ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
๋ง์น ์ค์ ์ฑ ์์ ํ์ด์ง๋ฅผ ๋๊ธฐ๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ์๊ฐํ์ญ์์ค. ๊ฐ ํ์ด์ง๋ ๋ถ๋๋ฝ๊ฒ ๋ค์ ํ์ด์ง๋ก ์ ํ๋์ด ์ฝํ ์ธ ๋ฅผ ์ฐ๊ฒฐํ๋ ์๊ฐ์ ๋จ์๋ฅผ ์ ๊ณตํฉ๋๋ค. CSS ๋ทฐ ์ ํ์ ์น์์ ์ด๋ฌํ ๊ฒฝํ์ ๋ณต์ ํ์ฌ ์ฐ์์ฑ๊ณผ ๊ณต๊ฐ ์ธ์๊ฐ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
๋ทฐ ์ ํ์ ์ฌ์ฉํด์ผ ํ๋ ์ด์
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ถ๋๋ฌ์ด ์ ํ์ ์น์ฌ์ดํธ๋ฅผ ๋์ฑ ๋ฐ์์ ์ด๊ณ ์ธ๋ จ๋๊ฒ ๋ง๋ค์ด ๋์ฑ ์ฆ๊ฑฐ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ํฅ์๋ ์ธ์ง๋ ์ฑ๋ฅ: ์ค์ ๋ก๋ฉ ์๊ฐ์ด ๋์ผํ๋๋ผ๋ ๋ทฐ ์ ํ์ ์ ํ ์ค์ ์๊ฐ์ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ฌ ์น์ฌ์ดํธ๊ฐ ๋ ๋น ๋ฅด๊ฒ ๋๊ปด์ง๋๋ก ํ ์ ์์ต๋๋ค.
- ๋ ๋ช ํํ ๋ด๋น๊ฒ์ด์ : ๋ทฐ ์ ํ์ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์ฌ๋ฌ ๋ถ๋ถ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋์ด ๋ด๋น๊ฒ์ด์ ์ ๋์ฑ ์ง๊ด์ ์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
- ์ธ์ง ๋ถํ ๊ฐ์: ์๊ฐ์ ๋จ์๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ๋ทฐ ์ ํ์ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ ์ ์ฝํ ์ธ ์ ์ปจํ ์คํธ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋์ด ์ธ์ง ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ํ๋์ ์ด๊ณ ๋งค๋ ฅ์ ์ธ ๋์์ธ: ๋ทฐ ์ ํ์ ์น์ฌ์ดํธ์ ์ธ๋ จ๋ฏธ์ ํ๋์ ์ธ ๊ฐ๊ฐ์ ๋ํ์ฌ ๋ค๋ฅธ ์น์ฌ์ดํธ์ ์ฐจ๋ณํํ ์ ์์ต๋๋ค.
๋ทฐ ์ ํ์ ๊ธฐ๋ณธ ๊ตฌํ
CSS์์ ๋ทฐ ์ ํ์ ๊ตฌํํ๋ ค๋ฉด ๋ช ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
- ๋ทฐ ์ ํ ํ์ฑํ: JavaScript์์
document.startViewTransition()API๋ฅผ ์ฌ์ฉํ์ฌ ๋ทฐ ์ ํ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. - ์ ํ ์คํ์ผ ์ ์(์ ํ ์ฌํญ): CSS๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ ๋ชจ์์ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
JavaScript ํธ๋ฆฌ๊ฑฐ
๋ทฐ ์ ํ ์ฌ์ฉ์ ํต์ฌ์ document.startViewTransition() ํจ์์
๋๋ค. ์ด ํจ์๋ ์ฝ๋ฐฑ์ ์ธ์๋ก ์ฌ์ฉํฉ๋๋ค. ์ฝ๋ฐฑ์ DOM์ ์ ์ํ๋ก ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋๋จธ์ง ์์
์ ์ฒ๋ฆฌํ์ฌ "์ด์ " ์ํ์ "์" ์ํ๋ฅผ ์บก์ฒํ๊ณ ๊ทธ ์ฌ์ด๋ฅผ ์ ๋๋ฉ์ด์
์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
function navigate(newContent) {
document.startViewTransition(() => {
// Update the DOM with the new content
document.querySelector('#content').innerHTML = newContent;
});
}
// Example Usage:
document.getElementById('link-to-page-2').addEventListener('click', (event) => {
event.preventDefault();
navigate('This is the content of Page 2!
');
});
์ด ์์ ์์ id๊ฐ 'link-to-page-2'์ธ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด navigate ํจ์๊ฐ ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ์ด ํจ์๋ document.startViewTransition()์ ํธ์ถํ์ฌ id๊ฐ 'content'์ธ ์์์ ์ฝํ
์ธ ๋ฅผ ์
๋ฐ์ดํธํ๋ ์ฝ๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ๋ณธ CSS ์ฌ์ฉ์ ์ง์
๊ธฐ๋ณธ์ ์ผ๋ก ๋ทฐ ์ ํ์ ์ด์ ์ฝํ ์ธ ์ ์ ์ฝํ ์ธ ์ฌ์ด๋ฅผ ํ์ด๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ CSS๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ์ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค. ๋ค์์ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ฃผ์ CSS ์์ฑ์ ๋๋ค.
view-transition-name: ์์์ ์ด๋ฆ์ ํ ๋นํ์ฌ ์ ํ ์ค์ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.transition: ํ์ค CSS ์ ํ์ ๋ทฐ ์ ํ ์์์ ์ ์ฉํฉ๋๋ค.
#content {
view-transition-name: content-area;
}
::view-transition-old(content-area),
::view-transition-new(content-area) {
animation-duration: 0.5s;
animation-timing-function: ease-in-out;
}
::view-transition-old(content-area) {
transform: translateX(0);
}
::view-transition-new(content-area) {
transform: translateX(0);
}
์ด ์์ ์์:
view-transition-name: content-area;๋#content์์์ ์ด๋ฆ "content-area"๋ฅผ ํ ๋นํฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ์ ๋ทฐ ์ ํ ์ค์ ์ด ์์๋ฅผ ํน๋ณํ ์ฒ๋ฆฌํ๋๋ก ์ง์ํฉ๋๋ค.::view-transition-old(content-area)๋ฐ::view-transition-new(content-area)๊ฐ์ ์์๋ ์ ํ ์ค์ ์์์ ์ด์ ๋ฒ์ ๊ณผ ์ ๋ฒ์ ์ ๊ฐ๊ฐ ์ ํํฉ๋๋ค.- ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ์์์ ์ ํ์ ์ ์ฉํ์ฌ ์ ํ ์ค์ ํ์ด๋ ๋ฐ ์ฌ๋ผ์ด๋๋๋๋ก ํฉ๋๋ค.
๊ณ ๊ธ ๋ทฐ ์ ํ ๊ธฐ์
๊ธฐ๋ณธ ๊ตฌํ์ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ ์ ๊ณตํ์ง๋ง ๋์ฑ ๊ณ ๊ธ ๊ธฐ์ ์ ํ์ฉํ์ฌ ์ง์ ์ผ๋ก ๋ฉ์ง๊ณ ๋งค๋ ฅ์ ์ธ ๋ทฐ ์ ํ์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ฐ๋ณ ์์ ์ ๋๋ฉ์ด์ ์ฒ๋ฆฌ
๊ฐ๋ณ ์์์ ๊ณ ์ ํ view-transition-name ์์ฑ์ ํ ๋นํ๋ฉด ์ ํ ์ค์ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋๋ฉ์ด์
์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋์ฑ ๋ณต์กํ๊ณ ๋ง์ถคํ๋ ์ ๋๋ฉ์ด์
์ ๋ง๋ค ์ ์์ต๋๋ค.
<div id="container">
<img id="image1" src="image1.jpg" alt="Image 1" style="view-transition-name: image1;">
<h2 id="title1" style="view-transition-name: title1;">Title 1</h2>
<p id="description1" style="view-transition-name: description1;">Description 1</p>
</div>
::view-transition-old(image1) {
transform: scale(1.2);
opacity: 0;
}
::view-transition-new(image1) {
transform: scale(1);
opacity: 1;
}
::view-transition-old(title1) {
transform: translateY(-20px);
opacity: 0;
}
::view-transition-new(title1) {
transform: translateY(0);
opacity: 1;
}
์ด ์์ ์์๋ ์ด๋ฏธ์ง์ ์ ๋ชฉ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ๋๋ฉ์ด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด์ ์ด๋ฏธ์ง๋ ํ๋๋๊ณ ์ฌ๋ผ์ง๊ณ , ์ ์ด๋ฏธ์ง๋ ์ถ์๋๊ณ ๋ํ๋ฉ๋๋ค. ์ด์ ์ ๋ชฉ์ ์๋ก ์ฌ๋ผ์ด๋๋๊ณ ์ฌ๋ผ์ง๊ณ , ์ ์ ๋ชฉ์ ์๋๋ก ์ฌ๋ผ์ด๋๋๊ณ ๋ํ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ญ๋์ ์ด๊ณ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ์ ํ์ด ๋ง๋ค์ด์ง๋๋ค.
๊ณต์ ์์ ์ ํ
๊ณต์ ์์ ์ ํ์ "์ด์ " ์ํ์ "์" ์ํ ๋ชจ๋์ ๋ํ๋๋ ๋จ์ผ ์์๋ฅผ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์น์ฌ์ดํธ์ ๋ค๋ฅธ ํ์ด์ง ๋๋ ์น์ ๊ฐ์ ํ์ํ ๋ ์ฐ์์ฑ์ ๋ง๋๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ ํ ๋ชฉ๋ก ํ์ด์ง์ ์ ํ ์ธ๋ถ ์ ๋ณด ํ์ด์ง๋ฅผ ์์ํด ๋ณด์ญ์์ค. ์ ํ ์ด๋ฏธ์ง๋ ๊ณต์ ์์๊ฐ ๋ ์ ์์ผ๋ฉฐ ๋ชฉ๋ก ํ์ด์ง์์ ์ธ๋ถ ์ ๋ณด ํ์ด์ง๋ก ์ํํ๊ฒ ์ ํ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ ํ์ด์ง ๊ฐ์ ๊ฐ๋ ฅํ ์๊ฐ์ ์ฐ๊ฒฐ์ด ์์ฑ๋๊ณ ์ฌ์ฉ์'์ ๊ด๊ณ ์ดํด๋๊ฐ ํฅ์๋ฉ๋๋ค.
๊ต์ฐจ ์ถ์ฒ ์ ํ
ํ์ํ CORS ํค๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๋ทฐ ์ ํ์ ๋ค๋ฅธ ์ถ์ฒ(๋๋ฉ์ธ)์์๋ ์๋ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์๊ฐ ์ ์ดํ๊ณ CORS ์ค์ ์ ๊ด๋ฆฌํ ์ ์๋ ํ ๋ค๋ฅธ ์น์ฌ์ดํธ ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ํํ ์ ํ์ ๋ง๋ค ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์ด๋ฆฝ๋๋ค.
๋ทฐ ์ ํ ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๋ทฐ ์ ํ์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง๋ง ์ต์ ์ ์ฑ๋ฅ๊ณผ ์ ๊ทผ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ ์คํ๊ฒ ์ฌ์ฉํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋๋ฌผ๊ฒ ์ฌ์ฉํ์ญ์์ค: ๋ทฐ ์ ํ์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฐ๋งํด์ง๊ณ ์ง์ฆ์ค๋ฌ์ธ ์๋ ์์ต๋๋ค. ์ฃผ์ ์ํธ ์์ฉ๊ณผ ํ์ ์ง์ ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ ๋ต์ ์ผ๋ก ์ฌ์ฉํ์ญ์์ค.
- ์ ํ์ ์งง๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ์ญ์์ค: ์ ํ ์ง์ ์๊ฐ์ ์ฝ 0.3~0.5์ด๋ก ๋ชฉํ๋ก ํ์ญ์์ค. ์ ํ ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ๋๋ฆฌ๊ฒ ๋๊ปด์ง๊ณ ์ฌ์ฉ์ ํ๋ฆ์ด ์ค๋จ๋ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ์ฐ์ ์์ ์ง์ : ์ด๋ฏธ์ง ๋ฐ ๊ธฐํ ์์ฐ์ ์ต์ ํํ์ฌ ๋ทฐ ์ ํ์ด ํ์ด์ง ๋ก๋ ์๊ฐ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ์ญ์์ค.
- ์ ๊ทผ์ฑ ๊ณ ๋ ค: ๋ทฐ ์ ํ์ด ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์์ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์๋๋ก ํ์ญ์์ค. ์ ๋๋ฉ์ด์ ์ ๋ณด๊ณ ์ถ์ง ์์ ์ฌ์ฉ์๋ฅผ ์ํด ์น์ฌ์ดํธ๋ฅผ ํ์ํ ์ ์๋ ๋์ฒด ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ญ์์ค.
- ์ฒ ์ ํ ํ ์คํธ: ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น์์ ๋ทฐ ์ ํ์ ํ ์คํธํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ผ๊ด๋ ๊ฒฝํ์ ์ ๊ณตํ๋์ง ํ์ธํ์ญ์์ค.
- ์๋ฏธ ์๋ ์ ํ ์ฌ์ฉ: ์ ํ์ ๋จ์ํ ๋์๊ธฐ๊ฐ ์๋๋ผ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์น๋ฅผ ๋ํด์ผ ํฉ๋๋ค. ์ ๋๋ฉ์ด์ ์ด ์ฌ์ฉ์๊ฐ ์ ์ฝํ ์ธ ์ ์ปจํ ์คํธ ๋๋ ์น์ฌ์ดํธ์ ๋ค๋ฅธ ๋ถ๋ถ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ดํดํ๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ด ๋ ์ ์๋์ง ์๊ฐํด ๋ณด์ญ์์ค.
์ค์ ๋ทฐ ์ ํ ์
๋ค์์ ๋ทฐ ์ ํ์ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์๋ ๋ช ๊ฐ์ง ์์ ๋๋ค.
- ํ์ด์ง ์ ํ: ์น์ฌ์ดํธ์ ๋ค๋ฅธ ํ์ด์ง ๋๋ ์น์ ๊ฐ์ ์ํํ๊ฒ ์ ํํฉ๋๋ค.
- ๋ชจ๋ฌ ์ ํ: ๋ชจ๋ฌ ์ฐฝ์ ๋ชจ์๊ณผ ์ฌ๋ผ์ง์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ ์ ํ: ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ์ ์ด๋ฏธ์ง ๊ฐ์ ๋งค๋ ฅ์ ์ธ ์ ํ์ ๋ง๋ญ๋๋ค.
- ๋ชฉ๋ก ํญ๋ชฉ ์ ํ: ๋ชฉ๋ก์์ ํญ๋ชฉ์ ์ถ๊ฐ, ์ ๊ฑฐ ๋๋ ์ฌ์ ๋ ฌ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ํ ๋ณ๊ฒฝ: ์ค์์น ์ ํ ๋๋ ์น์ ํ์ฅ๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์์ ์ํ ๋ณ๊ฒฝ์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์ 1: ๋ถ๋๋ฌ์ด ํ์ด์ง ์ ํ
๋ธ๋ก๊ทธ ์น์ฌ์ดํธ๋ฅผ ์์ํด ๋ณด์ญ์์ค. ์ฌ์ฉ์๊ฐ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ๋งํฌ๋ฅผ ํด๋ฆญํ ๋ ๊ฐ์์ค๋ฌ์ด ํ์ด์ง ๋ก๋ ๋์ ๋ทฐ ์ ํ์ ์ ์ฝํ ์ธ ๋ฅผ ์ธก๋ฉด์์ ๋ถ๋๋ฝ๊ฒ ๋ฐ์ด ๋ฃ์ด ๋์ฑ ๋ชฐ์ ๊ฐ ์๊ณ ๋งค๋ ฅ์ ์ธ ๋ ์ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ 2: ์ ๋๋ฉ์ด์ ๋ชจ๋ฌ ์ฐฝ
๋ชจ๋ฌ ์ฐฝ์ด ํ๋ฉด์ ๊ฐ์๊ธฐ ๋ํ๋๋ ๋์ ๋ทฐ ์ ํ์ ๋ฐฐ๊ฒฝ์์ ๋ถ๋๋ฝ๊ฒ ํ์ด๋ ์ธํ์ฌ ์ฌ์ฉ์'์ ์ฃผ์๋ฅผ ๋๊ณ ๋์ฑ ์ธ๋ จ๋ ์๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ฌ์ ๋ซ์ ๋ ๋ถ๋๋ฝ๊ฒ ํ์ด๋ ์์๋์ด ์ฌ์ฉ์'๋ฅผ ๊ธฐ๋ณธ ์ฝํ ์ธ ๋ก ๋ถ๋๋ฝ๊ฒ ์๋ดํ ์ ์์ต๋๋ค.
์ 3: ๋งค๋ ฅ์ ์ธ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ ์ ํ
์จ๋ผ์ธ ํฌํธํด๋ฆฌ์ค ๋๋ ์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ์ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ๋ ํ์์ ์ ๋๋ค. ๋ทฐ ์ ํ์ ์ด๋ฏธ์ง ๊ฐ์ ๋ถ๋๋ฝ๊ณ ์ญ๋์ ์ธ ์ ํ์ ๋ง๋ค์ด ๊ฒ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ์ฌ ์ด๋ฏธ์ง๊ฐ ๋ถ๋๋ฝ๊ฒ ์ถ์๋๋ ๋์ ๋ค์ ์ด๋ฏธ์ง๊ฐ ํ๋๋์ด ๊น์ด์ ์์ง์๊ฐ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฐ ํด๋ฆฌํ
์๋์ ์ผ๋ก ์๋ก์ด ๊ธฐ์ ์ธ CSS ๋ทฐ ์ ํ์ ํนํ ์ด์ ๋ฒ์ ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์์ ํ ์ง์๋์ง ์์ ์ ์์ต๋๋ค. ๊ตฌํํ๊ธฐ ์ ์ ํ์ฌ ๋ธ๋ผ์ฐ์ ์ง์์ ํ์ธํ์ญ์์ค. ํ์ง๋ง ์ด ๊ธ์ ์ฐ๋ ์์ ์๋ ์ฃผ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํฉ๋๋ค. ์ง์๋์ง ์๋ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ์์๊ฒ ์ผ๊ด๋ ๊ฒฝํ์ ์ ๊ณตํ๋ ค๋ฉด ํด๋ฆฌํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋ฆฌํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋ ์ด์ ๋ธ๋ผ์ฐ์ ์์ ์ต์ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ JavaScript ์ฝ๋์ ๋๋ค.
CSS ๋ทฐ ์ ํ์ ์ฌ์ฉํ ์ ์๋ ์ฌ๋ฌ ํด๋ฆฌํ์ด ์์ด ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๊ณ ์น์ฌ์ดํธ๊ฐ ๋ชจ๋ ์ฅ์น์์ ๋ฉ์ง๊ฒ ๋ณด์ด๋๋ก ํ ์ ์์ต๋๋ค. ํธํ์ฑ ๋ฐ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ํด๋ฆฌํ ์ ๋ฌด์ ๊ด๊ณ์์ด ์น์ฌ์ดํธ๋ฅผ ์ฒ ์ ํ ํ ์คํธํด์ผ ํฉ๋๋ค.
์ ๊ทผ์ฑ ๊ณ ๋ ค ์ฌํญ
์ ๊ทผ์ฑ์ ์น ๊ฐ๋ฐ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. CSS ๋ทฐ ์ ํ์ ๊ตฌํํ ๋ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ๊ณ ๋ คํ๊ณ ์น์ฌ์ดํธ๊ฐ ๋ชจ๋ ์ฌ๋์ด ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋์ ๊ฐ์ ๊ธฐ๋ณธ ์ค์ : ๋์ ๊ฐ์์ ๋ํ ์ฌ์ฉ์'์ ๊ธฐ๋ณธ ์ค์ ์ ์กด์คํ์ญ์์ค. ๋ง์ ์ด์ ์ฒด์ ์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ์๋ ์ฐ๋งํจ์ ์ค์ด๊ฑฐ๋ ๋ฉ๋ฏธ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ ๋๋ฉ์ด์
์ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
prefers-reduced-motionCSS ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ทฐ ์ ํ์ ๊ฐ๋๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋ ์ค์ด์ญ์์ค. - ํค๋ณด๋ ํ์: ์น์ฌ์ดํธ์ ๋ชจ๋ ๋ํํ ์์๊ฐ ํค๋ณด๋ ํ์์ ํตํด ์ ๊ทผํ ์ ์๋์ง ํ์ธํ์ญ์์ค. ๋ทฐ ์ ํ์ ํค๋ณด๋ ํฌ์ปค์ค ์์๋ฅผ ๋ฐฉํดํ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ๋ฅผ ํ์ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค์ด์๋ ์ ๋ฉ๋๋ค.
- ํ๋ฉด ํ๋ ๊ธฐ ํธํ์ฑ: ๋ทฐ ์ ํ์ด ํ๋ฉด ํ๋ ๊ธฐ์ ํธํ๋๋์ง ํ์ธํ์ญ์์ค. ์ ๋๋ฉ์ด์ ์ฝํ ์ธ ์ ๋ํ ์ค๋ช ํ ์คํธ ๋์์ ์ ๊ณตํ์ฌ ์๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ ํ์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ ํ ์ดํดํ ์ ์๋๋ก ํ์ญ์์ค.
- ์ถฉ๋ถํ ๋๋น: ํนํ ์ ํ ์ค์ ํ ์คํธ์ ๋ฐฐ๊ฒฝ์ ์ฌ์ด์ ์ถฉ๋ถํ ๋๋น๊ฐ ์๋์ง ํ์ธํ์ญ์์ค. ์ด๋ ์๋ ฅ์ด ๋ฎ์ ์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ๋ฅผ ๋ช ํํ๊ฒ ๋ณด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ทฐ ์ ํ์ ๋ฏธ๋
CSS ๋ทฐ ์ ํ์ ์น ๊ฐ๋ฐ์ ์ค์ํ ์ง์ ์ ๋ํ๋ด๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๊ณ ๋์ฑ ๋งค๋ ฅ์ ์ด๊ณ ๋ชฐ์ ๊ฐ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ ๊ฐ๋ ฅํ๊ณ ์ ์ธ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ด ๊ณ์ ์ฆ๊ฐํ๊ณ ๊ธฐ์ ์ด ์ฑ์ํด์ง์ ๋ฐ๋ผ ์์ผ๋ก ๋ทฐ ์ ํ์ ๋์ฑ ํ์ ์ ์ด๊ณ ์ฐฝ์์ ์ธ ์ฌ์ฉ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
์ ์ฌ์ ์ธ ๋ฏธ๋ ๊ฐ๋ฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ๋์ฑ ๊ณ ๊ธ ์ ๋๋ฉ์ด์ ์ต์ : ์ฌ์ฉ์ ์ ์ ์ํ ํจ์, ์๊ฐ๋ฆฐ ์ ๋๋ฉ์ด์ ๋ฐ ๋์ฑ ๋ณต์กํ ์ ํ ํจ๊ณผ์ ๋ํ ์ง์๊ณผ ๊ฐ์ด ๋ทฐ ์ ํ์ ๋ชจ์๊ณผ ๋์์ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๋ ๋ง์ ์ต์ ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
- ์น ๊ตฌ์ฑ ์์์์ ํตํฉ: ๋ทฐ ์ ํ์ ์น ๊ตฌ์ฑ ์์์ ์ ์ ๋ ํตํฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ณธ ์ ๊ณต ์ ํ ํจ๊ณผ๊ฐ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ์บก์ํ๋ UI ์์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ์๋ฒ ์ธก ๋ ๋๋ง ์ง์: ์๋ฒ ์ธก ๋ ๋๋ง์ด ๋์ฑ ๋ณดํธํ๋จ์ ๋ฐ๋ผ ์๋ฒ ์ธก์์ ๋ทฐ ์ ํ์ ๋ํ ์ง์์ ๊ธฐ๋ํ ์ ์์ด ๋์ฑ ๋ถ๋๋ฝ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ด๊ธฐ ํ์ด์ง ๋ก๋๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๊ฒฐ๋ก
CSS @view-transition์ ์ํํ๊ณ ๋งค๋ ฅ์ ์ธ ํ์ ์ ๋๋ฉ์ด์
์ ํตํด ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ค๋ ์น ๊ฐ๋ฐ์์๊ฒ ๊ฒ์ ์ฒด์ธ์ ์
๋๋ค. ์ด ๊ฐ์ด๋์ ์ค๋ช
๋ ์์น, ๊ธฐ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํจ์ผ๋ก์จ ๋ทฐ ์ ํ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ์ ๊ธ ํด์ ํ๊ณ ์๊ฐ์ ์ผ๋ก ํ๋ฅญํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์์ฉํ๊ณ ์น์ฌ์ดํธ๋ฅผ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ง์ ์ผ๋ก ๋ชฐ์
๊ฐ ์๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ๊ฒฝํ์ผ๋ก ์ ํํ๊ธฐ ์์ํ์ญ์์ค.