CSS Basics

Table of Contents

  • CSS μ •μ˜ 방법 / μ„ νƒμž /속성 μ„ μ–Έ

  • μ˜μ‚¬ 클래슀 (pseudo class)

  • λ―Έλ””μ–΄ 쿼리

  • 상속 및 μš°μ„ μˆœμœ„ -> μ΄λŸ¬λ‹ 였λ₯˜ 있음 주의!

Why CSS (Cascading Style Sheets) ?

  • HTML은 λ¬Έμ„œμ˜ ꡬ쑰화 (Markup)

  • CSS 은 μŠ€νƒ€μΌμ„ μ •μ˜ν•œλ‹€

CSS κΈ°λ³Έ μ‚¬μš©λ²•

h2 {
 color: blue;
 font-size: 20px;
}
  • h2 => Selector

  • color => Property

  • blue => Value

CSS μ •μ˜λ°©λ²•

  1. In-line Styling

    <div style="color: blue; font-size: 100px;">
       Inline CSS example! 
    </div>
    • ν•΄λ‹Ή tag에 직접 style 속성을 ν™œμš©

  2. λ‚΄λΆ€ μ°Έμ‘° (embedding)

    <head>
        <title> CSS Tutorial </title>
        <style>
            h1 {
              color: blue;
                font-size: 100px;
            }
        </style>
    </head>
    • HTML file 내에 <style> tag 내에 지정

  3. μ™ΈλΆ€ μ°Έμ‘° (link file)

    float.html

    <head>
        <style>
            <link rel="stylesheet" href="float.css">
        </style>
    </head>
    <body>
        <div id="link_it">CSS sample </div>
    </body>

    float.css

    #link_it {
        background-color: black;
        color: white;
    }

μ–΄λ–€ CSS μ •μ˜ 방법이 μ˜³μ„κΉŒ?

  • μ™ΈλΆ€μ°Έμ‘°λ₯Ό ν•˜λŠ” 것이 λ°˜λ³΅λ˜λŠ” μ½”λ“œλ₯Ό 쀄일 수 μžˆλ‹€!

CSS Selector

HTML λ¬Έμ„œμ— νŠΉμ •ν•œ μš”μ†Œλ₯Ό μ„ νƒν•˜μ—¬ μŠ€νƒ€μΌλ§ ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ μ„ νƒμž λΌλŠ” κ°œλ…μ΄ ν•„μš”ν•˜λ‹€

  • 기초 μ„ νƒμž

  • κ³ κΈ‰ μ„ νƒμž

    • μžμ† μ„ νƒμž / 직계 μžμ† μ„ νƒμž

    • ν˜•μ œ / μΈμ ‘ν˜•μ œ μ„ νƒμž, 전체 μ„ νƒμž

  • μ˜μ‚¬ 클래슀 (pseudo class)

    • link, 동적 μ˜μ‚¬ 클래슀

    • ꡬ쑰적 μ˜μ‚¬ 클래슀

    • 기타 μ˜μ‚¬ 클래슀, μ˜μ‚¬ μ•¨λ¦¬λ¨ΌνŠΈ

CSS Tip

: λ˜λŠ” 것 vs ν•˜λ©΄ μ•ˆλ˜λŠ” 것을 잘 κ΅¬λΆ„ν•˜κΈ°

