ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿค” 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 MDN๋ฌธ์„œ

 

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 MDN ๋ฌธ์„œ

 

:after์™€ :before๋Š” CSS2๊นŒ์ง€์˜ ํ‘œ๊ธฐ๋ฐฉ๋ฒ•์ด๊ณ , CSS3๋ถ€ํ„ฐ๋Š” ๊ฐ€์ƒ ์„ ํƒ์ž์™€ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ฝœ๋ก ์„ ํ•˜๋‚˜ ๋” ๋ถ™์—ฌ์„œ 

::after์™€ ::before๋กœ ํ‘œ๊ธฐํ•œ๋‹ค๊ณ ํ•œ๋‹ค.

 

๋ชจ๋“  HTML์š”์†Œ, ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์š”์†Œ์˜ ์•ž ๋’ค์— ๋ถ™๋Š” ๊ฐ€์ƒ ์„ ํƒ์ž๋„ ์ „๋ถ€ box-sizing: inherit์†์„ฑ์„ ์ •์˜ํ•ด์ฃผ๋Š”๊ฒƒ์ธ๋ฐ, ์™œ ๊ตณ์ด ์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ์†์„ฑ์„ ์ •์˜ํ•ด์ค€๊ฒƒ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. *๋งŒ ์จ๋„ ์–ด์ฐจํ”ผ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ ๊ตณ์ด ๊ฐ€์ƒ ์„ ํƒ์ž๋„ ๋”ฐ๋กœ ์ง€์ •/์ •์˜๋ฅผ ํ•œ ๊ฒƒ์ผ๊นŒ? reset.css์ฒ˜๋Ÿผ ๋ฐฉ์–ด์ฝ”๋“œ๋ฅผ ์งœ๋Š”๊ฒƒ์ผ๊นŒ?

 

๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ *๋Š” ๊ฐ€์ƒ ์„ ํƒ์ž์—๋Š” ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ผ์ข…์˜ ๋ฐฉ์–ด์ฝ”๋“œ๋ผ๊ณ  ๋ณด๋ฉด ๋˜๊ฒ ๋‹ค.

stackoverflow QnA ์ฐธ์กฐ

 

โ˜โ˜โ˜ 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;
  }
 

flex MDN ์ฐธ๊ณ 

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๊ฐ’์ด ์ ์šฉ๋œ๋‹ค.

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€