[๋ฉ‹์‚ฌ๐Ÿฆ] 1์ฃผ์ฐจ(๊ธˆ) CSS ์†์„ฑ ๊ณต๋ถ€/์‹ค์Šต, ์Šคํ„ฐ๋”” ์‹œ์ž‘

์Ÿˆ๋ชฝยท2021๋…„ 11์›” 6์ผ
4

๊ฐœ๋ฐœ๋‰ด๋น„(21/10/23~)

๋ชฉ๋ก ๋ณด๊ธฐ
9/20

๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ๐Ÿฆ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 1๊ธฐ 1์ฃผ์ฐจ(๊ธˆ) ํšŒ๊ณ  - November 5, 2021.

1์ฃผ์ฐจ๊ฐ€ ๋๋‚ฌ๋‹ค. ์–ด์ œ ํ•œ CSS ์บ๋ฆญํ„ฐ ์›น ๋””์ž์ธ ๋Œ€ํšŒ์—์„œ ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ์žฅ๋ ค์ƒ์„ ๋ฐ›์•˜๋‹ค. ์ƒ์žฅ๋„ ์ฃผ์‹œ๊ณ .. ๊ทธ์ € ๋” ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹จ ์ƒ๊ฐ๋งŒ... ๐Ÿ˜‚


[ ๊ณต๋ถ€ ]

์˜ค๋Š˜์€ ํ•œ์žฌํ˜„ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์ˆ˜์—…์„ ๋“ค์—ˆ๋‹ค! ์„ค๋ช…๋„ ์ •๋ง ์ž˜ํ•ด์ฃผ์‹œ๊ณ  ์–ด๋–ค ์งˆ๋ฌธ์„ ํ•ด๋„ ๊ธ์ •์ ์œผ๋กœ ์ž˜ ๋ฐ›์•„์ฃผ์…จ๋‹ค ๐Ÿค— ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„ ์‹ค์Šต์ด ๋งŽ์•˜๋Š”๋ฐ ์ƒ๊ฐ๋Œ€๋กœ ๊ตฌํ˜„์ด ์ž˜ ์•ˆ๋˜์–ด์„œ ์• ๋จน์—ˆ์ง€๋งŒ ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์—ญ์‹œ ๋ฐฑ๋ฌธ์ด ๋ถˆ์—ฌ์ผํƒ€๋‹ค๋‹ฅ !!!

[ ๊ฐ•์˜์š”์•ฝ ]

normal flow์™€ float, position ๊ฐ๊ฐ์€ ๋‹ค ๋‹ค๋ฅธ ์ฐจ์›์ด๋‹ค.

position (11/4 ๋ณด์ถฉ)

  • ๊ธฐ๋ณธ ์†์„ฑ๊ฐ’์€ static
  • relative๋Š” normal flow๋ฅผ ํ•ด์น˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ƒ๋Œ€์œ„์น˜๋Š” top, right, bottom, left, z-index ๊ฐ’๋งŒ ์ž…๋ ฅํ•˜๋ฉด ์›ํ•˜๋Š” ์œ„์น˜์— ํŽ˜์ด์ง€์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • absolute๋Š” normal flow๋ฅผ ๋ฒ—์–ด๋‚œ๋‹ค. ์ขŒํ‘œ๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ณธ๋ž˜ ์œ„์น˜์— ์žˆ๋‹ค.
  • fixed๋Š” ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์„ ๊ทน๋Œ€ํ™” ํ•˜๋Š” ํ€ต๋ฉ”๋‰ด(๋งจ ์œ„๋กœ ๊ฐ€๊ธฐ, ๋‹คํฌ๋ชจ๋“œ) ๋“ฑ์— ์“ฐ์ธ๋‹ค. ์—ฐ์Šต
  • sticky๋Š” ์Šคํฌ๋กค์„ ๋‚ด๋ ค๋„ fixed ์ฒ˜๋Ÿผ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค๊ฐ€ ์ž„๊ณ„์ ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ(์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์งˆ ๋•Œ) ๊ฐ™์ด ์‚ฌ๋ผ์ง„๋‹ค.
  • sticky๋Š” ๋‚˜์˜จ์ง€ ์–ผ๋งˆ ์•ˆ๋œ ์†์„ฑ์ด๋ผ '๋ฒค๋” ํ”„๋ฆฌํ”ฝ์Šค'๊ฐ€ ํ•„์š”ํ•˜๋‹ค!
