λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CSS

[CSS] λ ˆμ΄μ•„μ›ƒ 배치 μœ ν˜• 3가지 μ•Œμ•„λ³΄κΈ°

by 코딩곡책 2022. 7. 25.
λ°˜μ‘ν˜•

λ ˆμ΄μ•„μ›ƒ(Layout)

웹을 κ΅¬μ„±ν•˜λŠ” μš”μ†Œλ“€μ„ 보닀 μ•Œμ•„λ³΄κΈ° μ‰½κ²Œ 효과적으둜 λ°°μΉ˜μ‹œμΌœμ£ΌλŠ” μž‘μ—…μž…λ‹ˆλ‹€.


λ ˆμ΄μ•„μ›ƒμ˜ 3가지 μœ ν˜•

λ ˆμ΄μ•„μ›ƒμ—λŠ” Float, Flex, GridλΌλŠ” 총 3가지 μœ ν˜•(방법)이 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš© 방법은 μ•„λž˜μ™€ κ°™μœΌλ©° 1번의 경우 μ •λ ¬ν•˜κ³ μž ν•˜λŠ” μš”μ†Œμ—, 2Β·3번의 κ²½μš°λŠ” λΆ€λͺ¨ νƒœκ·Έμ— μ μŠ΅λ‹ˆλ‹€.

1. float: left;
2. display: flex;
3. display: grid;


01. Float

Floatλž€ 'λ„μš°λ‹€'λΌλŠ” 의미λ₯Ό μ§€λ‹ˆλ©° λ ˆμ΄μ•„μ›ƒμ˜ 틀을 μž‘μ„ λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. λ ˆμ΄μ•„μ›ƒμ˜ 틀을 μž‘μ„ λ•Œμ—λŠ” <div> νƒœκ·Έκ°€ μ‚¬μš©λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν•΄λ‹Ή νƒœκ·ΈλŠ” block ν˜•μ‹μ΄κΈ° λ•Œλ¬Έμ— μš”μ†Œλ“€μ΄ κ°€λ‘œλ‘œ λ‚˜λž€νžˆ 정렬될 수 μ—†μŠ΅λ‹ˆλ‹€.

float: left;


μ΄λ•Œ, λ‚˜λž€νžˆ μ •λ ¬ν•΄μ£Όκ³ μž ν•˜λŠ” μš”μ†Œμ˜ CSS 속성에 μœ„μ™€ 같이 float: left;λ₯Ό μΆ”κ°€ν•˜μ—¬ block ν˜•μ‹μ„ ν•΄μ œμ‹œμΌœ μ„Έλ‘œλ‘œ μ •λ ¬ λ˜μ–΄ 있던 μš”μ†Œλ“€μ„ κ°€λ‘œλ‘œ λ‚˜λž€νžˆ μ •λ ¬ν•˜λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€.


clear: both;

단, 이 속성을 μ“°κ²Œ 될 경우 속성을 썼던 μ•„λž˜μ˜ μš”μ†Œκ°€ 보이지 μ•Šκ²Œ λ˜λŠ”λ°, μ΄λŠ” κ·Έ μ•„λž˜μ˜ μš”μ†Œμ˜ height 값이 0이 λ˜μ–΄λ²„λ¦¬λŠ” 버그 λ•Œλ¬Έμž…λ‹ˆλ‹€. 보이지 μ•ŠλŠ” ν•΄λ‹Ή μš”μ†Œμ— μœ„μ™€ 같은 CSS 속성을 μ“°λ©΄ ν•΄κ²°λ©λ‹ˆλ‹€.

