Box Model

1. κ°œμš”

μ›Ή λ¬Έμ„œμ˜ 블둝 레벨 μš”μ†ŒλŠ” λͺ¨λ‘ Box ν˜•νƒœμ˜ μ˜μ—­μ„ κ°€μ§€κ³  있음. μŠ€νƒ€μΌ μ‹œνŠΈμ—μ„œ μ΄λ ‡κ²Œ Box ν˜•νƒœμΈ μš”μ†Œλ₯Ό λ°•μŠ€ λͺ¨λΈ μš”μ†ŒλΌκ³  함. 이 BoxλŠ” μ½˜ν…μΈ (Content), νŒ¨νŒ…(Padding), ν…Œλ‘λ¦¬(Border), λ§ˆμ§„(Margin)둜 ꡬ성됨.

Box Model

Box Model의 μ΄ν•΄λŠ” μ•„λž˜μ˜ 4κ°€μ§€ λͺ…칭을 μ΄ν•΄ν•˜λŠ”λ°μ„œ λΆ€ν„° μ‹œμž‘ν•œλ‹€.

λͺ…μΉ­
μ„€λͺ…

Content

μš”μ†Œμ˜ ν…μŠ€νŠΈλ‚˜ 이미지 λ“±μ˜ μ‹€μ œ λ‚΄μš©μ΄ μœ„μΉ˜ν•˜λŠ” μ˜μ—­, width, height ν”„λ‘œνΌν‹°λ₯Ό κ°–λŠ”λ‹€.

Padding

ν…Œλ‘λ¦¬(Border) μ•ˆμͺ½μ— μœ„μΉ˜ν•˜λŠ” μš”μ†Œμ˜ λ‚΄λΆ€ μ˜μ—­μ˜ μ—¬λ°±, padding ν”„λ‘œνΌν‹° 값은 νŒ¨λ”© μ˜μ—­μ˜ 두깨λ₯Ό μ˜λ―Έν•˜λ©° 기본색은 투λͺ…(transparent), μš”μ†Œμ— 적용된 배경의 컬러, μ΄λ―Έμ§€λŠ” νŒ¨λ”© μ˜μ—­κΉŒμ§€ 적용

Border

ν…Œλ‘λ¦¬ μ˜μ—­μœΌλ‘œ border ν”„λ‘œνΌν‹° 값은 ν…Œλ‘λ¦¬μ˜ λ‘κ»˜λ₯Ό 의미

Margin

ν…Œλ‘λ¦¬(Border) λ°”κΉ₯에 μœ„μΉ˜ν•˜λŠ” μš”μ†Œμ˜ μ™ΈλΆ€ μ—¬λ°± μ˜μ—­, margin ν”„λ‘œνΌν‹° 값은 λ§ˆμ§„ μ˜μ—­μ˜ λ‘κ»˜λ₯Ό 의미, 기본적으둜 투λͺ…(transparent)ν•˜λ©° 배경색을 μ§€μ •ν•  수 μ—†μŒ

content, padding, border, margin
styled

μ›Ήλ””μžμΈμ€ μ½˜ν…μΈ λ₯Ό 담을 λ°•μŠ€ λͺ¨λΈμ„ μ •μ˜ν•˜κ³  CSS ν”„λ‘œνΌν‹°λ₯Ό 톡해 μŠ€νƒ€μΌ(λ°°κ²½, ν°νŠΈμ™€ ν…μŠ€νŠΈ λ“±)κ³Ό μœ„μΉ˜ 및 정렬을 μ§€μ •ν•˜λŠ” 것


2. width / height ν”„λ‘œνΌν‹°

λ°•μŠ€ λͺ¨λΈμ—μ„œ μ½˜ν…μΈ  μ˜μ—­μ˜ 크기λ₯Ό μ§€μ •ν•  λ•Œ λ„ˆλΉ„λŠ” width, λ†’μ΄λŠ” height ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•¨, μ½˜ν…μΈ μ˜ μ˜μ—­μ„ λŒ€μƒμ„ ν•˜λŠ” μ΄μœ λŠ” box-sizing ν”„λ‘œνΌν‹°μ— 기본값인 content-boxκ°€ μ μš©λ˜μ—ˆκΈ° λ•Œλ¬Έ, box-sizing ν”„λ‘œνΌν‹°μ— border-boxλ₯Ό μ μš©ν•˜λ©΄ μ½˜ν…μΈ  μ˜μ—­, padding, borderκ°€ ν¬ν•¨λœ μ˜μ—­μ„ width / height ν”„λ‘œνΌν‹°μ˜ λŒ€μƒμœΌλ‘œ μ§€μ •ν•  수 있음.