position: -webkit-sticky;

news.naver.com์—์„œ ์šฐ์ธก ๋”๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ๊ตณ์ด position: absolute;๋กœ ํ•œ ์ด์œ ๋Š” ๋…ผ๋ฆฌ์  ๋งˆํฌ์—… ์ˆœ์„œ ๋•Œ๋ฌธ์ด๋‹ค. ๋”๋ณด๊ธฐ ์š”์†Œ์˜ ์ˆœ์„œ๋ฅผ ๋งจ ๋ฐ‘์— ๋ฐฐ์น˜ํ•ด์„œ ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๊ธฐ๊ฐ€ ๋‚˜์ค‘์— ์ฝ๊ฒŒ ํ–ˆ๋‹ค.


์ˆ˜ํ‰ ์ •๋ ฌ

  • ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ์—์„œ ์ˆ˜ํ‰ ์ •๋ ฌ์€ ์ค‘์š”ํ•˜๋‹ค.

๐Ÿ˜ถ flex์™€ grid๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  inline-block์œผ๋กœ ์ˆ˜ํ‰ ์ •๋ ฌ ํ•˜๋Š” ๋ฒ• (์ž˜ ์“ฐ์ด์ง€ ์•Š์Œ!)

  • inline-block์ด ๋ธ”๋ก ์š”์†Œ์™€ ๋‹ค๋ฅธ ์ ์€ width ๊ฐ’๊ณผ, margin-top/bottom์„ ์ค„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋ณดํ†ต ์š”์†Œ์™€ ์š”์†Œ ์‚ฌ์ด ๊ณต๋ฐฑ์€ margin์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋‚˜, inline-block์—์„œ๋Š” ์ฝ”๋“œ ์ค„๋ฐ”๊ฟˆ์„ ๋„์–ด์“ฐ๊ธฐ ํ•œ ์นธ์œผ๋กœ ์ธ์‹ํ•˜๊ณ  ์ž์ฒด์ ์œผ๋กœ ๊ณต๋ฐฑ์ด ์ƒ๊ฒจ๋ฒ„๋ฆฐ๋‹ค. (ํ•œ ์นธ ๋„์–ด์“ฐ๊ธฐ๋Š” ๋ฐ˜์˜์ด ๋˜๋‹ˆ๊นŒ!)
  • body {font-size: 0;} ์„ ์–ธ์„ ํ•ด๋‘๋ฉด ๋„์–ด์“ฐ๊ธฐ๋ฅผ ํ•˜๋”๋ผ๋„ ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๊ณ , ์›ํ•˜๋Š” ์š”์†Œ์— font-size๋ฅผ ์ •ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ์ด ๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ ๊ท€์ฐฎ๋‹ค ๐Ÿ˜ฃ

float (11/4 ๋ณด์ถฉ)

4์ผ์—

  • float๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋„์›Œ์„œ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž์‹ ์š”์†Œ์— float ์†์„ฑ์„ ์ฃผ๊ฒŒ ๋˜๋ฉด ๊ทธ ๋„์›Œ์ง„ ์ƒํƒœ๋ฅผ ๋ถ€๋ชจ๋Š” ์บ์น˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋ถ€๋ชจ wrap ๋ฐ•์Šค์— overflow: hidden; ์„ ์–ธ์„ ์ฃผ์ž

์ด๋ ‡๊ฒŒ ์ •๋ฆฌ๋ฅผ ํ–ˆ๋Š”๋ฐ ์ˆ˜์—… ์‹œ๊ฐ„์— float ํ•ด์ œ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋“ค์–ด์„œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๐Ÿ˜ถ float ํ•ด์ œ ๊ธฐ๋ฒ•

