-
Notifications
You must be signed in to change notification settings - Fork 4
๐ธ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด ๊ตฌํ: ํจ๋ฉ ํ ๊ธฐ๋ฒ

์น ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์์๋ ์ ๋์ํ๋ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด๋ฅผ ๊ตฌํํด์ผ ํ ๋๊ฐ ๋ง์ต๋๋ค. ํนํ YouTube์ ๊ฐ์ ํ๋ซํผ์์ ์ ๊ณตํ๋ ๋์์์ ์น์ฌ์ดํธ์ ์์ฐ์ค๋ฝ๊ฒ ์ฝ์ ํ๋ ค๋ฉด, ๋น๋์ค์ ์ข ํก๋น๋ฅผ ์ ์งํ๋ฉด์ ๋ค์ํ ๋๋ฐ์ด์ค์ ๋ง๊ฒ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ํจ๋ฉ ํ(padding-top) ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ทธ ์ด์ ์ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
- ํจ๋ฉ ํ ๊ธฐ๋ฒ์ด๋?
- ์ ํจ๋ฉ ํ์ ์ฌ์ฉํ ๊น?
- ๋ฐ์ํ ๋น๋์ค ๊ตฌํํ๊ธฐ
- ์ปจํ ์ด๋ ๋ธ๋ก๊ณผ ์์์ ํฌ๊ธฐ ๊ฒฐ์ ๋ก์ง
- CSS๋ฅผ ๋ชจ๋ฅด๋ ์ฌ๋์ ์ํ ์ฌ์ด ์ค๋ช
- ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ์ฅ์
- ๋ ๋๋ง ์ต์ ํ ์์
- ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ํ๊ณ์ ๋์
- ๊ฒฐ๋ก
ํจ๋ฉ ํ ๊ธฐ๋ฒ์ CSS์์ padding-top ์์ฑ์ ๋ฐฑ๋ถ์จ ๊ฐ์ ์ด์ฉํ์ฌ ์์์ ๋์ด๋ฅผ ๋ถ๋ชจ ์์์ ๋๋น์ ๋น๋กํ์ฌ ์ค์ ํ๋ ๊ธฐ๋ฒ์
๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํตํด ๋น๋์ค์ ์ข
ํก๋น๋ฅผ ์ ์งํ๋ฉด์ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ง์ถฐ ๋น๋์ค์ ํฌ๊ธฐ๋ฅผ ์ ์ฐํ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์์์ ๋์ด๋ฅผ ๋ฐฑ๋ถ์จ๋ก ์ค์ ํ๋ฉด ๋ถ๋ชจ ์์์ ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ํ์ง๋ง ๋ถ๋ชจ ์์์ ๋์ด๊ฐ ๋ช ์์ ์ผ๋ก ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ์์ ์์์ ๋์ด๋ฅผ ๋ฐฑ๋ถ์จ๋ก ์ค์ ํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์ ํจ๋ฉ์ ๋ฐฑ๋ถ์จ ๊ฐ์ ํญ์ ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ํ์ฉํ๋ฉด ์ข ํก๋น๋ฅผ ์ ์งํ๋ฉด์ ๋์ด๋ฅผ ์ ์ฐํ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
๋จผ์ , HTML๊ณผ CSS ์ฝ๋๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
<article class="cont-video">
<iframe
class="video-whiplash"
src="https://www.youtube.com/embed/jWQx2f-CErU"
title="YouTube video player"
frameborder="0"
allowfullscreen
></iframe>
</article>.cont-video {
position: relative;
padding-top: 56.25%; /* 16:9 ์ข
ํก๋น */
}
.video-whiplash {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}-
์ปจํ
์ด๋ ์ค์ (
.cont-video):-
position: relative;: ์์ ์์์ธ iframe์ ์์น๋ฅผ ์ ๋์ ์ผ๋ก ์ค์ ํ๊ธฐ ์ํด ์๋์ ์ธ ์์น ๊ธฐ์ค์ ์ ๊ณตํฉ๋๋ค. -
padding-top: 56.25%;: 16:9 ๋น์จ์ ์ ์งํ๊ธฐ ์ํด ํจ๋ฉ ํ์ 56.25%๋ก ์ค์ ํฉ๋๋ค. 9 รท 16 = 0.5625, 56.25%๋ฅผ ์๋ฏธํฉ๋๋ค.
-
-
๋น๋์ค ์์ ์ค์ (
.video-whiplash):-
position: absolute;: ๋ถ๋ชจ ์์์ธ.cont-video๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น๋ฅผ ์ ๋์ ์ผ๋ก ์ค์ ํฉ๋๋ค. -
top: 0; left: 0; right: 0; bottom: 0;: ๋ถ๋ชจ ์์์ ์ ์ฒด ์์ญ์ ์ฑ์ฐ๋๋ก ์ค์ ํฉ๋๋ค.
-
ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ์ดํดํ๋ ค๋ฉด **์ปจํ ์ด๋ ๋ธ๋ก(containing block)**์ ๊ฐ๋ ๊ณผ ์์์ ํฌ๊ธฐ๊ฐ ์ด๋ป๊ฒ ๊ฒฐ์ ๋๋์ง ์์์ผ ํฉ๋๋ค.

