ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ค CSS ๋ ์ดํด๋ณด๊ธฐ ๐ค
์ด๋ฆ์ 30 JavaScript์ง๋ง ์ดํด๋ณด๋ฉด CSS๋ ๊ฝค๋ ํ์ฉํ๊ณ ์๋ ์ฑ๋ฆฐ์ง์ด๋ฏ๋ก CSS๋ ๋ฏ์ด๋ณด๊ณ ๊ฐ๋๋ก ํ์.
โ box-sizing
1
2
3
4
5
6
7
|
html {
box-sizing: border-box;
background: #ffc600;
font-family: 'helvetica neue';
font-size: 20px;
font-weight: 200;
}
Colored by Color Scripter
|
box-sizing์์ฑ์ ํด๋น ์์์ ํฌ๊ธฐ ์ค์ ์ ๊ธฐ์ค์ ์ ํ๋ ์์ฑ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๊ฒ ๋ค.
box-sizing syntax
- content-box : content๋ง์ ๊ธฐ์ค์ผ๋ก ์ผ๋๋ค.
- border-box : content + padding + border๊น์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ๋๋ค.
- initial : default๊ฐ์ผ๋ก ์ค์ ํ๋ค. box-sizing์ ๋ํดํธ๊ฐ์ content-box๋ค.
- inherit : ๋ถ๋ชจ์์์ ์์ฑ์ ์์๋ฐ๋๋ค.
content-box์ border-box์ ์์ ๋ฅผ ๋ณด์.
1
2
3
4
5
|
.bc {
width : 100px;
border : 10px solid black;
padding : 10px;
}
|
์์ ๊ฐ์ ์กฐ๊ฑด์ .bc๋ผ๋ ํด๋์ค๋ฅผ ๊ฐ์ง div๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
border-box์ ๊ฒฝ์ฐ
.bc div๋ border, padding์ ๋๊ป๋ฅผ ํฌํจํด์ 100px๊ฐ ๋๋๋ก content์ width๋ ์กฐ์ ๋๋ค.
๋ฐ๋ผ์ .bc์ content์ width๋ 60px๋ฐ์ ๋์ง์๋๋ค.
content-box์ ๊ฒฝ์ฐ
.bc div๋ border, padding์ ๋ฌด์ํ๊ณ ์ค๋ก์ง content์ ํฌ๊ธฐ๊ฐ 100px์ด ๋๋๋ก ์กฐ์ ๋๋ค.
๋ฐ๋ผ์ .bc์ ์ ์ฒด width๋ 140px์ด ๋ ๊ฒ์ด๋ค.
โโ :before / :after
13
14
15
|
*, *:before, *:after {
box-sizing: inherit;
}
|
:after์ :before๋ CSS2๊น์ง์ ํ๊ธฐ๋ฐฉ๋ฒ์ด๊ณ , CSS3๋ถํฐ๋ ๊ฐ์ ์ ํ์์ ๊ตฌ๋ณํ๊ธฐ ์ํด ์ฝ๋ก ์ ํ๋ ๋ ๋ถ์ฌ์
::after์ ::before๋ก ํ๊ธฐํ๋ค๊ณ ํ๋ค.
๋ชจ๋ HTML์์, ๊ทธ๋ฆฌ๊ณ ํด๋น ์์์ ์ ๋ค์ ๋ถ๋ ๊ฐ์ ์ ํ์๋ ์ ๋ถ box-sizing: inherit์์ฑ์ ์ ์ํด์ฃผ๋๊ฒ์ธ๋ฐ, ์ ๊ตณ์ด ์ด๋ ๊ฒ ๊น์ง ์์ฑ์ ์ ์ํด์ค๊ฒ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. *๋ง ์จ๋ ์ด์ฐจํผ ๋ชจ๋ ์์๋ฅผ ์ง์ ํ ์ ์๋๋ฐ ์ ๊ตณ์ด ๊ฐ์ ์ ํ์๋ ๋ฐ๋ก ์ง์ /์ ์๋ฅผ ํ ๊ฒ์ผ๊น? reset.css์ฒ๋ผ ๋ฐฉ์ด์ฝ๋๋ฅผ ์ง๋๊ฒ์ผ๊น?
๊ฒ์ํด๋ณด๋ *๋ ๊ฐ์ ์ ํ์์๋ ์ํฅ์ ๋ผ์น์ง ๋ชปํ๋ค๊ณ ํ๋ค. ์ฌ๊ธฐ์๋ ์ผ์ข ์ ๋ฐฉ์ด์ฝ๋๋ผ๊ณ ๋ณด๋ฉด ๋๊ฒ ๋ค.
โโโ flexbox
52
53
54
55
56
57
58
59
60
89
90
91
92
|
.panel > * {
margin: 0;
width: 100%;
transition: transform 0.5s;
flex: 1 0 auto;
display: flex;
justify-content: center;
align-items: center;
}
flex: 5;
font-size: 40px;
}
|
display: flex์ชฝ์ด ์๋ flex: 1 0 auto; ์ชฝ์ ์์๋ณด์. ํ์ง๋ง ์ ์ ์กฐ๊ฑด์ด ํ๋ ์๋ค. ๋ถ๋ชจ์์์ display: flex;๊ฐ ์ ์ธ๋ผ์์ด์ผ๋ง flex ์์ฑ์ ์ฌ์ฉํ ์ ์๋ค.
flex ์์ฑ์ ๋ชฉ์ ์ ํ๋ ์ค ์์ดํ ์ด ํด๋น ์์ดํ ์ ์ปจํ ์ด๋์ ๋ง์ถ๊ธฐ ์ํด ํฌ๊ธฐ๋ฅผ ํค์ฐ๊ฑฐ๋ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์ค์ ํ๋ ์์ฑ์ด๋ค.
flex ์์ฑ์ ๊ตฌ๋ฌธ ์ฉ๋ฒ์ ์ฐธ ๋ค์ํ๋ฐ,
flex : flex-grow | flex-shrink | flex-basis ์์ผ๋ก ๋์ด์ฐ๊ธฐ๋ก ๊ตฌ๋ถํด์ ๊ฐ๊ฐ์ ์์ฑ์ ์ ์ํ ์ ์๋ค.
์ฌ๊ธฐ์ ๊ฐ์ ํ๋๋ง ์ธ ์๋, ๋ ๊ฐ ํน์ ์ธ ๊ฐ๋ฅผ ์ธ ์๋ ์๋ค.
๐งํ ๊ฐ๋ง ์ธ ๊ฒฝ์ฐ
flex : 1 == flex-grow : 1
flex : 10px == flex-basis : 10px
flex : 10% == flex-basis : 10%
flex : initial == flex : 0 1 auto
flex : none == flex : 0 0 auto
flex : auto == flex : 1 1 auto
๐ ๋ ๊ฐ๋ง ์ธ ๊ฒฝ์ฐ
flex : 1 1 == flex-grow : 1, flex-shrink : 1
flex : 1 10px == flex-grow : 1, flex-basis : 10px
flex : 1 10% == flex-grow : 1, flex-basis : 10%
flex : 1 auto == flex-grow : 1, flex-basis : auto
๐ช ์ธ ๊ฐ๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ
์์ ๊ตฌ๋ฌธ ์ฉ๋ฒ๊ณผ ๊ฐ์ ํ์์ด๋ฉฐ, ์์๋ ๋ฐ๋์ ์ง์ผ์ผํ๋ค.
๐ flex-grow | flex-shrink | flex-basis ๋?
flex์ ๊ตฌ๋ฌธ ์ฉ๋ฒ์ ์์์ผ๋ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ ๋ํด ๊ฐ๋จํ๊ฒ ์์๋ณด๋๋ก ํ์.
๐ฑ flex-grow
์์ 30 JavaScript Day5 ์ฑ๋ฆฐ์ง ๋ถ์์์๋ ๋งํ๋ฏ์ด ์ด ์์ฑ์ ํด๋น flex-item์ด flex-container๋ด์์ ์ฐจ์งํ ์ ์๋ ๊ณต๊ฐ์ ์ ๋๋ฅผ ์ ์ธํ๋ ์์ฑ์ด๋ค.
ํ์ ์์๊ฐ์ flex-grow์ ๋น๋ก์์ฒ๋ผ ๊ณต๊ฐ์ ๋๋ ๊ฐ์ง๋ค๊ณ ๋ณด๋ฉด ๋๊ฒ ๋ค.
์๋ฅผ ๋ค์ด width๊ฐ 1000px์ธ ์ปจํ ์ด๋ ์์ item1 : item2 : item3 = 2 : 1 : 1 ๊ณผ๊ฐ์ด ๊ฐ ์์ดํ ์ flex-grow๊ฐ์ด ์ ์ธ๋์ด์๋ค๋ฉด, item1์ 1000px์ 4๋ก๋๋ ๊ฐ์ 2๋ฅผ ๊ณฑํ 500px, item2์ 3์ ๊ฐ๊ฐ 250px์ฉ ์ฐจ์งํ๊ฒ ๋๋ ์์ด๋ค.
๐ด flex-shrink
flex-item์์์ ํฌ๊ธฐ๊ฐ flex-container ์์์ ํฌ๊ธฐ๋ณด๋ค ํด ๋ flex-shrink์์ฑ์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ ๋ฐ์ผ๋ก ๋๊ฐ์ง ์๋๋ก ํด์ฃผ๋ ์์ฑ.
flex-shrink๋ flex-grow์ ๋ฐ๋๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋๋ฐ, ์ด ์์ฑ์ ํฌ๊ธฐ ๊ณ์ฐ์์ด grow๋ณด๋ค ๋ณต์กํ๋ค.
flex-shrink๋ ๋ณดํต 0 ํน์ 1๋ก ์ ์ธํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๊ณ ํ๋๋ฐ, ๊ทธ ์ธ์ ๊ฒฝ์ฐ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด ์ด ๋งํฌ์์ ํ์ธํ ์ ์๋ค.
๐งฑ flex-basis
flex-item์ ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ์์ฑ. box-sizing์ ๋ฐ๋ก ์ง์ ํ์ง ์์ผ๋ฉด item์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝ.
์ด ์์ฑ๊ฐ์ด auto๊ฐ ์๋๊ฒฝ์ฐ width ์ ์ธ์ด ๋ ๋ฐ์ ์๋๋ผ๋ ๋ฌด์กฐ๊ฑด basis๊ฐ์ด ์ ์ฉ๋๋ค.