width와 height의 속성값

μ’…λ₯˜
μ„€λͺ…

<크기>

λ„ˆλΉ„κ°€ λ†’μ΄μ˜ 값을 pxμ΄λ‚˜ em λ‹¨μœ„λ‘œ μ§€μ •

<λ°±λΆ„μœ¨>

λ°•μŠ€ λͺ¨λΈμ„ ν¬ν•¨ν•˜λŠ” λΆ€λͺ¨ μš”μ†Œλ₯Ό κΈ°μ€€μœΌλ‘œ λ„ˆλΉ—κ°’μ΄λ‚˜ λ†’μž‡κ°’μ„ λ°±λΆ„μœ¨(%)둜 μ§€μ •

auto

λ°•μŠ€ λͺ¨λΈμ˜ λ„ˆλΉ—κ°’κ³Ό λ†’μž‡κ°’μ΄ μ½˜ν…μΈ μ˜ 양에 따라 μžλ™μœΌλ‘œ κ²°μ •, κΈ°λ³Έκ°’

만일 width와 height둜 μ§€μ •ν•œ μ½˜ν…μΈ  μ˜μ—­λ³΄λ‹€ μ‹€μ œ μ½˜ν…μΈ κ°€ 크면 μ½˜ν…μΈ  μ˜μ—­μ„ λ„˜μΉ˜κ²Œ λœλ‹€. overflow:hidden;을 μ§€μ •ν•˜λ©΄ λ„˜μΉœ μ½˜ν…μΈ λ₯Ό 감좜 수 μžˆλ‹€.

width와 height ν”„λ‘œνΌν‹°λ₯Ό λΉ„λ‘―ν•œ λͺ¨λ“  λ°•μŠ€λͺ¨λΈ κ΄€λ ¨ ν”„λ‘œνΌν‹°(margin, padding, border, box-sizing λ“±)λŠ” μƒμ†λ˜μ§€ μ•ŠλŠ”λ‹€.


3. margin / padding ν”„λ‘œνΌν‹°

λ°•μŠ€ λͺ¨λΈμ€ μƒν•˜μ’Œμš° 4개의 λ°©ν–₯이 μžˆμ–΄μ„œ ν…Œλ‘λ¦¬λ‚˜ λ§ˆμ§„, νŒ¨λ”© 등을 μ§€μ •ν•  λ•Œ ν•œκΊΌλ²ˆμ— λ˜‘κ°™μ΄ μ§€μ •ν•˜κ±°λ‚˜, λͺ¨λ‘ λ‹€λ₯΄κ²Œ μ§€μ •ν•  수 있음.

margin / padding

margin, padding은 -top, -right, -bottom, -left 4λ°©ν–₯의 ν”„λ‘œνΌν‹°λ₯Ό κ°κ°μ§€μ •ν•˜μ§€ μ•Šκ³  ν•œ λ²ˆμ— μ§€μ •ν•  수 있음.

  • 4개의 값을 μ§€μ •ν•  λ•Œ - margin: 25px 50px 75px 100px;

    • μˆœμ„œλŒ€λ‘œ top, right, bottom, left

  • 3개의 값을 μ§€μ •ν•  λ•Œ - margin: 25px 50px 75px;

    • μˆœμ„œλŒ€λ‘œ top, right/left, bottom

  • 2개의 값을 μ§€μ •ν•  λ•Œ - margin: 25px 50px;

    • μˆœμ„œλŒ€λ‘œ top/bottom, right/left

  • 1개의 값을 μ§€μ •ν•  λ•Œ - margin: 25px;

    • top/bottom/right/leftλ₯Ό λͺ¨λ‘ 같은 κ°’μœΌλ‘œ μ§€μ •

4. border ν”„λ‘œνΌν‹°


4-1. border-style

border-style ν”„λ‘œνΌν‹°λŠ” ν…Œλ‘λ¦¬μ˜ μ„ μ˜ μŠ€νƒ€μΌμ„ μ§€μ •, border-style4-1 border-style ν”„λ‘œνΌν‹°μ˜ 기본값은 noneμ΄λ―€λ‘œ 속성값을 λ”°λ‘œ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ ν…Œλ‘λ¦¬ μƒ‰μƒμ΄λ‚˜ λ‘κ»˜λ₯Ό μ§€μ •ν•˜λ”λ„ 화면에 ν‘œμ‹œλ˜μ§€ μ•ŠμŒ.

