
๐Skeleton UI๋?

์ค์ผ๋ ํค UI๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ ๋ก๋ฉ๋๊ธฐ ์ ์ฌ์ฉ์์๊ฒ ํ๋ฉด์ด ๋ก๋ ์ค์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ UI์ ๋๋ค.
Luke Wroblewski ๋ ๋์์ด๋๊ฐ ์๊ฐ์ ๊ฐ์ฒด ํ์ ์ ํธํ๋ ์คํผ๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ์กฐ์ธ ํ๋ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์ "์ค์ผ๋ ํค ์คํฌ๋ฆฐ"์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฒ์ ๋ง๋ค์์ต๋๋ค.
์ค์ผ๋ ํค ๋ก๋ฉ ํ๋ฉด์ ๊ธฐ๋ณธ์ ์ผ๋ก์๋ณธ ๋ ์ด์์์ ๊ธฐ์ค์ผ๋ก ์ ์๋๊ณ ํ์ด์ง๊ฐ ๋ก๋ฉ๋๊ณ ์ฌ์ฉ ๊ฐ๋ฅํด์ง ๋ ์ค์ ์ฝํ ์ธ ์ ์ ์ฌํ ๋ชจ์์ผ๋ก ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.


์ค์ผ๋ ํค ๋ก๋ฉ ํ๋ฉด์ ๊ธฐ๋ณธ์ ์ผ๋ก์๋ณธ ๋ ์ด์์์ ๊ธฐ์ค์ผ๋ก ์ ์๋๊ณ ํ์ด์ง๊ฐ ๋ก๋ฉ๋๊ณ ์ฌ์ฉ ๊ฐ๋ฅํด์ง ๋ ์ค์ ์ฝํ ์ธ ์ ์ ์ฌํ ๋ชจ์์ผ๋ก ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
[๐ค๊ทธ๋ผ, ์ ์ค์ผ๋ ํค UI ๋ก๋ฉ ํ๋ฉด์ ์ฌ์ฉํ๋์?]
๋น ํ์ด์ง๋ฅผ ํ์ํ๋ ๋์ ์ฝํ ์ธ ๋ก๋ฉ์ ํ์ํ๋ฉด ์ฌ์ฉ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์๋ต์ฑ์ด ๋ ๋น ๋ฅด๋ค๊ณ ๋๋ผ๊ฒ ๋๊ณ ์คํผ๋๋ฅผ ๋ก๋ํ ๋ ๋ณด๋ค ๋ ๋น ๋ฅด๊ณ ์นํ์ ์ด๋ผ๊ณ ๋๋ผ๊ฒ ๋ฉ๋๋ค.
๋ฐ์ ์ฐ๊ตฌ๊ฒฐ๊ณผ๋ ์ด๋ค ๋ก๋ฉํ๋ฉด์ ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ์นํ์ ์ผ๋ก ๋๋ผ๋๊ฐ์ ๋ํ 'Bill Chung์ ์ฐ๊ตฌ๊ฒฐ๊ณผ์ ๋๋ค.


๋ค๋ฅธ ๋ก๋ฉ ๋ฉ์๋๋ค๋ณด๋ค ์นํ์ ์ด๊ณ ๋ ๋น ๋ฅด๋ค๋ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋์์ต๋๋ค.
ํ์ง๋ง, ๋จ์ ๋ ์กด์ฌํฉ๋๋ค. ์๋ก์ด ์ค์ผ๋ ํค UI๋ฅผ ํ๋ฉด๋ง๋ค ๊ทธ๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ๊ณผ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค.
๐ชSkeleton UI ์ ์ํ๊ธฐ
[1.Skeleton UI ๊ตฌ์กฐํ]
์ด ๋ ๊ฐ์Gird List
์ ์ปดํฌ๋ํธ์ Skeleton UI๋ฅผ ์ ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
โ ๊ธฐ์กด ์ปดํฌ๋ํธ ๊ตฌ์กฐ
1.Row List
ํ์ ์ปดํฌ๋ํธ

2. Card List
ํ์ ์ปดํฌ๋ํธ

