[CSS] position

μ‘°μ• μ˜ΉΒ·2025λ…„ 6μ›” 13일

πŸ” positionμ΄λž€?

  • μš”μ†Œκ°€ 어디에 λ°°μΉ˜λ μ§€λ₯Ό κ²°μ •ν•˜λŠ” CSS 속성

βœ… position μ’…λ₯˜

μ†μ„±κ°’κΈ°μ€€μ νŠΉμ§•κ²ΉμΉ¨ κ°€λŠ₯
staticμ—†μŒ (κΈ°λ³Έ λ¬Έμ„œ 흐름)κΈ°λ³Έκ°’, μœ„μΉ˜ 이동 λΆˆκ°€βŒ
relative자기 μžμ‹ μžλ¦¬ μœ μ§€ + 살짝 이동 κ°€λŠ₯❌
absoluteκ°€μž₯ κ°€κΉŒμš΄ position μ§€μ • μ‘°μƒλ¬Έμ„œ 흐름 νƒˆμΆœ, μ •ν™•ν•œ μœ„μΉ˜ μ§€μ • κ°€λŠ₯βœ…
fixedλΈŒλΌμš°μ €(뷰포트)μŠ€ν¬λ‘€μ—λ„ κ³ μ •λ¨βœ…
stickyμŠ€ν¬λ‘€λ˜λŠ” λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆμ‘°κ±΄λΆ€ κ³ μ •(슀크둀 μœ„μΉ˜μ— 따라 변함)❌


πŸ’» 예제

HTML

<section>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</section>

CSS

section {
  margin-top: 500px;
  width: 200px;
  height: 200px;
  border: 10px solid red;
}

section > div {
  width: 50%;
  height: 25%;
  position: absolute;
  background-color: blue;
}

section > div:nth-child(1) { top: 0%; left: 0%; }
section > div:nth-child(2) { background: gold; top: 10%; left: 10%; }
section > div:nth-child(3) { background: pink; top: 20%; left: 20%; }
section > div:nth-child(4) { background: green; top: 30%; left: 30%; }

μ‹€ν–‰ν™”λ©΄


βœ… μ •λ°€ μ»¨νŠΈλ‘€μ„ μœ„ν•œ κΈ°λŠ₯λ“€

1) z-index

  • 겹쳐진 μš”μ†Œλ“€ 쀑 λˆ„κ°€ μœ„μ— 보일지λ₯Ό κ²°μ •ν•˜λŠ” 속성
.element {
  position: relative;
  z-index: 10;
}
  • position이 static이 μ•„λ‹Œ κ²½μš°μ—λ§Œ μž‘λ™
  • z-indexλŠ” ν˜•μ œ μš”μ†Œ κ°„μ—λ§Œ 비ꡐ κ°€λŠ₯
  • μˆ«μžκ°€ 클수둝 μœ„μ— μœ„μΉ˜ (음수 κ°€λŠ₯)

2) calc()

  • CSSμ—μ„œ 길이, 크기 등을 μˆ˜ν•™μ μœΌλ‘œ 계산할 수 μžˆλŠ” ν•¨μˆ˜
width: calc(100% - 50px);
margin-top: calc(2rem + 10px);
  • λ‹¨μœ„ ν˜Όν•© κ°€λŠ₯ (%, px, rem λ“±)
  • μ—°μ‚°μž: +, -, *, / κ°€λŠ₯ (주의: 띄어쓰기 ν•„μˆ˜!)
  • λ°˜μ‘ν˜• λ ˆμ΄μ•„μ›ƒ λ§Œλ“€ λ•Œ 유용

3) transform

  • μš”μ†Œλ₯Ό νšŒμ „, 이동, ν™•λŒ€/μΆ•μ†Œ, 기울이기 λ“± μ‹œκ°μ μœΌλ‘œ λ³€ν˜•ν•˜λŠ” 속성
.element {
  transform: translate(50px, 20px);
}
  • translate(x, y) : μœ„μΉ˜ 이동
  • scale(x) : 크기 ν™•λŒ€/μΆ•μ†Œ
  • rotate(deg) : νšŒμ „
  • skew(x, y) : 기울이기
  • matrix(...) : 볡합 λ³€ν˜•
profile
μ•„μžμž£

0개의 λŒ“κΈ€