์ปจํ ์ด๋ ๋ธ๋ก์ CSS์์ ์์์ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค์ด ๋๋ ๋ถ๋ชจ ์์๋ฅผ ๋งํฉ๋๋ค. ์์ ์์๋ ํญ์ ์์ ์ ์ปจํ ์ด๋ ๋ธ๋ก์ ๊ธฐ์ค์ผ๋ก ์์น์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.

- ๋ฐฑ๋ถ์จ ๋จ์์ ํจ๋ฉ๊ณผ ๋ง์ง์ ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
- ๋ถ๋ชจ ์์์ ๋์ด๊ฐ ๋ช ์๋์ง ์์ ๊ฒฝ์ฐ, ์์ ์์์ ๋์ด๋ฅผ ๋ฐฑ๋ถ์จ๋ก ์ค์ ํ๋ฉด ๊ฐ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
- ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ํต์ฌ์ padding-top์ ๋ฐฑ๋ถ์จ ๊ฐ์ ์ฃผ์ด ๋ถ๋ชจ์ ๋๋น์ ๋น๋กํ ๋์ด๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ฒ์ ๋๋ค.
ํจ๋ฉ์ ์์ ๋ด๋ถ์ ์ฝํ
์ธ ์ฃผ์์ ์ถ๊ฐ๋๋ ๊ณต๊ฐ์
๋๋ค. padding-top์ ์ฝํ
์ธ ์ ์์ชฝ์ ๊ณต๊ฐ์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ํจ๋ฉ์ ๋ฐฑ๋ถ์จ ๊ฐ์ ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋๋ฉฐ, ์ด๋ ๋ฐ์ํ ๋์์ธ์ ๊ตฌํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
- ์ข ํก๋น ์ ์ง: ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์์๋ ๋น๋์ค์ ์ข ํก๋น๋ฅผ ์ ํํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค.
- ์ ์ฐํ ๋ ์ด์์: ๋ถ๋ชจ ์์์ ๋๋น์ ๋ฐ๋ผ ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ์กฐ์ ๋๋ฏ๋ก, ๋ฐ์ํ ๋์์ธ์ ์ต์ ํ๋์ด ์์ต๋๋ค.
- ๋ ๋๋ง ์ต์ ํ: ์ปจํ ์ด๋์ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ์ด์์์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ๋ฐ์ํ ๋น๋์ค๋ฟ๋ง ์๋๋ผ ์ด๋ฏธ์ง ๋ ๋๋ง์์๋ ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํด ํ์ฉ๋ฉ๋๋ค. ์๋ฒ์์ ์ด๋ฏธ์ง์ ๋๋น์ ๋์ด ๊ฐ์ ๋ฏธ๋ฆฌ ๋ฐ์์์ ๋น์จ์ ๊ณ์ฐํ ํ, ํด๋น ๋น์จ์ ์ฌ์ฉํ์ฌ ๋ ์ด์์์ ๋ฏธ๋ฆฌ ์ง์ ํจ์ผ๋ก์จ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ๋งค์ฐ ์ ์ฉํ์ง๋ง, ๋ช ๊ฐ์ง ํ๊ณ์ ๋ ์กด์ฌํฉ๋๋ค.
-
๋ณต์กํ ๋ ์ด์์ ๊ด๋ฆฌ: ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ์์ ์์๋ฅผ
position: absolute;๋ก ์ค์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์, ๋ณต์กํ ๋ ์ด์์์์๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. - ์ฌ๋ฌ ์์์์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ: ์ ๋ ์์น๋ฅผ ์ฌ์ฉํ๋ ์์๊ฐ ๋ง์์ง๋ฉด ์๊ธฐ์น ์์ ๋ ์ด์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
CSS์ aspect-ratio ์์ฑ์ ์์์ ์ข
ํก๋น๋ฅผ ๊ฐ๋จํ๊ฒ ์ค์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด ์์ฑ์ ์ฌ์ฉํ๋ฉด ํจ๋ฉ ํ ๊ธฐ๋ฒ ์์ด๋ ์ข
ํก๋น๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.