MDN: border-style

border-style

4-2. border-width

border-width ν”„λ‘œνΌν‹°λŠ” ν…Œλ‘λ¦¬μ˜ λ‘κ»˜λ₯Ό μ§€μ •, ν”„λ‘œνΌν‹° κ°’μ˜ κ°―μˆ˜μ— 따라 4개 λ°©ν–₯(top, right, left, bottom)에 λŒ€ν•˜μ—¬ 지정이 κ°€λŠ₯(margin, paddingκ³Ό κ°™μŒ)

MDN:border-width

border-width

4-3. border-color

border-color ν”„λ‘œνΌν‹°λŠ” ν…Œλ‘λ¦¬μ˜ 색상을 μ§€μ •, ν”„λ‘œνΌν‹° κ°’μ˜ κ°―μˆ˜μ— 따라 4개 λ°©ν–₯(top, right, left, bottom)에 λŒ€ν•˜μ—¬ 지정이 κ°€λŠ₯(margin, paddingκ³Ό κ°™μŒ)

MDN: border-color

border-color

4-4. border-radius

border-radius ν”„λ‘œνΌν‹°λŠ” ν…Œλ‘λ¦¬ λͺ¨μ„œλ¦¬λ₯Ό λ‘₯κΈ€κ²Œ ν‘œν˜„ν•˜λ„λ‘ μ§€μ •, ν”„λ‘œνΌν‹° 값은 길이λ₯Ό λ‚˜νƒ€λ‚΄λŠ λ‹¨μœ„(px, emλ“±)κ³Ό %λ₯Ό μ‚¬μš©, 각각의 λͺ¨μ„œλ¦¬μ— border-radius ν”„λ‘œνΌν‹°λ₯Ό κ°œλ³„μ μœΌλ‘œ μ§€μ •ν•  μˆ˜λ„ 있고 4개의 λͺ¨μ„œλ¦¬λ₯Ό short-hand둜 ν•œλ²ˆμ— μ§€μ • ν•  μˆ˜λ„ 있음

κΈ°λ³Έν˜• border-radius: <크기> | <λ°±λΆ„μœ¨>

MDN: border-radius

border-radius

λ‘κ°œμ˜ λ°˜μ§€λ¦„μ„ μ§€μ •ν•˜μ—¬ νƒ€μ›ν˜• λ‘₯κ·Ό λͺ¨μ„œλ¦¬ μ„€μ •ν•˜κΈ°

border-radius ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•΄μ„œ 꼭짓점을 타원 ν˜•νƒœλ‘œ λ§Œλ“€ 수 μžˆλ‹€. ν•˜λ‚˜μ˜ κ°’(λ°˜μ§€λ¦„) λŒ€μ‹  νƒ€μ›μ˜ κ°€λ‘œ λ°˜μ§€λ¦„κ°’κ³Ό μ„Έλ‘œ λ°˜μ§€λ¦„κ°’μ„ /λ₯Ό 톡해 κ΅¬λΆ„ν•˜μ—¬ λ„£λŠ”λ‹€. κΈ°λ³Έν˜• border-radius: <κ°€λ‘œ λ°˜μ§€λ¦„> / <μ„Έλ‘œ λ°˜μ§€λ¦„> κΈ°λ³Έν˜• border-μœ„μΉ˜-radius: <κ°€λ‘œ λ°˜μ§€λ¦„> / <μ„Έλ‘œ λ°˜μ§€λ¦„>

border-radius2

4-5. border

border ν”„λ‘œνΌν‹°λŠ” border-width, border-style, border-colorλ₯Ό ν•œλ²ˆμ— μ„€μ •ν•˜κΈ° μœ„ν•œ shorthand ν”„λ‘œνΌν‹°μ΄λ‹€.

MDN: Border Shorthand

κΈ°λ³Έν˜• border: border-width border-style border-color

border shorthand

5. box-sizing ν”„λ‘œνΌν‹°

box-sizing ν”„λ‘œνΌν‹°λŠ” width, height ν”„λ‘œνΌν‹°μ˜ λŒ€μƒ μ˜μ—­μ„ λ³€κ²½ν•œλ‹€.

ν‚€μ›Œλ“œ
μ„€λͺ…

content-box

width, height ν”„λ‘œνΌν‹° 값은 content μ˜μ—­μ„ 의미(κΈ°λ³Έκ°’)

