SEB FE / Section1 / Unit5 / CSS κΈ°μ΄
π Today I Learned
CSS
κΈ°μ΄- λ°μ€ λͺ¨λΈ
CSS selector
μΉ νμ΄μ§ μ€νμΌ λ° λ μ΄μμμ μ μνλ μ€νμΌμνΈ μΈμ΄λ€.
UI λ° λ μ΄μμμ μ μ ν ꡬμ±νλ©΄ λ©μ§ μΉ νμ΄μ§λ₯Ό μμ±ν μ μλ€.
;
)μ λΆμ΄μ§ μμλ λμ§λ§, μμ±κ³Ό κ°μ μμ±ν λ€μ μΈλ―Έμ½λ‘ μ μ λ μ΅κ΄μ λ€μ΄λ κ²μ΄ μ’λ€.ID
#
μΌλ‘ μ ν
ν λ¬Έμμ λ¨ νλμ μμμλ§ μ μ©
νΉμ μμμ μ΄λ¦μ λΆμ΄λ λ° μ¬μ©
class
.
μΌλ‘ μ ν
λμΌν κ°μ κ°λ μμ λ§μ
μ€νμΌ λΆλ₯(classificatio)μ μ¬μ©
.blue {
color: #0000ff;
}
<!-- blue classμ color μμ±μ #0000ff κ°μ ν λΉνλ€ -->
.box {
color: #000000; /* κΈμ μμ */
background-color: #c7b299; /* λ°°κ²½ μμ */
border-color: #ffffff; /* ν
λ리 μμ */
}
<!-- κΈμ, λ°°κ²½, ν
λ리 μμμ κ°κΈ° λ€λ₯Έ μμ±μ κ°μ§κ³ μλ€ -->
.emphasize {
font-family: "SF Pro KR", "MalgunGothic", "Verdana";
}
<!-- font-family μμ±μ ν΅ν΄ κΈκΌ΄(ν°νΈ)μ μ€μ ν μ μλ€ -->
κΈκΌ΄μ μ΄λ¦μ λ°μ΄νλ₯Ό λΆμ¬μ μ μ©ν μ μλ€. μ¬μ©νλ €λ κΈκΌ΄μ΄ μ‘΄μ¬νμ§ μκ±°λ, λλ°μ΄μ€μ λ°λΌ μ§μνμ§ μμ μ μλ€. μ΄λ° κ²½μ°λ₯Ό λλΉνμ¬ fallback κΈκΌ΄μ μΆκ°ν μ μλ€. fallbackμ νννκ³ μΆμ κΈκΌ΄μ΄ μκ±°λ μ¬μ©ν μ μλ κ²½μ°λ₯Ό μν λλΉμ± μ΄λ€. fallbackμ μν΄ μ¬λ¬ κΈκΌ΄μ μ¬μ©νλ κ²½μ°, μΌνλ‘ κ΅¬λΆνμ¬ μ λ ₯ν μ μλ€. μ λ ₯λ μμλλ‘ fallbackμ΄ μ μ©λλ€.
px
, pt
λ±%
, em
, rem
, ch
, vw
, vh
λ±π« κΈκΌ΄ μ¬μ΄μ¦λ₯Ό μ ν λ
κΈ°κΈ°λ λΈλΌμ°μ μ¬μ΄μ¦ λ±μ νκ²½μ μν₯μ λ°μ§ μ λμ μΈ ν¬κΈ°λ‘ μ νλ κ²½μ°
px
μ μ¬μ©νλ€.μΌλ°μ μΈ κ²½μ°
rem
μ μΆμ²νλ€.1rem
μ΄λ©° λ λ°°λ‘ ν¬κ² νκ³ μΆλ€λ©΄ 2rem
, μκ² νλ €λ©΄ 0.8rem
λ±μΌλ‘ μ‘°μ νμ¬ μ¬μ© κ°λ₯νλ€.π« νλ©΄ μ¬μ΄μ¦λ₯Ό μ ν λ
λ°μν μΉ(responsive web)μμ κΈ°μ€μ μ λ§λ€ λ
px
λ‘ μ§μ νλ€.νλ©΄ λλΉλ λμ΄μ λ°λ₯Έ μλμ μΈ ν¬κΈ°κ° μ€μν κ²½μ°
vw
, vh
μ¬μ©μ μΆμ²νλ€.vw
, vh
λ κ°κ° viewport width
μ viewport height
λ₯Ό λ»νλ€.1vw
λ 보μ΄λ μμ λλΉμ 1/100μ, 1vh
λ 보μ΄λ μμ λμ΄μ 1/100μ λ»νλ€.100vw
, 100vh
λ₯Ό μ¬μ©ν΄ ꡬνν κ²μ΄λ€.<!-- html μμ -->
<h1>Basic document flow</h1>
<p>I am a basic block level element. My adjacent block level elements sit on new lines below me.</p>
<p>By default we span 100% of the width of our parent element, and we are as tall as our child content. Our total width and height is our content + padding + border width/height.</p>
<p>We are separated by our margins. Because of margin collapsing, we are separated by the width of one of our margins, not both.</p>
<p>inline elements <span>like this one</span> and <span>this one</span> sit on the same line as one another, and adjacent text nodes, if there is space on the same line. Overflowing inline elements will <span>wrap onto a new line if possible (like this one containing text)</span>, or just go on to a new line if not</p>
<!-- css μμ -->
h1 {
background: gray;
width: 60%;
}
p {
background: rgba(255,84,104,0.3);
width: 80%;
height: 200px;
}
span {
background: yellow;
width: 100px;
height: 100px;
}
width
, height
μ¬μ© κ°λ₯width
, height
μ¬μ© κ°λ₯width
, height
μ¬μ© λΆκ°λ₯border (ν
λ리)
κ° μμμ΄ μ°¨μ§νλ ν¬κΈ°λ₯Ό νμ
νκΈ° μν΄, λ μ΄μμμ λ§λ€λ©΄μ κ·Έ ν¬κΈ°λ₯Ό μκ°μ μΌλ‘ νμΈν μ μλλ‘ λ§λ λ€.
p {
border: 1px solid red;
}
margin (λ°κΉ₯ μ¬λ°±)
κ°κ°μ κ°μ top, right, bottom, leftλ‘ μκ³λ°©ν₯μ΄λ€.
p {
margin: 10px 20px 30px 40px;
}
κ°μ λ κ°λ§ λ£μΌλ©΄ topκ³Ό bottomμ΄ 10px, left λ° rightκ° 20pxμ΄λ€.
p {
margin: 10px 20px;
}
κ°μ νλλ§ λ£μΌλ©΄ λͺ¨λ λ°©ν₯μ λ°κΉ₯ μ¬λ°±μ μ μ©λλ€.
p {
margin: 10px;
}
λ€μκ³Ό κ°μ΄ λ°©ν₯μ νΉμ ν μμ±λ μ‘΄μ¬νλ€.
p {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
}
content-boxμ border-box
μ¬λ°±κ³Ό ν
λ리λ₯Ό ν¬ν¨νλ λ°μ€ ν¬κΈ° κ³μ°λ²μΈ border-box
λ₯Ό κΆμ₯νλ€.
μλ κ·Έλ¦Όμ * {}
μ κΈ°λ³Έμ μΌλ‘ λ€μ΄κ°λ κ²μ΄λ€.
μ΄κΈ°νλ₯Ό νκ³ μμνλ κ²μ΄ μ’λ€.
CSS μμ±μ μ μ©ν λμμ μ ννλ λ°©λ²μ CSS selectorλΌκ³ νλ€.
π‘ μμ μ λ ν°
<header>
μμ λ°λ‘ μλμ μλ λ κ°μ <p>
μμλ μ νλμ§λ§, <span>
μμμ μμμΈ <p>
μμλ μ νλμ§ μλλ€.μμ
header > p { }
<header>
<p> <!-- μ ν -->
<span>
<p></p>
</span>
</p>
<p> <!-- μ ν -->
<span>
<p></p>
</span>
</p>
</header>
π‘ νμ μ λ ν°
<header>
μμμ μμμΈ <p>
μμλ₯Ό λΏ μλλΌ, <header>
μμμ μμμ μμμΈ μλ <p>
μμκΉμ§ λͺ¨λ μ νλλ€.μμ
header p { }
<header>
<p> <!-- μ ν -->
<span>
<p> <!-- !!μ ν!! -->
</p>
</span>
</p>
<p> <!-- μ ν -->
<span>
<p> <!-- !!μ ν!! -->
</p>
</span>
</p>
</header>
π‘ νμ μ λ ν°
<section>
μμ λ€μ μλ μΈ κ°μ <p>
μμλ₯Ό λͺ¨λ μ νν©λλ€.μμ
section ~ p { }
<header>
<section></section>
<p></p> <!-- μ ν -->
<p></p> <!-- μ ν -->
<p></p> <!-- μ ν -->
</header>
π‘ μΈμ νμ μ λ ν°
<section>
μμ λ€μ μλ μΈ κ°μ <p>
μμ μ€ μ²« λ²μ§Έ <p>
μμλ₯Ό μ νν©λλ€.μμ
section + p { }
<header>
<section></section>
<p></p> <!-- μ ν -->
<p></p>
<p></p>
</header>
CSS selector
CSS selectorλ₯Ό κ²μμΌλ‘ λ°°μΈ μ μλ μ¬μ΄νΈ
https://flukeout.github.io/
νμ€ν μ
λ ν°λ λ§μ΄ λ³΄κ³ , μ¨λ³΄κ³ , λ°°μμΌ ν κ² κ°λ€.
ν΄μ¦λ₯Ό νλ©° μ΄λ μ λ ꡬλ³μ ν μ μμ§λ§ CSS λλ κ²μμ μ§ννκΈ°μ μμ§ λΆμ‘±ν μ μ΄ λ§λ€.
μ¬ν κ³Όμ λ€μ μ΄λ €μνλ λ― μΆμλ°... μ‘°κΈ λ μ§μ€ν΄μ μ΄ν΄νλλ‘ νμ.