-
์์ ์์ div๊ฐ
inline์ด๋ฉด ํจ๋ฉ ํ์ด ์ ์ฉ๋์ง ์๋์?- ๋ค,
inline์์๋ ํจ๋ฉ ํ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.display: block;์ด๋display: inline-block;์ผ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
- ๋ค,
-
๋ง์ง ๊ฐ๋ ํผ์ผํธ๋ก ์ค ์ ์๋์?
- ๊ฐ๋ฅํฉ๋๋ค. ๋ง์ง์ ํผ์ผํธ ๊ฐ์ ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
-
๋ถ๋ชจ์ ๋์ด๊ฐ
px๋ก ์ ํด์ ธ ์์ด๋ ํจ๋ฉ์ ํผ์ผํธ ๊ธฐ์ค์ ๋ถ๋ชจ์ ๋๋น์ธ๊ฐ์?- ๋ค, ํจ๋ฉ์ ํผ์ผํธ ๊ฐ์ ํญ์ ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
-
๋ถ๋ชจ์ ๋์ด์ ๋๋น ๊ฐ์ด ์ ํด์ ธ ์์ง ์์ ๋ ํจ๋ฉ์ ๊ธฐ์ค์ ๋ฌด์์ธ๊ฐ์?
- ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ๋ถ๋ชจ์ ๋์ด๊ฐ ์ค์ ๋์ด ์์ง ์์๋ ํจ๋ฉ ํ์ ํผ์ผํธ๋ ๋ถ๋ชจ์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
-
์ ํจ๋ฉ ์์น์ ์์์ด ์ฐจ์งํ๊ณ ์๋์?
- ํจ๋ฉ ํ์ ์ค์ ํ๋ฉด ๋ถ๋ชจ ์์์ ๋์ด๊ฐ ํจ๋ฉ์ ์ํด ๋์ด๋๊ณ , ์์ ์์์ธ iframe์ด ๊ทธ ๊ณต๊ฐ์ ์ฑ์ฐ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์์์ด ํจ๋ฉ ์์ญ์ ์ฐจ์งํ๊ฒ ๋ฉ๋๋ค.
-
๋ง์ง๊ณผ ํจ๋ฉ์ ๋ชจ๋ ํผ์ผํธ๋ก ์ค ๋๋ ๋ถ๋ชจ์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ ๋๋์?
- ๋ค, ๋ง์ง๊ณผ ํจ๋ฉ์ ํผ์ผํธ ๊ฐ์ ๋ชจ๋ ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
ํจ๋ฉ ํ ๊ธฐ๋ฒ์ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด๋ฅผ ๊ตฌํํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๋ฐฉ๋ฒ์
๋๋ค. ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์ด๋ฅผ ์ค์ ํ์ฌ ์ข
ํก๋น๋ฅผ ์ ์งํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ค์ํ ๋๋ฐ์ด์ค์ ํ๋ฉด ํฌ๊ธฐ์์ ์ผ๊ด๋ ๋น๋์ค ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ํ, aspect-ratio ์์ฑ์ ํ์ฉํ๋ฉด ๋์ฑ ๊ฐ๋จํ๊ฒ ์ข
ํก๋น๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ:
- ๐ ์น ์์ผ์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ (feat. WS vs Socket.io)
- ๐คธโโ๏ธ ๋น์ ์ด ์ปดํฌ๋ํธ๋ก ๋ ๋๋ง ์ต์ ํ ํ๊ธฐ
- ๐ทโโ๏ธ Shared Worker๋ก ํด๋ผ์ด์ธํธ์ ์์ผ ํต์ ๊ฐ์ ํ๊ธฐ
- ๐จโ๐ฉโ๐งโ๐ฆ ๋ค์ค ํญ์์ ํ๋์ ์์ผ์ ๊ณต์ ํ ์ ์์๊น?
- ๐ [Socket.io] ํด๋ผ์ด์ธํธ์ ์ค์๊ฐ ์ฑํ ๊ตฌํ๊ธฐ
- ๐ฌ ์๋ฒ๋ฅผ docker swarm ์ผ๋ก ๊ด๋ฆฌํด๋ณด์
- ๐ฌ ์ปจํ ์ด๋๋ผ๋ฆฌ env ๊ณต์ ํ๊ธฐ
- ํ์ฅ์ฑ์ ๊ณ ๋ คํ ์๋ฒ ์ค๊ณ
- ncp ์๋ฒ ์ ํ
- ์ฑํ ์๋ฒ์ Redis ๋ฅผ ์ด ์ด์
- โ NestJS๋ฅผ ํตํ ์ผ๊ด์ ์ธ ์์คํ ์ค๊ณ
โ๏ธ ์ธ๋ถ์ ์ฌ์ฉ์๊ฐ Object Storage์ ์ ๊ทผํ์ง ๋ชปํ๋ ๊ถํ ์ ์ด- ๐ฆข nestjs์์ swagger ์ฌ์ฉํด๋ณด๊ธฐ
- ๐ NestJS Nginx Request Data Size ๋ฌธ์
- ๐ ๋ค์๋ณด๊ธฐ๋ฅผ ์ํ NodeโMediaโServer, FFMpeg ๋ถ์
- ๐ฆ ํจํค์ง ๋งค๋์ ๋ฐ ๋ชจ๋ ธ๋ ํฌ ์ ํ๊ธฐ
- ๐ฐ ์ปค์คํ ESLint ๋ง๋ค๊ธฐ
- ๐คบ ์ปค์คํ react ์ค๋ํซ ๋ง๋ค๊ธฐ
- ๐ธ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด ๊ตฌํ: ํจ๋ฉ ํ ๊ธฐ๋ฒ
- ๋ฆฌ์กํธ ํ ํผ ๋ฅ๋ค์ด๋ธ