๐ค box-sizing
CSS ์์ฑ box-sizing์ ๊ณ์ฐ๋ ์์์ ์ ์ฒด ๋๋น์ ๋์ด๋ฅผ ์ ํ๋ ๊ฒ์ด๋ค.
child container์ ๋ณด์์ค
box-sizing: content-box;
width: 100%;
box-sizing: content-box;
width: 100%;
border: solid #5B6DCD 10px;
padding: 5px;
box-sizing: border-box;
width: 100%;
border: solid #5B6DCD 10px;
padding: 5px;
CSS box model์์ ๋๋น์ ๋์ด๋ ์์์ ์ฝํ ์ธ ์์์๋ง ์ ์ฉ๋๋ค.
์์์ border ( ํ ๋๋ฆฌ ) ๋ ์์ชฝ ์ฌ๋ฐฑ ( paddng )์ด ์์ผ๋ฉด ์ด๊ฒ์ด ๋๋น์ ๋์ด์ ์ถ๊ฐ๋์ด ํ๋ฉด์ ๋ฐ์ค ์ฌ์ด์ฆ๋ก ๋ ๋๋ง๋๋ค.
์ด๊ฒ์ ๋๋น์ ๋์ด๋ฅผ ์ค์ ํ ๋, ์ด๋ค border๋ padding์ด ์ถ๊ฐ๋๋ ํ์ฉ๋๊ฒ๋ ๊ฐ์ ์กฐ์ ํด์ผ ํ๋ค.
๋๋น 25%์ธ 4๊ฐ์ ๋ฐ์ค๋ค์ด ์๊ณ , ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ ์ฌ๋ฐฑ์ด๋ ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ ํ ๋๋ฆฌ๊ฐ ์๋ค๋ฉด ์ด ๋ฐ์ค๋ค์ ๋ถ๋ชจ ์ปจํ ์ด๋์ ์ ์ฝ ์กฐ๊ฑด ๋ด์์ ํ ์ค์ ๋ง์ง ์์ ๊ฒ์ด๋ค.
โ box-sizing ์์ฑ์ผ๋ก ํ ์ ์๋ ์ผ
โ content-box
- CSS ํ์ค์์ ์ง์ ํ ์ด๊ธฐ ๋ฐ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
- ๊ธฐ๋ณธ CSS ์์ ํฌ๊ธฐ ์กฐ์ ์ ํ๋ค.
- ์ฝํ ์ธ ๊ฐ ํฌํจ๋์ง๋ง border, padding์ ํฌํจ๋์ง ์๋๋ค.
.box {width: 350px; border: 10px solid black;} ๊ฒฐ๊ณผ๊ฐ์?
๋๋น๊ฐ 370px์ธ ์์๋ฅผ ๋ ๋๋งํ๋ค.
์์์ ํฌ๊ธฐ๋ ์๋์ ๊ฐ์ด ๊ณ์ฐ๋๋ค.
๋๋น = ์ฝํ ์ธ ์ ๋๋น ๋ฐ ๋์ด = ์ฝํ ์ธ ์ ๋์ด ( border, padding ์ ๊ณ์ฐ์ ํฌํจ๋์ง ์๋๋ค. )
์์์ ๋๋น๋ฅผ 100px๋ก ์ค์ ํ๋ค๋ฉด?
์์์ ๋๋น๋ฅผ 100px๋ก ์ค์ ํ๋ค๋ฉด?์์์ ์ฝํ ์ธ ์์์ ๋๋น๊ฐ 100px์ด ๋๊ณ , ํ ๋๋ฆฌ or ์์ชฝ ์ฌ๋ฐฑ์ ๋๋น๊ฐ ์ต์ข ๋ ๋๋ง ๋๋น์ ์ถ๊ฐ๋์ด ๊ฒฐ๊ตญ ์์๋ 100px๋ณด๋ค ๋์ด์ง๋ค.
โ border-box
- ์์์ ๋๋น์ ๋์ด์ ๋ํด ์ง์ ํ ๊ฐ์ ํ ๋๋ฆฌ์ ์์ชฝ ์ฌ๋ฐฑ์ ๊ณ ๋ คํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์ง์ํ๋ค.
- ๋๋น์ ๋์ด์ ์ฝํ ์ธ , padding, border ์ด ํฌํจ๋์ง๋ง margin์ ํฌํจ๋์ง ์๋๋ค.
350px; border: 10px solid black;} ๊ฒฐ๊ณผ๊ฐ์?
๋๋น๊ฐ 350px์ด๊ณ ์ฝํ ์ธ ์์ญ์ ๋๋น๊ฐ 330px์ธ ์์๋ฅผ ๋ ๋๋งํ๋ค.
border-box ์ฝํ ์ธ ์์๋ ์์์ผ ์ ์์ผ๋ฉฐ ๋ฐ๋ฅ์ด 0์ด๋ฏ๋ก ์์๋ฅผ ์ฌ๋ผ์ง๊ฒ ํ ์ ์๋ค.
์์์ ํฌ๊ธฐ๋ ์๋์ ๊ฐ์ด ๊ณ์ฐ๋๋ค.
๋๋น = border + padding + ์ฝ์ฒธ์ธ ๋๋น ๋ฐ ๋์ด = border + padding + ์ฝํ ์ธ ๋์ด
์์์ ๋๋น๋ฅผ 100px๋ก ์ค์ ํ๋ค๋ฉด?
์ด 100px ๋๋น์๋ ์ด๋ค ํ ๋๋ฆฌ or ์์ชฝ ์ฌ๋ฐฑ์ ์ถ๊ฐํด๋ 100px ๋๋น ์์ ํฌํจ๋ ๊ฒ์ด๋ค
๊ทธ๋ฆฌ๊ณ ์ฝํ ์ธ ์์๋ ์ถ๊ฐ ๋๋น๋ฅผ ํก์ํ๊ธฐ ์ํด ์ถ์๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์์์ ํฌ๊ธฐ๋ฅผ ์ฝ๊ฒ ์ง์ ํ ์ ์๋ค.
box-sizing, border-box๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉํ๋ <table>, <select>, <button> ์์๋ค / radio, checkbox, reser, button, submit, color, search ์์๋ค์ ๊ธฐ๋ณธ ์คํ์ผ์ด๋ค.
โ content-box VS border-box
box-sizing์ผ๋ก ์์๋ฅผ ๋ฐฐ์นํ๋ ค๋ฉด borer-box๋ก ์์๋ฅผ ๋ฐฐ์นํ๋ ๊ฒ์ด ์ ์ฉํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค
์?
- ์์์ ์ฌ์ด์ฆ๋ฅผ ๋ ์ฝ๊ฒ ์กฐ์ ํ ์ ์๋ค.
- ์ฝํ ์ธ ๋ฅผ ๋ฐฐ์นํ๋ ๋์ ๊ฑธ๋ฆฌ๋ ์ฌ๋ฌ ํจ์ ์ด ์ ๊ฑฐ๋๋ค.
๋ฐ๋ฉด์
position : relative ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ position : absolute๋ฅผ ์ฌ์ฉํ ๋ box-sizing : content-box๋ฅผ ์ฌ์ฉํ๋ฉด ์ด content-box๋ ์ฝํ ์ธ ์ ์ฐ๊ด๋ ํฌ์ง์ ๊ฐ ( positioning values )์ด ์๋์ ์ด ๋๊ณ , ํ ๋๋ฆฌ์ ์์ชฝ ์ฌ๋ฐฑ ์ฌ์ด์ฆ์ ๋ณ๊ฒฝ๊ณผ ๋ฌด๊ดํ๊ฒ ๋๋ค.
์ด๊ฒ์ ์ข ์ข ์ ์ฉํ๋ค.