3.CSS in JS
CSS in JS λ
CSS in JSλ κΈ°μ‘΄ CSS νμΌμ μ¬μ©νλ λμ μλ°μ€ν¬λ¦½νΈ νμΌ λ΄μμ μλ°μ€ν¬λ¦½νΈ ꡬ문μ μ¬μ©νμ¬ CSS μ€νμΌμ μμ±νλ λ°©μμ λ§νλ€. κ°λ°μκ° μμ μ€μΈ μ»΄ν¬λνΈλ λͺ¨λ λ΄μ CSS μ€νμΌμ μΊ‘μνν μ μμ΄ λͺ¨λμ±κ³Ό νΈμμ±μ λμΌ μ μλ μ κ·Ό λ°©μμ΄λ€.
CSSμ μλ°μ€ν¬λ¦½νΈμ ν΅ν©(Integration of CSS and JavaScript): CSS in JSλ₯Ό μ¬μ©νλ©΄ μΌλ°μ μΌλ‘ κ΄λ ¨ μ»΄ν¬λνΈ λ‘μ§μ΄ μλ λμΌν νμΌ λλ λͺ¨λ λ΄μμ CSS μ€νμΌμ΄ μλ°μ€ν¬λ¦½νΈ μ½λμ μ§μ μμ±λλ€. μ΄λ¬ν ν΅ν©μ ν΅ν΄ λ³λμ CSS νμΌμ΄ νμνμ§ μμΌλ©° λ³΄λ€ μΌκ΄λ κ°λ° νκ²½μ μ 곡νλ€.
λμ μ€νμΌλ§(Dynamic Styling): CSS in JSλ μλ°μ€ν¬λ¦½νΈ λ³μ, 쑰건, ν¨μλ₯Ό CSS μ€νμΌ λ΄μμ μ¬μ©ν μ μλλ‘ νμ©νμ¬ λμ μ€νμΌλ§μ κ°λ₯νκ² νλ€. μ΄λ¬ν μ μ°μ± λλΆμ μ¬μ©μ μνΈ μμ©, μ»΄ν¬λνΈ μν λλ κΈ°ν μμΈμ λ°λΌ λ³κ²½λ μ μλ μ€νμΌμ λ§λ€ μ μλ€. λν λ€μν νλ©΄ ν¬κΈ°μ νκ²½μ λ§κ² μ‘°μ λλ λ°μν λμμΈμ μ½κ² λ§λ€ μ μλ€.
λ²μ μ§μ μ€νμΌ(Scoped Styles): CSS in JSλ μΌλ°μ μΌλ‘ μ€νμΌμ΄ μ μλ μ»΄ν¬λνΈ λλ λͺ¨λ λ΄μμ μ€νμΌμ μΊ‘μννλ λ©μ»€λμ¦μ μ 곡νλ€. μ¦, ν μ»΄ν¬λνΈμ μ μλ μ€νμΌμ΄ λ€λ₯Έ μ»΄ν¬λνΈμ μ€νμΌμ μν₯μ λ―ΈμΉμ§ μμΌλ―λ‘ λͺ λͺ μΆ©λκ³Ό μ€νμΌ μ μΆμ κ°λ₯μ±μ΄ μ€μ΄λλλ€.
λͺ¨λμ± λ° μ¬μ¬μ©μ±(Modularity and Reusability): CSS in JSλ μ»΄ν¬λνΈκ° μ€νμΌμ ν¬ν¨ν μ μλλ‘ νμ©νμ¬ λͺ¨λμ±κ³Ό μ¬μ¬μ©μ±μ μ΄μ§νλ€. λ°λΌμ μ»΄ν¬λνΈ λ‘μ§κ³Ό ν¨κ» μ€νμΌμ λ μ½κ² κ΄λ¦¬νκ³ μ μ§ κ΄λ¦¬ν μ μμ΄ μ¬μ©νμ§ μκ±°λ μΆ©λνλ μ€νμΌμ΄ λ°μν κ°λ₯μ±μ΄ μ€μ΄λλλ€. λν μ ν리μΌμ΄μ μ μ¬λ¬ λΆλΆμμ μ»΄ν¬λνΈμ κ΄λ ¨ μ€νμΌμ μ½κ² μ¬μ¬μ©ν μ μλ€.
μ±λ₯ μ΅μ ν(Performance Optimization): JS λꡬμ CSSλ λΉλ νλ‘μΈμ€ μ€μ μ΅μ νλ₯Ό μννμ¬ λΆνμν μ€νμΌμ μ κ±°νκ³ μμ±λ CSSμ μ 체 ν¬κΈ°λ₯Ό μ€μ΄λ κ²½μ°κ° λ§λ€. μ΄λ κ² νλ©΄ λΈλΌμ°μ μμ λ‘λνκ³ κ΅¬λ¬Έ λΆμν΄μΌ νλ CSSμ μμ μ€μ¬ μ ν리μΌμ΄μ μ μ±λ₯μ κ°μ νλ λ° λμμ΄ λλ€.
ν΄λ§ λ° λΌμ΄λΈλ¬λ¦¬(Tooling and Libraries): JS λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬μλ κ°κ° κ³ μ ν ꡬ문과 κΈ°λ₯μ κ°μΆ λ€μν CSSκ° λ±μ₯νλ€. μΈκΈ° μλ μ΅μ μΌλ‘λ μ€νμΌ μ»΄ν¬λνΈ, μ΄λͺ¨μ , CSS λͺ¨λ λ±μ΄ μλ€. μ΄λ¬ν λꡬλ λ€μν μλ°μ€ν¬λ¦½νΈ νλ μμν¬ λ° λΌμ΄λΈλ¬λ¦¬μ CSS in JSλ₯Ό μ½κ² ν΅ν©ν μ μλ API λ° μ νΈλ¦¬ν°λ₯Ό μ 곡νλ€.
CSS κΈ°λ₯ λ° νΈνμ±(CSS Features and Compatibility): JS λΌμ΄λΈλ¬λ¦¬μ CSSλ μ νμ, μμ¬ ν΄λμ€, μ λλ©μ΄μ , λ―Έλμ΄ μΏΌλ¦¬, 곡κΈμ 체 μ λμ¬ λ± λλΆλΆμ CSS κΈ°λ₯μ μ§μνκΈ° μν΄ λ Έλ ₯νλ€. νμ§λ§ μΌλΆ CSS κΈ°λ₯μ λ€λ₯΄κ² μ²λ¦¬λκ±°λ μΆκ° ν΄λ¦¬νμ΄ νμν μ μμΌλ―λ‘ λ€μν λΈλΌμ°μ μ νκ²½μμ JS μ루μ μ CSS νΈνμ±μ κ³ λ €νλ κ²μ΄ μ€μνλ€.
κΈλ‘λ² μ€νμΌ μ€μΌ, νΉμ μ± μΆ©λ, μΊ‘μν λΆμ‘± λ± κΈ°μ‘΄ CSS κ°λ°κ³Ό κ΄λ ¨λ λͺ κ°μ§ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€λ μ λλ¬Έμ μ΅κ·Ό λͺ λ λμ CSS in JSκ° μΈκΈ°λ₯Ό μ»κ³ μλ€. κ·Έλ¬λ JSμμ CSSλ₯Ό μ±νν μ§ μ¬λΆλ νμ μΉμλ, ν΄λ§ μ§μ, μ±λ₯ κ³ λ € μ¬ν λ±μ μμλ₯Ό κ³ λ €νμ¬ νλ‘μ νΈμ ꡬ체μ μΈ νμμ μꡬ μ¬νμ κΈ°λ°μΌλ‘ νκ°ν΄μΌ νλ€.
CSS
CSSλ μΉ κ°λ°μκ° μΉ νμ΄μ§μ μκ°μ ννμ μ μ΄ν μ μλ κ°λ ₯ν λꡬμ΄λ€. λ€μν μ€νμΌ μ΅μ κ³Ό μ μ°μ±, μμμ λͺ¨μμ μ μ΄ν μ μλ κΈ°λ₯μ μ 곡νλ€. μΉ κ°λ°μλ ꡬ쑰μ μ½ν μΈ (HTML)λ₯Ό νλ μ ν μ΄μ (CSS)μμ λΆλ¦¬νμ¬ μκ°μ μΌλ‘ 맀λ ₯μ μ΄κ³ 체κ³μ μΌλ‘ ꡬμ±λ μΉμ¬μ΄νΈλ₯Ό λ§λ€ μ μλ€.
μ νμ
μ νμλ νΉμ HTML μμ λλ μμ κ·Έλ£Ήμ μ€νμΌμ μ μ©νκ³ νκ²ν ν μ μλ CSSμ κΈ°λ³Έ κ°λ μ΄λ€. μ νμλ μΉ νμ΄μ§μμ μ΄λ€ μμκ° κ΄λ ¨ CSS κ·μΉμ μν₯μ λ°μμ§ κ²°μ νλ€. CSSλ μμμ μ ν, μμ±, ν΄λμ€ μ΄λ¦, ID λ±μ κΈ°μ€μΌλ‘ μμλ₯Ό μΌμΉμν€λ λ€μν μ νμλ₯Ό μ 곡νλ€.
νκ·Έ μ νμ(Tag Selectors):
div
,p
λλh1
κ³Ό κ°μ HTML νκ·Έ μ΄λ¦μ κΈ°μ€μΌλ‘ μμλ₯Ό μ ννλ€.ν΄λμ€ μ νμ(Class Selectors):
.my-class
μ κ°μ΄ ν΄λμ€ μ΄λ¦ λ€μ μ (.)μ μ¬μ©νμ¬ ν λΉλ ν΄λμ€ μ΄λ¦μ κΈ°μ€μΌλ‘ μμλ₯Ό μ ννλ€.ID μ νμ(ID Selectors): ν΄μ(#) λ€μ ID μ΄λ¦(μ:
#my-id
)μ μ¬μ©νμ¬ νμ΄μ§μμ IDλ‘ κ³ μ ν μμλ₯Ό μ ννλ€.μμ± μ νμ(Attribute Selectors): μ νμ΄ "ν μ€νΈ"μΈ λͺ¨λ μ λ ₯ μμλ₯Ό μ ννλ €λ©΄
[type="text"]
μ κ°μ΄ μμ±μ κΈ°μ€μΌλ‘ μμλ₯Ό μ ννλ€.μμ¬ ν΄λμ€(Pseudo-Classes):
:hover
,:active
λλ:nth-child()
μ κ°μ΄ λ¬Έμ λ΄ μν λλ μμΉμ λ°λΌ μμλ₯Ό μ ννλ€.κ²°ν©κΈ°(Combinators): μ¬λ¬ μ νμλ₯Ό κ²°ν©νμ¬ νΉμ μμλ₯Ό λμμΌλ‘ μ§μ νλ€. μΌλ°μ μΈ κ²°ν©κΈ°μλ νμ μ νμ(곡백), νμ μ νμ(>), μΈμ ν νμ μ νμ(+) λ° μΌλ° νμ μ νμ(~)κ° μλ€.
λ°μ€λͺ¨λΈ
λ°μ€ λͺ¨λΈμ μ½ν μΈ , ν¨λ©, ν λ리 λ° μ¬λ°±μ κ³ λ €νμ¬ μΉ νμ΄μ§μμ μμκ° λ λλ§λλ λ°©μμ μ€λͺ νλ CSSμ ν΅μ¬ κ°λ μ΄λ€. μμ λͺ¨λΈμ κ° μμλ₯Ό ν¬κΈ°μ κ°κ²©μ μν₯μ μ£Όλ λ€μν μμ±μ κ°μ§ μ§μ¬κ°ν μμλ‘ μ·¨κΈνλ€.
μ½ν μΈ (Contents): ν μ€νΈ, μ΄λ―Έμ§ λλ κΈ°ν HTML μμμ κ°μ μμμ μ€μ μ½ν μΈ μ΄λ€.
ν¨λ©(Padding): μ½ν μΈ μ μμ ν λ리 μ¬μ΄μ 곡κ°μ΄λ€. ν¨λ©μ ν¨λ© μλ¨, ν¨λ© νλ¨, ν¨λ© μ€λ₯Έμͺ½, ν¨λ© μΌμͺ½ λλ ν¨λ©(padding-top, padding-bottom, padding-right, padding-left or padding)κ³Ό κ°μ μμ±μ μ¬μ©νμ¬ μ§μ ν μ μλ€.
ν λ리(Border): μμμ ν¨λ©κ³Ό μ½ν μΈ λ₯Ό λλ¬μΈλ μ μ΄λ€. ν λ리λ ν λ리 λλΉ, ν λ리 μ€νμΌ, ν λ리 μμ(border-width, border-style, border-color)κ³Ό κ°μ μμ±μ μ¬μ©νμ¬ μ€νμΌκ³Ό ν¬κΈ°λ₯Ό μ§μ ν μ μλ€.
μ¬λ°±(Margin): μ¬λ°±: μμμ ν λ리 λ°κΉ₯μͺ½ 곡κ°μΌλ‘ μΈμ ν μμ μ¬μ΄μ 곡κ°μ λ§λλλ€. μ¬λ°±μ μ¬λ°± μλ¨, μ¬λ°± μΌμͺ½, μ¬λ°± μ€λ₯Έμͺ½, μ¬λ°± νλ¨ λλ μ¬λ°± (margin-top, margin-bottom, margin-right, margin-left or margin)κ³Ό κ°μ μμ±μ μ¬μ©νμ¬ μ§μ ν μ μλ€.
media query
λ―Έλμ΄ μΏΌλ¦¬λ νλ©΄ ν¬κΈ°, ν΄μλ, λ°©ν₯ λ± μ¬μ©μμ κΈ°κΈ°λ λ·°ν¬νΈμ νΉμ±μ λ°λΌ λ€μν μ€νμΌμ μ μ©ν μ μλ CSS κΈ°λ₯μ΄λ€. λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νλ©΄ λ€μν μ₯μΉμ νλ©΄ ν¬κΈ°μ λ§κ² λ μ΄μμκ³Ό μ€νμΌμ μ‘°μ νμ¬ λ°μν μΉ λμμΈμ ꡬνν μ μλ€.
λ―Έλμ΄ μ ν(Media Type): λ―Έλμ΄ μΏΌλ¦¬λ μ»΄ν¨ν° νλ©΄μ κ²½μ° νλ©΄(
screen
), μΈμ 맀체μ κ²½μ° μΈμ(print
), μ€ν¬λ¦° 리λμ κ²½μ° μμ±(speech
) λ± λ€μν λ―Έλμ΄ μ νμ νκΉν ν μ μλ€.λ―Έλμ΄ κΈ°λ₯(Media Features): λ―Έλμ΄ μΏΌλ¦¬λ λλΉ, λμ΄, λ°©ν₯, μ’ ν‘λΉ, μμ λ± λ€μν κΈ°λ₯μ μ¬μ©νμ¬ νκ² λλ°μ΄μ€μ μμ±μ κ²°μ ν μ μλ€. μλ₯Ό λ€μ΄ @media(max-width: 768px)λ λ·°ν¬νΈ λλΉκ° 768ν½μ μ΄νμΌ λ μ€νμΌμ μ μ©νλ€.
λ°μν λμμΈ(Responsive Design): λ―Έλμ΄ μΏΌλ¦¬λ μΌλ°μ μΌλ‘ λ°μν λμμΈμ λ§λ€κΈ° μν΄ CSS 그리λ λ° Flexboxμ ν¨κ» μ¬μ©λλ€. νλ©΄ ν¬κΈ°λ κΈ°κΈ° λ°©ν₯μ λ°λΌ μλ‘ λ€λ₯Έ μ€νμΌμ μ μνλ©΄ μΉ νμ΄μ§μ λ μ΄μμκ³Ό νλ μ ν μ΄μ μ΄ μ΅μ μ μ¬μ©μ κ²½νμ μ 곡νλλ‘ μ‘°μ ν μ μλ€.
Flexbox
νλ μ€λ°μ€: νλ μλΈ λ°μ€ λ μ΄μμμ μ€μλ§μΈ νλ μ€λ°μ€λ μμλ₯Ό νμ΄λ μ΄λ‘ λ°°μ΄ν μ μλ 1μ°¨μ λ μ΄μμ μμ€ν μ΄λ€. 곡κ°μ λΆλ°°νκ³ , μμλ₯Ό μ λ ¬νκ³ , ν¬κΈ°μ μμλ₯Ό μ μ΄ν μ μλ μ μ°νκ³ λμ μΈ λ°©λ²μ μ 곡νλ€. Flexboxμ μ£Όμ κΈ°λ₯ λ° κ°λ μ λ€μκ³Ό κ°λ€:
νλ μ€ μ»¨ν μ΄λ(Flex Container): νλ μ€ νλͺ©μ ν¬ν¨νλ μμ μμμ΄λ€. 컨ν μ΄λμ CSS μμ±
display: flex
λλdisplay: inline-flex
λ₯Ό μ μ©νλ©΄ νλ μ€ μ»¨ν μ΄λκ° λλ€.νλ μ€ νλͺ©(Flex Items): νλ μ€ λ μ΄μμμ μν₯μ λ°λ νλ μ€ μ»¨ν μ΄λ λ΄μ νμ μμμ΄λ€. νλ μ€ νλͺ©μ 컨ν μ΄λ λ΄μ μ¬μ© κ°λ₯ν 곡κ°μ λ§κ² ν¬κΈ°λ₯Ό λ리거λ μ€μ΄κ±°λ κ³ μ ν μ μλ€.
μ£ΌμΆ λ° κ΅μ°¨ μΆ(Main Axis and Cross Axis): νλ μ€λ°μ€λ μ£ΌμΆκ³Ό κ΅μ°¨ μΆμ λ μΆμ λ°λΌ μλνλ€. μ£ΌμΆμ ν(μΌμͺ½μμ μ€λ₯Έμͺ½)(row (left-to-right)) λλ μ΄(μμμ μλλ‘)(column (top-to-bottom)λ‘ μ€μ ν μ μλ νλ μ€ λ°©ν₯(flex-direction) μμ±μ μν΄ κ²°μ λλ€. μμμΆμ μ£ΌμΆμ μμ§μ΄λ€.
μ μ°μ±(Flexibility): νλ μ€λ°μ€λ₯Ό μ¬μ©νλ©΄ μ¬μ© κ°λ₯ν 곡κ°μ λ°λΌ νλ μ€ νλͺ©μ λ리거λ μ€μΌ μ μλ€. νλ μ€ μ±μ₯(flex-grow), νλ μ€ μΆμ(flex-shrink) λ° νλ μ€ κΈ°μ€(flex-basis) μμ±μ νλ μ€ νλͺ©μ ν¬κΈ°λ₯Ό μ‘°μ νλ λ°©λ²μ μ μ΄νλ€.
μ λ ¬ λ° μ λΉν(Alignment and Justification): Flexboxλ μ½ν μΈ λ§μΆ€(justify-content) λ° νλͺ© μ λ ¬(align-itemsκ³Ό κ°μ μμ±μ μ 곡νμ¬ μ£ΌμΆ λ° κ΅μ°¨ μΆμ λ°λΌ νλ μ€ νλͺ©μ μ λ ¬ λ° λΆν¬λ₯Ό μ μ΄νλ€. μ΄λ₯Ό ν΅ν΄ νλ μ€ μ»¨ν μ΄λ λ΄μμ μμλ₯Ό μ½κ² μ€μμ λ°°μΉνκ³ κ°κ²©μ μ‘°μ νκ³ μ λ ¬ν μ μλ€.
μ΄λ²μμΌλ§λ‘ CSS Flexλ₯Ό μ΅ν보μ
Grid
μΌλ°μ μΌλ‘ CSS 그리λλΌκ³ μλ €μ§ CSS 그리λ λ μ΄μμμ 볡μ‘ν 그리λ κΈ°λ° λ μ΄μμμ λ§λ€ μ μλ 2μ°¨μ λ μ΄μμ μμ€ν μ΄λ€. ν, μ΄, 그리λ λ΄ μμμ μ λ ¬ λ° λ°°μΉλ₯Ό μ λ°νκ² μ μ΄ν μ μλ€.
그리λ 컨ν μ΄λ(Grid Container): 그리λ νλͺ©μ ν¬ν¨νλ λΆλͺ¨ μμμ΄λ€. 컨ν μ΄λμ CSS μμ±
display: grid
λ₯Ό μ μ©νλ©΄ 그리λ 컨ν μ΄λκ° λλ€.그리λ νλͺ©(Grid Items): 그리λ 컨ν μ΄λ λ΄μ μμ μμμ΄λ€. 그리λ νλͺ©μ μ κΈ°λ° λ°°μΉ λλ 그리λ μμ λ°°μΉλ₯Ό μ¬μ©νμ¬ κ·Έλ¦¬λ λ΄μ λ°°μΉλλ€.
그리λ νΈλ(Grid Tracks:): 그리λλ₯Ό ꡬμ±νλ κ°λ‘ λ° μΈλ‘ νΈλμ΄λ€. νΈλμ 그리λ ν νλ¦Ώ μ΄(grid-template-columns) λ° κ·Έλ¦¬λ ν νλ¦Ώ ν(grid-template-rows) μμ±μ μ¬μ©νμ¬ λͺ μμ μΌλ‘ μ μνκ±°λ 그리λ νλͺ©μ λ°°μΉνμ¬ μμμ μΌλ‘ λ§λ€ μ μλ€.
그리λ μ (Grid Lines): 그리λλ₯Ό νκ³Ό μ΄λ‘ λλλ μ μ΄λ€. μ΄ μ μ μ°Έμ‘°νμ¬ κ·Έλ¦¬λ νλͺ©μ λ°°μΉνκ³ μ λ ¬ν μ μλ€.
그리λ μμ(Grid Areas): 그리λ νλͺ©μ ν λΉν μ μλ 그리λ λ΄μ λͺ λͺ λ μμμ΄λ€. 그리λ-ν νλ¦Ώ-μμ(grid-template-areas) μμ±μ μ¬μ©νμ¬ κ·Έλ¦¬λ μμμ μ§μ νλ©΄ 그리λ λ΄μμ 그리λ νλͺ©μ μ½κ² λ°°μΉνκ³ μ¬μ λ ¬ν μ μλ€.
μ λ ¬ λ° κ°κ²©(Alignment and Spacing): CSS 그리λμλ 그리λ μ λ΄μμ 그리λ νλͺ©μ μ λ ¬ λ° κ°κ²©μ μ μ΄ν μ μλ justify-items, align-items, justify-content, align-contentμ κ°μ μμ±μ΄ μ 곡λλ€. μ΄λ₯Ό ν΅ν΄ μμμ μμΉ λ° λ°°μ΄μ μ λ°νκ² μ μ΄ν μ μλ€.
λ°μν λμμΈ(Responsive Design): CSS 그리λλ₯Ό λ―Έλμ΄ μΏΌλ¦¬μ κ²°ν©νμ¬ λ€μν νλ©΄ ν¬κΈ°μ λ°©ν₯μ λ§κ² μ‘°μ λλ λ°μν λ μ΄μμμ λ§λ€ μ μλ€. 그리λ ν νλ¦Ώμ μμ νκ³ νλͺ© λ°°μΉλ₯Ό μ‘°μ νμ¬ μ¬μ© κ°λ₯ν 곡κ°μ λ°λΌ λ€μν λ μ΄μμμ λ§λ€ μ μλ€.
Last updated