CSS 상속

  • 속성 μ€‘μ—λŠ” 상속 λ˜λŠ”κ²ƒκ³Ό 상속 μ•ŠλŠ” 것이 μžˆλ‹€

  • 상속 λ˜λŠ” 것

    • Text κ΄€λ ¨ μš”μ†Œ (front, color, text-align, opacity, visibility)

  • 상속 λ˜μ§€ μ•ŠλŠ” 것

    • `Box model κ΄€λ ¨ μš”μ†Œ (width, height, padding, border, box-sizing, display)

    • position κ΄€λ ¨ μš”μ†Œ (position, top/right/bottom/left, z-index)

+ CSS Inheritance from MDN

  • In CSS, inheritance controls what happens when no value is specified for a property on an element. Refer to any CSS property definition to see whether a specific property inherits by default ("Inherited: yes") or not ("Inherited: no").

CSS 적용 μš°μ„ μˆœμœ„ (Cascading order)

  1. μ€‘μš”λ„ (Importance) - μ‚¬μš©μ‹œ 주의 (μ™œλƒλ©΄ μ΅œκ°•!!)

    • important

      • vendor, bootstrap λ“± λ‚΄κ°€ μž‘μ„±ν•˜μ§€ μ•Šκ³  μ™ΈλΆ€μ—μ„œ λ°›μ•„μ˜¨ CSSλ‚˜ JavaScript 기반의 λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ μ‚¬μš©ν•  μ‹œ μš°μ„ μˆœμœ„λ₯Ό μ£ΌκΈ° μœ„ν•΄ overriding ν•  λ•Œ μ‚¬μš©

      • κ·Έ μ™Έμ—λŠ” 잘 쓰지 μ•ŠλŠ”λ‹€ (λ„ˆλ¬΄ κ°•λ ₯ν•΄μ„œ!)

h3 {
 color: violet !important
}

  1. μš°μ„  μˆœμœ„ (Specificity)

    • in-line / id μ„ νƒμž / class μ„ νƒμž / 속성 μ„ νƒμž, Pseudo-class / μš”μ†Œ μ„ νƒμž

  2. Source code μˆœμ„œ

    • λ‚˜μ€‘μ— μ •μ˜λœ 것이 더 μš°μ„ μˆœμœ„λ₯Ό κ°–λŠ”λ‹€!!!

ν¬κΈ°λ‹¨μœ„ (μƒλŒ€)

  • px

  • %

  • em

    • λ°°μˆ˜λ‹¨μœ„

    • μš”μ†Œμ— μ§€μ •λœ size에 μƒλŒ€μ μΈ sizeλ₯Ό 가짐

  • rem

    • μ΅œμƒμœ„ μš”μ†Œ(HTML)의 μ‚¬μ΄μ¦ˆλ₯Ό 기순으둜 배수 λ‹¨μœ„λ₯Ό 가짐

  • viewport κΈ°μ€€ λ‹¨μœ„

    • vw, vh, vmin, vmax

em vs rem

  • em

    • μžκΈ°κ°€ 갖을 수 μžˆλŠ” 크기의 배수

    • 상속을 λ°›μ•„μ„œ κ·Έ μˆ˜μ— λŒ€ν•΄ em

    • 24px μΌλ•Œ 1.5em == 36px

  • rem

    • root em

      • rootλ₯Ό κΈ°μ€€μœΌλ‘œ 함 (browser κΈ°μ€€!)

    • 기본적으둜 browser pixcel size == 16px

    • 1.5 rem == 24px

색상 λ‹¨μœ„

  • HEX (00~ff)

    • #ffffff

  • RGB (0, 255)

    • rgb(0,0,0)

  • RGBA

    • rgba(0, 0, 0, 0.5)

Box model

λͺ¨λ“  html은 box model을 κ°–κ³ μžˆμŒ

  • μƒν•˜μ’Œμš°

  • μƒν•˜ / 쒌우

  • 상 / 쒌우 / ν•˜

  • 상 / 우 / ν•˜ / 쒌

box-sizing

  • 기본적인 λͺ¨λ“  μš”μ†Œμ˜ box-sizing은 content-box (browser default κ°’μž„)

    • padding을 μ œμ™Έν•œ 순수 contents μ˜μ—­λ§Œμ„ box둜 지정

  • λ‹€λ§Œ, μš°λ¦¬κ°€ 일반적으둜 μ˜μ—­μ„ λ³Ό λ•ŒλŠ” padding을 ν¬ν•¨ν•œ borderκΉŒμ§€μ˜ λ„ˆλΉ„λ₯Ό 100px둜 λ³΄λŠ” 것을 원함

    • κ·Έ 경우 box-sizing을 border-box둜 μ„€μ •ν•œλ‹€!

Tip!

box-sizing: border-box;

Margin Collapsing

: 인접 ν˜•μ œ μš”μ†Œκ°„μ˜ margin이 κ²Ήμ³μ„œ λ³΄μž„

display inline vs block

  • block level μš”μ†Œμ™€ inline level μš”μ†Œ ꡬ뢄 (HTML 4.1κΉŒμ§€λ§Œ)

  • λŒ€ν‘œμ μΈ block level μš”μ†Œ

    • div

    • ul / ol / li

    • p

    • hr

    • form

  • λŒ€ν‘œμ μΈ inline level μš”μ†Œ

    • span

    • a

    • img

    • input, label

    • b, em i, strong

1. display: block

  • 쀄 λ°”κΏˆμ΄ μΌμ–΄λ‚˜λŠ” μš”μ†Œ

  • ν™”λ©΄ 크기 μ „μ²΄μ˜ κ°€λ‘œν­μ„ μ°¨μ§€ν•œλ‹€

    • 기본적으둜 ν™”λ©΄ λ„ˆλΉ„μ˜ 100%λ₯Ό 가짐

    • λ„ˆλΉ„λ₯Ό κ°€μ§ˆ 수 μ—†λ‹€λ©΄, μžλ™μœΌλ‘œ margin을 μ€˜λ²„λ¦Ό

    • κ·Έλž˜μ„œ 쀄 λ°”κΏˆμ΄ 일어남!

  • block level μš”μ†Œ μ•ˆμ— inline level μš”μ†Œκ°€ λ“€μ–΄κ°ˆ 수 있음

2. display: inline

  • 쀄 λ°”κΏˆμ΄ μΌμ–΄λ‚˜μ§€ μ•ŠλŠ” ν–‰μ˜ 일뢀 μš”μ†Œ

  • content λ„ˆλΉ„λ§ŒνΌ κ°€λ‘œν­μ„ μ°¨μ§€ν•œλ‹€

  • width, height, margin-top, margin-bottom을 지정할 수 μ—†λ‹€

  • μƒν•˜μ—¬λ°±μ€ line-height둜 μ§€μ •ν•œλ‹€

3. inline-block

  • blockκ³Ό inline level μš”μ†Œμ˜ νŠΉμ§•μ„ λͺ¨λ‘ κ°–λŠ”λ‹€

  • inline처럼 ν•œ 쀄에 ν‘œμ‹œν•œλ‹€

  • block 처럼 width, height, margin 속성을 λͺ¨λ‘ 지정할 수 μžˆλ‹€

속성에 λ”°λ₯Έ μˆ˜ν‰ μ •λ ¬

  • inline μš”μ†ŒλŠ” text-align 속성을 μ“Έ 수 있음

  • block μš”μ†ŒλŠ” margin 을 κΈ°μ€€μœΌλ‘œ 정렬해야함

Last updated

Was this helpful?