์ฃผ์ํ ์ ์_Skeleton UI์ ๋ชฉ์ ์ ๋ฐ์ดํฐ์ ๋ํ ์ง๋ฃจํ ๋๊ธฐ์๊ฐ์ ์ค์ด๋ ๊ฒ์ด๋ฏ๋ก ์ค์ UI ์ปดํฌ๋ํธ์ ๋๋ฌด ๋ค๋ฅด์ง ์์์ผ ํฉ๋๋ค. ์๋ณธ ๋ ์ด์์๊ณผ ๋ค๋ฅด๋ฉด ์ฌ์ฉ์๋ Skeleton ์ปดํฌ๋ํธ๊ฐ ๋ ๋ค๋ฅธ ๋ ๋ฆฝ์ ์ธ UI ์ปดํฌ๋ํธ๋ผ๊ณ ์ธ์งํ ์ ์์ต๋๋ค.
โ Skeleton ์ ์ฉ ์ปดํฌ๋ํธ ๊ตฌ์กฐ
1. Row List
ํ์Skeleton ์ปดํฌ๋ํธ
2. Card List
ํ์Skeleton ์ปดํฌ๋ํธ
[2. Animation ์ ์ฉํ๊ธฐ]
Bill Chung์ ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด ์ค์ผ๋ ํค ๋ด ์ ๋๋ฉ์ด์ ์ ๊ท์น์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ๋ ๋ก๋ฉ ์๊ฐ์ ๋ ์งง๊ฒ ๋๋ผ๊ฒ ๋๋ค๊ณ ํฉ๋๋ค.

- ๋งฅ๋ฐ๋ณด๋ค๋์จ์ด๋ธ ํจ๊ณผ
- ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ง์ด๋ ์ ๋๋ฉ์ด์
- ์ ๋๋ฉ์ด์ ์ Skeleton ์ปดํฌ๋ํธ์ ์ฃผ์๋ฅผ ๋๋งํผ๋น ๋ฅด์ง ์์์ผ ํจ
์ ๋ ์ด ๊ท์น์ ๋ฐ๋ผ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํด ๋ดค์ต๋๋ค.
โ Skeleton ์ ์ฉ, Animation ์ ์ฉ ์ปดํฌ๋ํธ ๊ตฌ์กฐ
1. Row List
ํ์ Skeleton ์ปดํฌ๋ํธAnimation
2. Card List
ํ์ Skeleton ์ปดํฌ๋ํธAnimation
[Animation ์ฌ์ฉ - CSS VS Image]
์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ ๋์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ CSS๋ก ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
CSS๋ก ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์ด๋ฅผ ๊ณ์ฐํ๊ณ ํ๋ฉด์ ๊ทธ๋ฆฌ๋(GPU)๋ถํ์ํ ์์ ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๋ CSS๋ฅผ ์ด์ฉํด ์์ฑํ์ต๋๋ค.
@-webkit-keyframes skeleton-gradient {
0% {
background-color: rgba(165, 165, 165, 0.1);
}
50% {
background-color: rgba(165, 165, 165, 0.3);
}
100% {
background-color: rgba(165, 165, 165, 0.1);
}
}
@keyframes skeleton-gradient {
0% {
background-color: rgba(165, 165, 165, 0.1);
}
50% {
background-color: rgba(165, 165, 165, 0.3);
}
100% {
background-color: rgba(165, 165, 165, 0.1);
}
}
/*ํด๋น๋๋ ์ปดํฌ๋ํธ์ ์ ์ฉ*/
.skeleton-list-item {
-webkit-animation: skeleton-gradient 1.8s infinite ease-in-out;
animation: skeleton-gradient 1.8s infinite ease-in-out;
}
์ด๋ ๊ฒ ์ค์ผ๋ ํค UI ์์ฑ์ด ์๋ฃ๋์์ต๋๋ค.๐
๋น๊ต
[๊ธฐ์กด]

[์ค์ผ๋ ํค ์ ์ฉ ํ]

์ฌ์ฉ์๋ค์ด ํจ์ฌ ํ์ฌ ๋ก๋ฉ ์ค์์ ์ ์ ์๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ UI๋ก ๋ฐ์ ํ์ต๋๋ค!๐
์ถ์ฒ

