CSS μμΉ μμ±μ νμ΄μ§ λ μ΄μμμ λμμΈν λ λ§€μ° μ€μν μν μ ν©λλ€. μ΄λ² κΈμμλ position z-index, float, clearμ κ°μ μ£Όμ CSS μμ±μ κΉμ΄ μκ² λ€λ£¨μ΄ λ³΄κ² μ΅λλ€.
β£ λͺ©μ°¨
position μμ±π
position μμ±μ HTML μμμ μμΉλ₯Ό μ§μ νλ λ° μ¬μ©λ©λλ€. κΈ°λ³Έ κ°μ staticμ΄λ©°, μ΄μΈμλ relative, absolute, fixed, stickyμ κ°μ κ°μ΄ μμ΅λλ€.
static
- λͺ¨λ HTML μμμ κΈ°λ³Έκ°μ λλ€. μ΄ μμ±μ μ€μ νλ©΄ μμλ λ¬Έμμ μ μ νλ¦μ λ°λΌ λ°°μΉλλ©°, top, right, bottom, leftμ κ°μ μμΉ μμ±μ 무μλ©λλ€.
.element {
position: static;
}
μμ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Position Static Example</title>
<style>
.static {
position: static;
width: 100px;
height: 100px;
background-color: red;
}
</style>
</head>
<body>
<div class="static">Static</div>
</body>
</html>
κ²°κ³Ό: λΉ¨κ°μ λ°μ€κ° κΈ°λ³Έ νλ¦μ λ°λΌ λ°°μΉλ©λλ€.
relative
- μμλ₯Ό λ¬Έμμ μ μ νλ¦μ λ°λΌ λ°°μΉν ν, top, right, bottom, left μμ±μ μ¬μ©νμ¬ μμ μ κΈ°μ€μΌλ‘ μ΄λμν΅λλ€.
- μ΄λμ μλ μμΉλ₯Ό κΈ°μ€μΌλ‘ νλ©°, μμμ μλ μμΉλ μ¬μ ν λ¬Έμμ νλ¦μ μν₯μ λ―ΈμΉ©λλ€.
- top: μμͺ½μ κΈ°μ€μΌλ‘ μ’νκ°μ μ§μ ν©λλ€.
- right: μ€λ₯Έμͺ½μ κΈ°μ€μΌλ‘ μ’νκ°μ μ§μ ν©λλ€.
- bottom: μλμͺ½μ κΈ°μ€μΌλ‘ μ’νκ°μ μ§μ ν©λλ€.
- left: μΌμͺ½μ κΈ°μ€μΌλ‘ μ’νκ°μ μ§μ ν©λλ€.
.element {
position: relative;
top: 10px;
left: 20px;
}
μμ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Position Relative Example</title>
<style>
.relative {
position: relative;
top: 20px;
left: 20px;
width: 100px;
height: 100px;
background-color: blue;
}
</style>
</head>
<body>
<div class="relative">Relative</div>
</body>
</html>
κ²°κ³Ό: νλμ λ°μ€κ° μλ μμΉμμ 20px μλ, 20px μ€λ₯Έμͺ½μΌλ‘ μ΄λν©λλ€.
absolute
- μμλ λ¬Έμμ μ μμ μΈ νλ¦μμ μ κ±°λλ©°, κ°μ₯ κ°κΉμ΄ μ‘°μ μμ μ€ position μμ±μ΄ relative, absolute, fixed, λλ stickyλ‘ μ€μ λ μμλ₯Ό κΈ°μ€μΌλ‘ λ°°μΉλ©λλ€.
- μ‘°μ μμκ° μλ€λ©΄, μ΄κΈ° 컨ν μ΄λ λΈλ‘(<html>)μ κΈ°μ€μΌλ‘ λ°°μΉλ©λλ€.
.element {
position: absolute;
top: 50px;
left: 100px;
}
μμ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Position Absolute Example</title>
<style>
.relative-parent {
position: relative;
width: 200px;
height: 200px;
background-color: lightgray;
}
.absolute {
position: absolute;
top: 30px;
left: 30px;
width: 100px;
height: 100px;
background-color: green;
}
</style>
</head>
<body>
<div class="relative-parent">
<div class="absolute">Absolute</div>
</div>
</body>
</html>
κ²°κ³Ό: νμ λ°μ€ λ΄μ μλ λ Ήμ λ°μ€κ° νμ λ°μ€λ₯Ό κΈ°μ€μΌλ‘ 30px μλ, 30px μ€λ₯Έμͺ½μ λ°°μΉλ©λλ€.
fixed
- μμλ λ¬Έμμ μ μμ μΈ νλ¦μμ μ κ±°λλ©°, λ·°ν¬νΈλ₯Ό κΈ°μ€μΌλ‘ λ°°μΉλ©λλ€. μ€ν¬λ‘€ν΄λ μμμ μμΉλ λ³νμ§ μμ΅λλ€.
.element {
position: fixed;
top: 0;
right: 0;
}
μμ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Position Fixed Example</title>
<style>
.fixed {
position: fixed;
top: 0;
left: 0;
width: 100px;
height: 100px;
background-color: orange;
}
.content {
height: 2000px;
}
</style>
</head>
<body>
<div class="fixed">Fixed</div>
<div class="content"></div>
</body>
</html>
κ²°κ³Ό: μ£Όν©μ λ°μ€κ° νλ©΄μ μΌμͺ½ μλ¨μ κ³ μ λμ΄ μ€ν¬λ‘€ν΄λ μμΉκ° λ³νμ§ μμ΅λλ€.
sticky
- μμλ μ€ν¬λ‘€ μμΉμ λ°λΌ relativeμ fixed μ¬μ΄λ₯Ό μ νν©λλ€. μμκ° μ»¨ν μ΄λ λ΄μμ νΉμ μ€ν¬λ‘€ μμΉμ λλ¬νλ©΄ fixedμ²λΌ μλνκ³ , κ·Έλ μ§ μμΌλ©΄ relativeμ²λΌ μλν©λλ€.
.element {
position: sticky;
top: 0;
}
μμ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Position Sticky Example</title>
<style>
.sticky {
position: sticky;
top: 0;
width: 100%;
height: 50px;
background-color: purple;
}
.content {
height: 2000px;
background-color: lightgray;
}
</style>
</head>
<body>
<div class="sticky">Sticky</div>
<div class="content"></div>
</body>
</html>
κ²°κ³Ό: 보λΌμ λ°μ€κ° μ€ν¬λ‘€ μ νμ΄μ§ μλ¨μ κ³ μ λλ©°, λ€λ₯Έ μμκ° μλ‘ μ§λκ° λκΉμ§ μμΉλ₯Ό μ μ§ν©λλ€.
position: absoluteμ position: fixedμ μ°¨μ΄μ β
- position: absoluteλ κ°μ₯ κ°κΉμ΄ position: relative λΆλͺ¨ μμλ₯Ό κΈ°μ€μΌλ‘ λ°°μΉλκ³ , position: fixedλ νλ©΄(viewport)μ κΈ°μ€μΌλ‘ λ°°μΉλμ΄ μ€ν¬λ‘€ μμλ μμΉκ° λ³νμ§ μμ΅λλ€.
z-index μμ±ποΈ
μ μμ μ¬μ© λͺ©μ
z-index μμ±μ μμμ μμ μμλ₯Ό μ€μ νμ¬, μμλ€μ΄ μλ‘ κ²Ήμ³€μ λ μ΄λ€ μμκ° μμ 보μΌμ§ κ²°μ ν©λλ€. position μμ±μ΄ relative, absolute, fixed, sticky μ€ νλμ¬μΌ μ μ©λ©λλ€.
μμ λ§₯λ½(Stacking Context)
μμ λ§₯λ½μ z-index κ°μ μν΄ μμ±λλ©°, λΆλͺ¨ μμμ μν΄ νμ±λ©λλ€. λμΌν μμ λ§₯λ½ λ΄μμλ z-index κ°μ΄(1~9999 μ¬μ΄μ μ«μ κ°) λμ μμκ° μμ νμλ©λλ€.
μμ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Z-index Example</title>
<style>
.box {
width: 200px;
height: 200px;
position: absolute;
}
#box1 {
background-color: red;
top: 50px;
left: 50px;
z-index: 1;
}
#box2 {
background-color: blue;
top: 100px;
left: 100px;
z-index: 2;
}
#box3 {
background-color: green;
top: 150px;
left: 150px;
z-index: 3;
}
</style>
</head>
<body>
<div class="box" id="box1"></div>
<div class="box" id="box2"></div>
<div class="box" id="box3"></div>
</body>
</html>
μ΄ μμ μμλ μΈ κ°μ μ¬κ°ν μμλ₯Ό μμ±νκ³ κ° μμμ z-index μμ±μ λ€λ₯΄κ² μ€μ ν©λλ€. λΉ¨κ° μμλ κ°μ₯ μλμ μμ΄κ³ (1), νλ μμλ κ·Έ μμ μμ λλ€(2), λ§μ§λ§μΌλ‘ λ Ήμ μμκ° κ°μ₯ μμ μμ λλ€(3). μ΄λ₯Ό ν΅ν΄ z-index μμ±μ μ¬μ©νμ¬ μμμ μμ μμλ₯Ό μ‘°μ νλ λ°©λ²μ μ΄ν΄ν μ μμ΅λλ€.
float μμ±π
floatμ κΈ°λ³Έ κ°λ κ³Ό μ¬μ© λ°©λ²
float μμ±μ μμλ₯Ό μΌμͺ½ λλ μ€λ₯Έμͺ½μΌλ‘ λ μκ² νμ¬, ν μ€νΈλ μΈλΌμΈ μμκ° κ·Έ μ£Όμλ₯Ό λλ¬μΈλλ‘ ν©λλ€.
img {
float: left;
margin-right: 10px; /* μ΄λ―Έμ§μ ν
μ€νΈ μ¬μ΄μ κ°κ²© μ‘°μ μ μν΄ μ¬μ©λ¨ */
}
μμ κ°μ CSS μ½λλ₯Ό μ¬μ©νμ¬ μ΄λ―Έμ§λ₯Ό ν μ€νΈμ μΌμͺ½μ λμ λ³Ό μ μμ΅λλ€. μ΄μ μ΄ μ΄λ―Έμ§λ μΌμͺ½μΌλ‘ λμμ§κ³ , ν μ€νΈκ° μ΄λ―Έμ§μ μ°μΈ‘μ λ λλ§λ©λλ€.
μμ± κ°
float μμ±μ λ€μκ³Ό κ°μ κ°λ€μ κ°μ§ μ μμ΅λλ€:
- left: μμλ₯Ό μΌμͺ½μΌλ‘ λμλλ€.
- right: μμλ₯Ό μ€λ₯Έμͺ½μΌλ‘ λμλλ€.
- none: μμλ₯Ό λμ°μ§ μμ΅λλ€. μ΄ κ°μ΄ κΈ°λ³Έκ°μ λλ€.
float λ μ΄μμμ μ¬μ©ν λμ μ₯μ κ³Ό λ¨μ
μ₯μ :
- ν μ€νΈλ μΈλΌμΈ μμκ° νλ‘ν λ μμμ μ£Όμλ₯Ό μμ°μ€λ½κ² κ°μ μ μμ΅λλ€.
- μ΄λ―Έμ§μ ν μ€νΈλ₯Ό ν¨κ» λ°°μΉν λ μ μ©ν©λλ€.
λ¨μ :
- λΆλͺ¨ μμμ λμ΄κ° μμ μμλ₯Ό ν¬ν¨νμ§ μμ μ μμ΅λλ€. μ΄ λλ¬Έμ λΆλͺ¨ μμμ λν λμ΄ μ‘°μ μ΄ νμν μ μμ΅λλ€.
- 볡μ‘ν λ μ΄μμμμλ νλ‘νΈ μμ±λ§μΌλ‘λ νκ³κ° μμ΅λλ€.
floatλ₯Ό μ¬μ©ν λ λ°μνλ λ μ΄μμ λ¬Έμ λ₯Ό μ΄λ»κ² ν΄κ²°ν μ μλμβ
- νλ‘ν λ μμλ₯Ό ν¬ν¨νλ λΆλͺ¨ μμμ clearfix ν΄λμ€λ₯Ό μ μ©νλ©΄, floatλ‘ μΈν΄ λ°μνλ λ μ΄μμ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
clear μμ±π«
floatμ clearμ κ΄κ³
clear μμ±μ νλ‘ν λ μμ μμ λ€λ₯Έ μμκ° λ°°μΉλμ§ μλλ‘ μ μ΄ν©λλ€. μ£Όλ‘ float μμ±κ³Ό ν¨κ» μ¬μ©νμ¬ λ μ΄μμμ μ 리ν©λλ€.
clear μμ± κ°
- none: μλ¬΄λ° νΉλ³ν μ²λ¦¬λ₯Ό νμ§ μμ.
- left: float λ μμκ° μΌμͺ½μ μμ λ ν΄λΉ μͺ½μ float μν₯μ μ κ±°ν©λλ€.
- right: floatλ μμκ° μ€λ₯Έμͺ½μ μμ λ ν΄λΉ μͺ½μ float μν₯μ μ κ±°ν©λλ€.
- both: μμͺ½(μΌμͺ½κ³Ό μ€λ₯Έμͺ½)μ λͺ¨λ floatλ μμκ° μμ λ μμͺ½μ float μν₯μ λͺ¨λ μ κ±°ν©λλ€.
μλ₯Ό λ€μ΄, λΆλͺ¨ μμ μμ floatλ μμκ° μλ κ²½μ°μ floatλ μμμ μν₯μ λΆλͺ¨ μμμ λμ΄μ μν₯μ λ―ΈμΉμ§ μκ² νλ €λ©΄ clear μμ±μ μ¬μ©νμ¬ ν΄λΉ μν₯μ μ κ±°ν μ μμ΅λλ€.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Float μμ±κ³Ό Clear μμ± μμ </title>
<style>
.clearfix::after {
content: "";
display: table;
clear: both;
}
.float-left {
float: left;
width: 100px;
height: 100px;
background: red;
}
.float-right {
float: right;
width: 100px;
height: 100px;
background: blue;
}
</style>
</head>
<body>
<div class="clearfix">
<div class="float-left">Float Left</div>
<div class="float-right">Float Right</div>
<p>μ΄ ν
μ€νΈλ νλ‘ν
λ μμμ μ£Όμλ₯Ό λλ¬μλλ€.</p>
</div>
</body>
</html>
μ μ½λλ clearfix ν΄λμ€μ μ μ©λ μμμ λν΄ μμͺ½μΌλ‘ floatλ μμλ€μ μν₯μ λͺ¨λ μ κ±°ν©λλ€. μ΄λ₯Ό ν΅ν΄ λΆλͺ¨ μμκ° floatλ μμμ λμ΄μ μν₯μ λ°μ§ μκ³ μ λλ‘ λ μ΄μμμ΄ κ΅¬μ±λ μ μμ΅λλ€.
μ’ ν© μμ π‘
μμ μ€λͺ ν μμ±λ€μ μ’ ν©νμ¬ λ μ΄μμμ ꡬμ±ν΄ λ³΄κ² μ΅λλ€.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS μμΉ μμ± μμ </title>
<style>
.container {
width: 100%;
border: 1px solid #ccc;
}
.header {
position: relative;
z-index: 2;
background: #f1f1f1;
padding: 10px;
text-align: center;
}
.sidebar {
float: left;
width: 25%;
background: #e1e1e1;
height: 300px;
}
.content {
float: right;
width: 70%;
background: #d1d1d1;
height: 300px;
}
.footer {
clear: both;
background: #c1c1c1;
padding: 10px;
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<div class="header">ν€λ μμ</div>
<div class="sidebar">μ¬μ΄λλ° μμ</div>
<div class="content">컨ν
μΈ μμ</div>
<div class="footer">νΈν° μμ</div>
</div>
</body>
</html>
μ΄ μμ μμλ position, float, clear, z-index μμ±μ νμ©νμ¬ κ°λ¨ν μΉνμ΄μ§ λ μ΄μμμ ꡬμ±νμ΅λλ€. header μμλ z-index μμ±μ μ¬μ©νμ¬ κ°μ₯ μμ λ°°μΉλμκ³ , sidebarμ content μμλ float μμ±μ μ¬μ©νμ¬ λλν λ°°μΉλμμ΅λλ€. footer μμλ clear: bothλ₯Ό μ¬μ©νμ¬ νλ‘ν λ μμ μλμ λ°°μΉλμμ΅λλ€.
ν΅μ¬ λ΄μ©π