float๋œ ์ž์‹์„ ๋ถ€๋ชจ ์š”์†Œ๊ฐ€ ์•Œ๊ฒŒํ•˜๋Š” ๋ฒ•
1) overflow: hidden;
2) display: inline-block;
3) ๋ถ€๋ชจ ์š”์†Œ์— ๊ฐ€์ƒ ์š”์†Œ ์ฃผ๊ธฐ - ํด๋ฆฌ์–ดํ”ฝ์Šค

.clear-fix::after {
    display: block;
    content: '';
    clear: both;
}
  • ::after ๊ฐ™์€ ๊ฐ€์ƒ ์š”์†Œ๋ฅผ ํ™œ์šฉํ•  ๋•Œ๋Š” ๋‚ด์šฉ์ด ์—†๋”๋ผ๋„ content๋ฅผ ๊ผญ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค!
  • ๊ฐ€์ƒ ์š”์†Œ๋Š” ๋งˆํฌ์—…์—์„œ ๋ถˆํ•„์š”ํ•œ ์š”์†Œ๋ผ์„œ CSS์—์„œ ๋‹ค๋ฃฌ๋‹ค.

์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ float ํ•ด์ œ๋ฅผ ์จ์„œ ๋ถ€๋ชจ ์š”์†Œ๊ฐ€ ์•Œ๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ๋ˆˆ์œผ๋กœ ๋ณด์ด๊ธฐ์— float์ด ๋ฌธ์ œ๊ฐ€ ์—†์–ด๋ณด์—ฌ๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๊ฒฝ์šฐ๋ฅผ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (๋ฐฉํƒ„ ์›น)
์ž์‹ ์š”์†Œ๊ฐ€ ๋ณ€๋™๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ ์š”์†Œ์˜ ๋†’์ด ๊ฐ’์€ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

float์™€ ํด๋ฆฌ์–ดํ”ฝ์Šค ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ๋กœ๊ทธ์ธ ํ™”๋ฉด ์—ฐ์Šต์„ ํ•ด๋ณด์•˜๋‹ค.

  • ๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ ์ž๋ฌผ์‡ ์™€ ์‚ฌ๋žŒ ๋ชจ์–‘ ์ด๋ฏธ์ง€๋Š” alt ์†์„ฑ์ด ์กด์žฌ๋Š” ํ•˜๋˜ ๊ฐ’์ด ์—†์–ด์•ผ ํ•œ๋‹ค. ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๊ธฐ๊ฐ€ <img>์—์„œ alt ์†์„ฑ ์ž์ฒด๊ฐ€ ์—†์œผ๋ฉด src ์ฃผ์†Œ๋ฅผ ์ฝ์–ด๋ฒ„๋ฆฐ๋‹ค.
  • ์ž๋ฌผ์‡ ์™€ ์‚ฌ๋žŒ ๋ชจ์–‘ ์ด๋ฏธ์ง€๋Š” ๊ฐ€์ƒ ์š”์†Œ(::before)๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜, ๋ฐ•์Šค ์ž์ฒด์— background๋ฅผ ์ฃผ๊ณ  padding-left๊ฐ’์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
background-image: url('img/lock.png');
background-size: contain;
background-repeat: no-repeat;

์ˆ˜์ง/์ˆ˜ํ‰ ์ค‘์•™ ์ •๋ ฌ

.parent {
    height: 400px;
    background: #000;
}