๐Skeleton UI๋?

์ค์ผ๋ ํค UI๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ ๋ก๋ฉ๋๊ธฐ ์ ์ฌ์ฉ์์๊ฒ ํ๋ฉด์ด ๋ก๋ ์ค์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ UI์ ๋๋ค.
Luke Wroblewski ๋ ๋์์ด๋๊ฐ ์๊ฐ์ ๊ฐ์ฒด ํ์ ์ ํธํ๋ ์คํผ๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ์กฐ์ธ ํ๋ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์ "์ค์ผ๋ ํค ์คํฌ๋ฆฐ"์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฒ์ ๋ง๋ค์์ต๋๋ค.
์ค์ผ๋ ํค ๋ก๋ฉ ํ๋ฉด์ ๊ธฐ๋ณธ์ ์ผ๋ก์๋ณธ ๋ ์ด์์์ ๊ธฐ์ค์ผ๋ก ์ ์๋๊ณ ํ์ด์ง๊ฐ ๋ก๋ฉ๋๊ณ ์ฌ์ฉ ๊ฐ๋ฅํด์ง ๋ ์ค์ ์ฝํ ์ธ ์ ์ ์ฌํ ๋ชจ์์ผ๋ก ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.


์ค์ผ๋ ํค ๋ก๋ฉ ํ๋ฉด์ ๊ธฐ๋ณธ์ ์ผ๋ก์๋ณธ ๋ ์ด์์์ ๊ธฐ์ค์ผ๋ก ์ ์๋๊ณ ํ์ด์ง๊ฐ ๋ก๋ฉ๋๊ณ ์ฌ์ฉ ๊ฐ๋ฅํด์ง ๋ ์ค์ ์ฝํ ์ธ ์ ์ ์ฌํ ๋ชจ์์ผ๋ก ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
[๐ค๊ทธ๋ผ, ์ ์ค์ผ๋ ํค UI ๋ก๋ฉ ํ๋ฉด์ ์ฌ์ฉํ๋์?]
๋น ํ์ด์ง๋ฅผ ํ์ํ๋ ๋์ ์ฝํ ์ธ ๋ก๋ฉ์ ํ์ํ๋ฉด ์ฌ์ฉ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์๋ต์ฑ์ด ๋ ๋น ๋ฅด๋ค๊ณ ๋๋ผ๊ฒ ๋๊ณ ์คํผ๋๋ฅผ ๋ก๋ํ ๋ ๋ณด๋ค ๋ ๋น ๋ฅด๊ณ ์นํ์ ์ด๋ผ๊ณ ๋๋ผ๊ฒ ๋ฉ๋๋ค.
๋ฐ์ ์ฐ๊ตฌ๊ฒฐ๊ณผ๋ ์ด๋ค ๋ก๋ฉํ๋ฉด์ ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ์นํ์ ์ผ๋ก ๋๋ผ๋๊ฐ์ ๋ํ 'Bill Chung์ ์ฐ๊ตฌ๊ฒฐ๊ณผ์ ๋๋ค.


๋ค๋ฅธ ๋ก๋ฉ ๋ฉ์๋๋ค๋ณด๋ค ์นํ์ ์ด๊ณ ๋ ๋น ๋ฅด๋ค๋ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋์์ต๋๋ค.
ํ์ง๋ง, ๋จ์ ๋ ์กด์ฌํฉ๋๋ค. ์๋ก์ด ์ค์ผ๋ ํค UI๋ฅผ ํ๋ฉด๋ง๋ค ๊ทธ๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ๊ณผ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค.
๐ชSkeleton UI ์ ์ํ๊ธฐ
[1.Skeleton UI ๊ตฌ์กฐํ]
์ด ๋ ๊ฐ์Gird List
์ ์ปดํฌ๋ํธ์ Skeleton UI๋ฅผ ์ ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
โ ๊ธฐ์กด ์ปดํฌ๋ํธ ๊ตฌ์กฐ
1.Row List
ํ์ ์ปดํฌ๋ํธ

2. Card List
ํ์ ์ปดํฌ๋ํธ

