A : CSS Box Model์ ์น ํ์ด์ง์ ๋ ์ด์์์ ๊ตฌ์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ๊ฐ HTML ์์๋ ๋ฐ์ค๋ก ์ทจ๊ธ๋๋ฉฐ, ๊ฐ ๋ฐ์ค๋ ์ฝํ ์ธ ์์ญ์ ๊ฐ์ธ๋ ์ฌ๋ฌ ๊ฐ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ๋ ์ด์ด๋ ์ฝํ ์ธ , ์์ชฝ ์ฌ๋ฐฑ, ํ ๋๋ฆฌ, ๋ฐ๊นฅ ์ชฝ ์ฌ๋ฐฑ์ผ๋ก ๋๋์ด์ ธ ์์ผ๋ฉฐ ๊ฐ๊ฐ์ ๋ ์ด์ด๋ ์์์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์
- ์ฝํ ์ธ ์์ญ (Content): ์์์ ์ค์ ๋ด์ฉ์ด ํ์๋๋ ์์ญ์ ๋๋ค.
- ํจ๋ฉ ์์ญ (Padding): ์ฝํ ์ธ ์ ํ ๋๋ฆฌ ์ฌ์ด์ ์ฌ๋ฐฑ ์์ญ์ ๋๋ค. ํจ๋ฉ์ ์์์ ๊ฐ์ผ๋ก ์ง์ ๋๋ฉฐ, ์ฝํ ์ธ ์ ํจ๋ฉ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์กฐ์ ํฉ๋๋ค.
- ํ ๋๋ฆฌ ์์ญ (Border): ํจ๋ฉ ์ฃผ์์ ์์นํ ํ ๋๋ฆฌ ์์ญ์ ๋๋ค. ํ ๋๋ฆฌ๋ ์ ์ ํํ๋ก, ๋๊ป, ์คํ์ผ ๋ฐ ์์์ ๊ฐ์ง ์ ์์ต๋๋ค.
- ์ฌ๋ฐฑ ์์ญ (Margin): ํ ๋๋ฆฌ์ ์ธ์ ํ ์์ ์ฌ์ด์ ๊ฐ๊ฒฉ ์์ญ์ ๋๋ค. ์ฌ๋ฐฑ์ ์์์ ๊ฐ์ผ๋ก ์ง์ ๋๋ฉฐ, ์์ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ๊ฒฐ์ ํฉ๋๋ค.
A : ๊ฐ์ด๋ฐ๋ฅผ ์์น์ํค๋ ๋ฐฉ๋ฒ์ ๋ค์ํ๊ฒ ์์ต๋๋ค.
์ฒซ๋ฒ์งธ, Flexbox๋ฅผ ์ด์ฉํ์ฌ align-items:center ๋ฐ justify-content:center์ผ๋ก ์์ง ๋ฐ ์ํ ์ค์ ์ ๋ ฌ์ ์์ผ์ค๋๋ค.
body {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
}
.login-form {
/* ๋ก๊ทธ์ธ ํผ ์คํ์ผ */
}
๋๋ฒ์งธ, Grid๋ฅผ ์ฌ์ฉํ์ฌ place-items:center ์ค์ ์ ๋ ฌ์ ์์ผ์ค๋๋ค.
body {
display: grid;
place-items: center;
height: 100vh;
margin: 0;
}
.login-form {
/* ๋ก๊ทธ์ธ ํผ ์คํ์ผ */
}
์ธ๋ฒ์งธ, postion ๋ฐ transform ์ฌ์ฉ
body {
position: relative;
height: 100vh;
margin: 0;
}
.login-form {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
/* ๋ก๊ทธ์ธ ํผ ์คํ์ผ */
}
A : styled-components๋ Javascriptํ์ผ ์์์ CSS ์คํ์ผ์ ์ ์ธํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก React ํ๋ก์ ํธ์์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ ์คํ์ผ์ ๋
๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ๋ก ์ ์ํ๊ธฐ ๋๋ฌธ์ ์คํ์ผ ๊ฐ์ ์ถฉ๋์ด๋ ๋ค์ด๋ฐ ๊ท์น์ ๋ํ ๊ฑฑ์ ์์ด ๋ชจ๋ํ๋ ์คํ์ผ๋ง์ ํ ์ ์๊ณ , ๋์ ์ผ๋ก ์คํ์ผ์ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ์ฌ React ์ปดํฌ๋ํธ๋ฅผ ๋ณด๋ค ์ ์ฐํ๊ฒ ์คํ์ผ๋งํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ ์ฝ๋๋ฒ ์ด์ค์ ๊ตฌ์กฐ๊ฐ ๋ ๋ช
ํํด์ ธ์ ์ ์ง๋ณด์๊ฐ ๋ ์ฉ์ดํฉ๋๋ค.
A : ์ผ๋ฐ์ ์ผ๋ก๋ em์ ํ ์คํธ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋, rem์ ๋ ์ด์์์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋ ์ฌ์ฉ๋๋ฉฐ, px๋ ๊ณ ์ ๋ ํฌ๊ธฐ๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ๋ฉ๋๋ค. rem์ ํนํ ๋ฃจํธ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ์ ์ฒด์ ์ธ ๋ ์ด์์์ ์ผ๊ด๋๊ฒ ์กฐ์ ํ๊ธฐ์ ์ ์ฉํฉ๋๋ค.