.child {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    height: 100px;
    width: 50px;
    background: pink;
    
<div class="parent">
    <div class="child"></div>
</div>

top์œผ๋กœ ๋ถ€๋ชจ์˜ 50%๋งŒํผ ๋‚ด๋ ค์˜จ ๋‹ค์Œ transform์œผ๋กœ ์š”์†Œ์˜ 50%๋งŒํผ ์˜ฌ๋ผ๊ฐ„๋‹ค.
inline-block์ผ ๋•Œ๋Š” vertical-align ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ˆ˜ํ‰ ์ค‘์•™ ์ •๋ ฌ์€ margin: 0 auto;๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
auto๊ฐ€ ์žˆ์œผ๋ฉด ๋‚จ์•„์žˆ๋Š” ๋งˆ์ง„์„ ๋ฐ˜์œผ๋กœ ์ชผ๊ฐœ์„œ ์ž๋™์œผ๋กœ ์–‘ ์˜†์— ๋ถ™์—ฌ์ค€๋‹ค.
์ด๊ฒŒ ๊ฐ€๋” ์•ˆ ๋จนํžˆ๋Š” ๊ฒฝ์šฐ๋Š” width ๊ฐ’์ด ์—†์„ ๋•Œ !

display: flex;

flex ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ flex ์•„์ดํ…œ

    <div class="container">
        <div class="box">box1</div>
        <div class="box">box2</div>
        <div class="box">box3</div>
    </div>
  • ์ปจํ…Œ์ด๋„ˆ์— display: flex;๋ฅผ ์ ์šฉํ•˜๋Š”๊ฒŒ ์‹œ์ž‘์ด๋‹ค.
  • ์ถ•(axis) ๊ฐœ๋… ์ดํ•ด๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.
  • flex-direction๊ณผ justify-content ์†์„ฑ์„ ๋ฐฐ์šฐ๊ณ  ์‹ค์Šตํ–ˆ๋‹ค.
    ์—ฐ์Šต์ด ์•„์ง ๋งŽ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
  • space-around๋Š” ๊ฐ๊ฐ์˜ ์•„์ดํ…œ ์ขŒ์šฐ์— ๊ฐ™์€ ๋„“์ด์˜ ์—ฌ๋ฐฑ์ด ๊ฐ์‹ธ๋Š” ํ˜•ํƒœ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ! space-evenly๋Š” ์•„์ดํ…œ๋“ค ์‚ฌ์ด์™€ ์–‘ ๋์— ๊ท ์ผํ•œ ๊ฐ„๊ฒฉ์„ ๋งŒ๋“ค์–ด ์ค€๋‹ค. ์ฐจ์ด๊ฐ€ ์ด์ œ ์ดํ•ด๋œ๋‹ค.

[ ์Šคํ„ฐ๋”” ์‹œ์ž‘ ]

๋ฆฌ๋”์‹ญ ๋„˜์น˜๋Š” ๋ถ„์ด ์Šคํ„ฐ๋”” ๋ชจ์ง‘์„ ํ•˜๊ณ  ๊ณ„์…”์„œ ๋ฅ์„ ์ฐธ์—ฌํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ฃผ์ œ๋Š” HTML/CSS๋กœ ์นด์นด์˜ค ํšŒ์‚ฌ ์ฒซ ํŽ˜์ด์ง€ ํด๋ก ์ด์—ˆ๋‹ค. ์ž‘์—… ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์ƒˆ๋ฒฝ๊นŒ์ง€ ๋”ฑ ์ฒซ ๋‚  ๊ณผ์ œ ๋ถ„๋Ÿ‰๋งŒ ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ ์žค๋‹ค ๐Ÿ˜‚ 6์ผ ์˜คํ›„ 10์‹œ์— ๋ชจ์ด๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ์Šคํ„ฐ๋””๋„ ์ฒ˜์Œ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋„ ์ฒ˜์Œ์ด๋ผ ๋–จ๋ฆฐ๋‹ค. ๊ทธ๋ž˜๋„ ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ ๊ธฐ๋Œ€๋œ๋‹ค !


์ฐธ๊ณ ์ž๋ฃŒ

1) https://selosele.github.io/2020/07/21/clearfix/ float ํ•ด์ œ
2) https://developer.mozilla.org/ko/docs/Web/CSS/clear
3) https://studiomeal.com/archives/197 flex ์ดํ•ดํ•˜๊ธฐ

profile
FE ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์ถ”์ง„๋ ฅ์„ ์–ป๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€