์ฃผ์ํ ์ ์_Skeleton UI์ ๋ชฉ์ ์ ๋ฐ์ดํฐ์ ๋ํ ์ง๋ฃจํ ๋๊ธฐ์๊ฐ์ ์ค์ด๋ ๊ฒ์ด๋ฏ๋ก ์ค์ UI ์ปดํฌ๋ํธ์ ๋๋ฌด ๋ค๋ฅด์ง ์์์ผ ํฉ๋๋ค. ์๋ณธ ๋ ์ด์์๊ณผ ๋ค๋ฅด๋ฉด ์ฌ์ฉ์๋ Skeleton ์ปดํฌ๋ํธ๊ฐ ๋ ๋ค๋ฅธ ๋ ๋ฆฝ์ ์ธ UI ์ปดํฌ๋ํธ๋ผ๊ณ ์ธ์งํ ์ ์์ต๋๋ค.
โ Skeleton ์ ์ฉ ์ปดํฌ๋ํธ ๊ตฌ์กฐ
1. Row List
ํ์Skeleton ์ปดํฌ๋ํธ
2. Card List
ํ์Skeleton ์ปดํฌ๋ํธ
[2. Animation ์ ์ฉํ๊ธฐ]
Bill Chung์ ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด ์ค์ผ๋ ํค ๋ด ์ ๋๋ฉ์ด์ ์ ๊ท์น์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ๋ ๋ก๋ฉ ์๊ฐ์ ๋ ์งง๊ฒ ๋๋ผ๊ฒ ๋๋ค๊ณ ํฉ๋๋ค.

- ๋งฅ๋ฐ๋ณด๋ค๋์จ์ด๋ธ ํจ๊ณผ
- ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ง์ด๋ ์ ๋๋ฉ์ด์
- ์ ๋๋ฉ์ด์ ์ Skeleton ์ปดํฌ๋ํธ์ ์ฃผ์๋ฅผ ๋๋งํผ๋น ๋ฅด์ง ์์์ผ ํจ
์ ๋ ์ด ๊ท์น์ ๋ฐ๋ผ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํด ๋ดค์ต๋๋ค.
โ Skeleton ์ ์ฉ, Animation ์ ์ฉ ์ปดํฌ๋ํธ ๊ตฌ์กฐ
1. Row List
ํ์ Skeleton ์ปดํฌ๋ํธAnimation
2. Card List
ํ์ Skeleton ์ปดํฌ๋ํธAnimation
[Animation ์ฌ์ฉ - CSS VS Image]
์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ ๋์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ CSS๋ก ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
CSS๋ก ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์ด๋ฅผ ๊ณ์ฐํ๊ณ ํ๋ฉด์ ๊ทธ๋ฆฌ๋(GPU)๋ถํ์ํ ์์ ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๋ CSS๋ฅผ ์ด์ฉํด ์์ฑํ์ต๋๋ค.
@-webkit-keyframes skeleton-gradient {
0% {
background-color: rgba(165, 165, 165, 0.1);
}
50% {
background-color: rgba(165, 165, 165, 0.3);
}
100% {
background-color: rgba(165, 165, 165, 0.1);
}
}
@keyframes skeleton-gradient {
0% {
background-color: rgba(165, 165, 165, 0.1);
}
50% {
background-color: rgba(165, 165, 165, 0.3);
}
100% {
background-color: rgba(165, 165, 165, 0.1);
}
}
/*ํด๋น๋๋ ์ปดํฌ๋ํธ์ ์ ์ฉ*/
.skeleton-list-item {
-webkit-animation: skeleton-gradient 1.8s infinite ease-in-out;
animation: skeleton-gradient 1.8s infinite ease-in-out;
}
์ด๋ ๊ฒ ์ค์ผ๋ ํค UI ์์ฑ์ด ์๋ฃ๋์์ต๋๋ค.๐
๋น๊ต
[๊ธฐ์กด]

[์ค์ผ๋ ํค ์ ์ฉ ํ]

์ฌ์ฉ์๋ค์ด ํจ์ฌ ํ์ฌ ๋ก๋ฉ ์ค์์ ์ ์ ์๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ UI๋ก ๋ฐ์ ํ์ต๋๋ค!๐