border-box

width, height ν”„λ‘œνΌν‹° 값은 content μ˜μ—­, padding, borderκ°€ ν¬ν•¨λœ 값을 의미, CSS Layout을 μ§κ΄€μ μœΌλ‘œ μ‚¬μš©

box-sizing
box-sizing2

box-sizing ν”„λ‘œνΌν‹°λŠ” μƒμ†λ˜μ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ box-sizing ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ΄ˆκΈ°ν™”ν•˜λ €λ©΄ μ•„λž˜μ™€ 같이 μ •μ˜ν•œλ‹€.


6. Conclusion

margin, padding, borderλŠ” 정말 μ›Ήλ””μžμΈμ„ ν•  λ•Œ flex, grid보닀 더 많이 μ‚¬μš©μ„ ν•˜λŠ” ν”„λ‘œνΌν‹°λΌκ³  μƒκ°ν•œλ‹€. κ·Έ 만큼 많이 μ‚¬μš©ν–ˆμœΌλ‹ˆ ν•΄λ‹Ή λ‚΄μš©μ— λŒ€ν•΄ μ΅μˆ™ν•΄μ‘Œμ§€λ§Œ 이번 챕터λ₯Ό μ •λ¦¬ν•˜λ©΄μ„œ λͺ°λžλ˜ 뢀뢄도 많이 μ•Œκ²Œ λ˜μ—ˆλ‹€. μ§€κΈˆκΉŒμ§€ border-radius: top-left top-right bottom-right bottom-leftλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  일일히 ν•˜λ‚˜ν•˜λ‚˜ 값듀을 μ§€μ •ν–ˆλ‹€. μ•žμœΌλ‘œλŠ” ν•œ μ€„λ‘œ ν‘œν˜„ν•˜λŠ” λ°©λ²•μœΌλ‘œ μ‚¬μš©μ„ ν•΄μ•Όκ² λ‹€. λ˜ν•œ νƒ€μ›ν˜•μœΌλ‘œ λ§Œλ“œλŠ” 방법에 λŒ€ν•΄μ„œλ„ μ΄λ²ˆμ— μƒˆλ‘­κ²Œ μ•Œκ²Œ λ˜μ—ˆλ‹€. xμ’Œν‘œ, yμ’Œν‘œμ— 각각 λ‹€λ₯Έ λ°˜μ§€λ¦„μ„ μ£Όμ–΄ νƒ€μ›ν˜•μœΌλ‘œ λ§Œλ“œλŠ” λ°©λ²•μœΌλ‘œ 더 λ©‹μ§„ μ›Ήλ””μžμΈμ„ ν•  수 μžˆλ„λ‘ ν•˜μž. box-sizingκ°œλ…μ— λŒ€ν•΄μ„œλŠ” μ§€κΈˆκΉŒμ§€λŠ” λ­”κ°€ λ°•μŠ€κ°€ μ΄μƒν•œλ°? ν•˜λ©΄μ„œ μ•„λ¬΄λŸ° 생각없이 box-sizing: border-boxμ‚¬μš©ν•΄μ™”λ‹€. ν•˜μ§€λ§Œ κ°œλ…μ— λŒ€ν•΄μ„œ μ •ν™•νžˆ νŒŒμ•…μ„ ν•˜λ‹ˆ 속이 μ‹œμ›ν•œ 기뢄이 λ“€κ³  λˆ„κ΅°κ°€μ—κ²Œ λ°•μŠ€ λͺ¨λΈμ— λŒ€ν•΄ μ„€λͺ…ν•  λ•Œ ν•œμΈ΅ 더 μžμ‹ κ°μžˆκ²Œ λŒ€λ‹΅ν•  수 μžˆμ„κ±° κ°™λ‹€.😊 μ‚¬μš©ν•˜λŠ” css만 계속 μ‚¬μš©ν•˜λŠ” 것보닀 λ§Žμ€ 것듀을 배우고 ν•˜λ‚˜μ”© μ μš©ν•΄λ³΄λ©΄μ„œ κ³΅λΆ€ν•˜μž


μ°Έκ³ 

poiemaweb 2-4 λ°•μŠ€ λͺ¨λΈ λ„μ„œ - HTML + CSS + μžλ°”μŠ€ν¬λ¦½νŠΈ μ›Ή ν‘œμ€€μ˜ 정석


πŸ‘†

πŸ“… 2022-07-12

Last updated