λ°˜μ‘ν˜•μœΌλ‘œ λ§Œλ“€ 경우 wrap μ†μ„±μ˜ widthλ§Œμ„ 1200px둜 κ³ μ •μ‹œν‚¨ ν›„ λ‚˜λ¨Έμ§€ μ†μ„±μ˜ width 값은 λ°±λΆ„μœ¨λ‘œ ν™˜μ‚°μ‹œμΌœμ•Ό ν•˜λ©° λ―Έλ””μ–΄ μΏΌλ¦¬μ—μ„œ λ…ΈνŠΈλΆ μ „μš©(max-width: 1300px), νƒœλΈ”λ¦Ώ PC μ „μš©(768px), 슀마트폰 μ „μš©(480px) μ‚¬μ΄μ¦ˆλ₯Ό λ§Œλ“­λ‹ˆλ‹€.


κ²°κ³Ό


clear: both;λ₯Ό μ“°λŠ” λŒ€μ‹ , floatλ₯Ό μ μš©ν•œ μš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œμ— overflow: hidden;을 μ μš©ν•˜κ±°λ‚˜ 3번째처럼 clearfixλ₯Ό μ“°λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€. clearfix μ‚¬μš©λ²•μ€ μœ„μ˜ μ½”λ“œνŽœ 3번째 CSS에 μ ν˜€μžˆμŠ΅λ‹ˆλ‹€.

02. Flex

λ ˆμ΄μ•„μ›ƒμ„ μ •λ ¬ν•˜λŠ” μœ ν˜• 쀑 ν•˜λ‚˜λ‘œ 기쑴의 Float 방식보닀 더 쉽고 κ°„λ‹¨νžˆ μ‚¬μš© ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 단, λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈη€Ύμ˜ 인터넷 μ΅μŠ€ν”Œλ‘œμ–΄μ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

display: flex;
flex-wrap: wrap;

μœ„μ˜ λ‚΄μš©μ„ μžμ‹ νƒœκ·Έλ₯Ό 감싸고 μžˆλŠ” λΆ€λͺ¨ μš”μ†Œμ—κ²Œλ§Œ μ μš©ν•΄μ£Όμ‹œλ©΄ κ°€λ‘œλ‘œ λ‚˜λž€νžˆ μ •λ ¬ κ°€λŠ₯ν•©λ‹ˆλ‹€.


κ²°κ³Ό

03. Grid

table처럼 λ ˆμ΄μ•„μ›ƒμ„ μž‘μ„ 수 μžˆλŠ” 방법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. μ‚¬μš© 방법은 μ•„λž˜μ˜ μ½”λ“œλ“€μ„ λΆ€λͺ¨ μš”μ†Œμ— λ„£λŠ” κ²ƒμž…λ‹ˆλ‹€.

display: grid;
grid-template-areas:
    "header header"
    "nav nav"
    "aside section"
    "footer footer";
grid-template-columns: 30% 70%;
grid-template-rows: 100px 100px 780px 100px;

display: grid;둜 Grid μ‚¬μš©μ„ ν™œμ„±ν™”ν•˜λ©°, grid-template-areasμ—μ„œ μš”μ†Œλ₯Ό λ°°μΉ˜ν•˜κ³ , grid-template-columnsμ—μ„œλŠ” μš”μ†Œ 배치 κ°€λ‘œ 길이λ₯Ό, grid-template-rowsμ—μ„œ λŠ” μ„Έλ‘œ 길이λ₯Ό μ§€μ •ν•΄μ€λ‹ˆλ‹€.


#aside {
    grid-area: aside;
}


λ§ˆμ§€λ§‰μœΌλ‘œ λΆ€λͺ¨ μš”μ†Œμ˜ grid-template-areasμ—μ„œ μ–ΈκΈ‰λœ 이름을 μžμ‹ μš”μ†Œμ˜ grid-area 속성에 λ˜‘κ°™μ΄ 적어 μ—°κ²°μ‹œμΌœμ£ΌλŠ” μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€.


κ²°κ³Ό

λ°˜μ‘ν˜•

λŒ“κΈ€


Reference Book

JavaScript
HTML
CSS
κ΄‘κ³  μ€€λΉ„μ€‘μž…λ‹ˆλ‹€.