πŸ’›[λΆ€μŠ€νŠΈμ½”μŠ€_μ›Ή UI 개발] 4. CSS μ΄ν•΄ν•˜κΈ°

πŸ‘ΎΒ·2021λ…„ 1μ›” 22일
0

HTML & CSS

λͺ©λ‘ 보기
4/20

CSS

Cascading Style Sheets

Cascading : μ—°μ†μ μœΌλ‘œ κ³„μ†λ˜λŠ”
Style Sheets: μŠ€νƒ€μΌ κ·œμΉ™μ„ μ •μ˜ν•˜λŠ”κ²ƒ

  • CSSλŠ” HTML을 κΎΈλ©°μ£ΌλŠ” μ–Έμ–΄
  • HTML이 μ›ΉνŽ˜μ΄μ§€μ˜ 정보λ₯Ό ν‘œν˜„, CSSλŠ” HTML을 보기 μ’‹κ²Œ λ””μžμΈν•˜λŠ” ν‘œν˜„μš© μ–Έμ–΄
  • CSSλŠ” λ§ˆν¬μ—… μ–Έμ–΄μ™€λŠ” λ…λ¦½λœ λ‹€λ₯Έ μ–Έμ–΄
  • λ§ˆν¬μ—… λ¬Έμ„œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ CSSλŠ” λ¬΄μš©μ§€λ¬Ό
    -> CSSκ°€ λ§ˆν¬μ—…μ„ κΎΈλ©°μ£ΌλŠ” ν‘œν˜„μš© 언어인데 ν‘œν˜„ν•  λŒ€μƒμΈ contentsκ°€ μ—†κΈ° λ•Œλ¬Έ
  • http://csszengarden.com
    css λ””μžμΈμ˜ 아름닀움을 λ³΄μ—¬μ£ΌλŠ” μ‚¬μ΄νŠΈ

CSS 문법과 적용

CSS문법도 정해진 속성듀과 그에 ν•΄λ‹Ήν•˜λŠ” κ°’μ˜ 집합이닀

h1 { color: yellow; font-size:2em; }

CSSλŠ” HTML μš”μ†Œλ₯Ό κΎΈλ©°μ£ΌλŠ” μ—­ν• 
1. μ–΄λŠ μš”μ†Œλ₯Ό 꾸밀건지 선택할 μš”μ†Œ ν•„μš”
2. κ·Έ μš”μ†Œλ₯Ό μ–΄λ–»κ²Œ 꾸밀건지 μŠ€νƒ€μΌμ˜ λ‚΄μš© ν•„μš”

  • h1 : μ–΄λŠ μš”μ†Œλ₯Ό 꾸밀건지에 ν•΄λ‹Ήν•˜λŠ” μ„ νƒμž. selector
  • {λ‚΄μš©} : μ–΄λ–»κ²Œ 꾸밀건지에 λŒ€ν•œ λΆ€λΆ„. μ„ μ–ΈλΆ€
    • color : 속성 이름
    • yellow : 속성 κ°’
  • μ„ μ–Έ = 속성이름 + 속성 κ°’
  • 맨 λ§ˆμ§€λ§‰ μ„ μ–Έμ—λŠ” ; 뢙이지 μ•Šμ•„λ„ λ˜μ§€λ§Œ 많이 뢙인닀
  • μ„ νƒμž + μ„ μ–ΈλΆ€ = κ·œμΉ™ rule set
    CSSλŠ” μ—¬λŸ¬κ°œμ˜ rule set으둜 이루어져 μžˆλ‹€.

HTML 속성 attribute vs CSS 속성 property

μ™„μ „ λ‹€λ₯Έκ²ƒ. κ΅¬λΆ„ν•˜κΈ°

μ„ νƒμžμ™€ μ„ μ–ΈλΆ€ 사이에 κ°œν–‰ κ°€λŠ₯, μ„ μ–Έκ³Ό μ„ μ–Έ 사이에도 κ°œν–‰κ°€λŠ₯
속성λͺ…κ³Ό 속성값 μ‚¬μ΄λŠ” κ°œν–‰ν•˜λ©΄ μ•ˆλ¨

h1 
{
  color:yellow;
  font-size:2em;
}

css 주석

/**/

μ–΄λ–»κ²Œ μš”μ†Œμ— cssλ₯Ό μ μš©μ‹œν‚¬κΉŒ. css와 html을 μ–΄λ–»κ²Œ μ—°κ²°?


1. Inline

ν•΄λ‹Ή μš”μ†Œμ— 직접 μŠ€νƒ€μΌ 속성을 μ΄μš©ν•΄μ„œ κ·œμΉ™λ“€μ„ μ„ μ–Έν•˜λŠ”κ²ƒ

<div style="color:red;"> λ‚΄μš© </div>
  • ν•΄λ‹Ή μš”μ†Œμ— 직접 μ„ μ–Έν•˜κΈ° λ•Œλ¬Έμ— μ„ νƒμž ν•„μš”μ—†μŒ
  • μ„ μ–ΈλΆ€μ˜ λ‚΄μš©λ§Œ μŠ€νƒ€μΌ 속성값에 λ„£μ–΄μ€Œ
  • νŽ˜μ΄μ§€κ°€ κΈΈμ–΄μ§ˆμˆ˜λ‘ μˆ˜μ •ν•˜κΈ° μ–΄λ ΅λ‹€
    자주 μ‚¬μš©λ˜λŠ” 방법 μ•„λ‹˜
    인라인 μŠ€νƒ€μΌμ΄ ν•„μš”ν•œ κ²½μš°λŠ” λ”°λ‘œ 쑴재

2. Internal
<style> 
div {color: red;} 
</style>
  • style νƒœκ·Έλ₯Ό μ΄μš©ν•΄μ„œ μ…€λ ‰ν„°λ₯Ό μ΄μš©ν•œ 방법
  • styleνƒœκ·ΈλŠ” head νƒœκ·Έμ— 듀어감
    κ·Έ μ•ˆμ— μ…€λ ‰ν„°λ₯Ό ν¬ν•¨ν•œ λ£°μ…‹ μ „λΆ€λ₯Ό λ„£μœΌλ©΄ λœλ‹€
  • μŠ€νƒ€μΌμ΄ λ³€κ²½λ˜λ”λΌλ„ λ³€κ²½ν•˜κΈ° νŽΈν•˜λ‚˜ ν•œκ³„ 쑴재

-> μ‚¬μ΄νŠΈμ—λŠ” λ§Žμ€ νŽ˜μ΄μ§€κ°€ μžˆλŠ”λ° λ§Žμ€ νŽ˜μ΄μ§€μ— λ™μΌν•œ μŠ€νƒ€μΌ κ·œμΉ™μ„ μ μš©μ‹œν‚€κΈ° μœ„ν•΄μ„œλŠ” λͺ¨λ“  νŽ˜μ΄μ§€λ§ˆλ‹€ styleνƒœκ·Έλ₯Ό λ³΅μ‚¬ν•΄μ„œ 뢙여넣어야함
νŽ˜μ΄μ§€κ°€ 많고 μŠ€νƒ€μΌ κ·œμΉ™μ΄ 길어진닀면 μ–΄λ ΅λ‹€


3. External
<link rel="stylesheet" href="css/style.css">
  • μ™ΈλΆ€ μŠ€νƒ€μΌ μ‹œνŠΈ νŒŒμΌμ„ μ΄μš©ν•œ 방법
  • μŠ€νƒ€μΌκ·œμΉ™λ“€μ„ λ³„λ„μ˜ CSS파일(μ™ΈλΆ€νŒŒμΌ)을 λ§Œλ“€μ–΄μ„œ κ·Έ μ•ˆμ— λ„£λŠ” 방식
  • μ™ΈλΆ€νŒŒμΌμ˜ ν™•μž₯μžλŠ” css
  • CSS파일과 HTMLνŒŒμΌμ„ μ—°κ²°ν• λ•Œ μ‚¬μš©ν•˜λŠ” νƒœκ·Έκ°€ linkνƒœκ·Έ
  • headνƒœκ·Έ 내에 선언해야함
    • href 속성 : css파일의 경둜 적음
    • rel 속성 : μ—°κ²°λ˜λŠ” 파일이 html λ¬Έμ„œμ™€ μ–΄λ–€ 관계인지λ₯Ό λͺ…μ‹œ
      cssνŒŒμΌμ„ μ—°κ²°ν• λ•ŒλŠ” stylesheet
  • λ§Žμ€ νŽ˜μ΄μ§€κ°€ μžˆλ”λΌλ„ linkνƒœκ·Έλ§Œ λ³΅μ‚¬ν•΄μ„œ λ„£μ–΄μ£Όλ©΄ λͺ¨λ‘ λ™μΌν•œ μŠ€νƒ€μΌ 적용
  • μˆ˜μ •ν• λ•Œλ„ css파일만 μˆ˜μ •ν•˜λ©΄ λͺ¨λ‘ λ™μΌν•˜κ²Œ 반영됨
  • μ™ΈλΆ€ μŠ€νƒ€μΌ μ‹œνŠΈνŒŒμΌμ„ μ΄μš©ν•˜λ©΄ κ΄€λ¦¬ν•˜κΈ° μš©μ΄ν•˜κ³  μš©λŸ‰λ„ 적기 λ•Œλ¬Έμ— 이 방법이 주둜 μ‚¬μš©λ¨

4. Import
@import url("css/style.css");
  • μŠ€νƒ€μΌ λ‚΄μ—μ„œ λ‹€λ₯Έ μŠ€νƒ€μΌ μ‹œνŠΈ νŒŒμΌμ„ λΆˆλŸ¬μ˜€λŠ”κ²ƒ
  • styleνƒœκ·Έ μƒλ‹¨μ΄λ‚˜ μ™ΈλΆ€ μŠ€νƒ€μΌ μ‹œνŠΈ 파일 μ•ˆ 상단에 μ„ μ–Έ
  • μ„±λŠ₯이 쒋지 μ•ŠμœΌλ―€λ‘œ 거의 쓰이지 μ•ŠμŒ

μ„ νƒμž

완성도 μžˆλŠ” λ””μžμΈμ„ ν‘œν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ λ‚΄κ°€ μ›ν•˜λŠ” μš”μ†Œλ₯Ό 선택할 수 μžˆμ–΄μ•Όν•¨
cssμ—μ„œ μ„ νƒμžλŠ” μ€‘μš”ν•˜λ‹€!

1. μš”μ†Œ μ„ νƒμž
μ„ νƒμžμ€‘μ— κ°€μž₯ 기본이 λ˜λŠ” μ„ νƒμž. νƒœκ·Έμ„ νƒμžλΌκ³ λ„ 함
μ„ νƒμž 뢀뢄에 νƒœκ·Έμ˜ 이름이 듀어감
μš”μ†Œ μ„ νƒμžλŠ” λ¬Έμ„œ 내에 μ„ νƒμžμ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œ, νƒœκ·Έ λͺ¨λ‘μ— μŠ€νƒ€μΌ κ·œμΉ™μ΄ 적용됨

h1 { color: yellow; }
h2 { color: yellow; }
h3 { color: yellow; }
h4 { color: yellow; }
h5 { color: yellow; }
h6 { color: yellow; }
  • μ„ νƒμž κ·Έλ£Ήν™” κ°€λŠ₯
    ,λ₯Ό μ΄μš©ν•΄μ„œ μ„ νƒμžλ“€μ„ λ‚˜μ—΄ν•΄μ£Όλ©΄λ¨
h1, h2, h3, h4, h5, h6 { color: yellow; }
  • μ „μ²΄μ„ νƒμž
    *(asterisk)λ₯Ό μ΄μš©ν•΄μ„œ λ¬Έμ„œλ‚΄μ— μžˆλŠ” λͺ¨λ“  μš”μ†Œ μ„ νƒν•˜λŠ” μ„ νƒμž
    단 ν•œλ²ˆμ˜ μ„ μ–Έλ§ŒμœΌλ‘œλ„ λ¬Έμ„œλ‚΄μ— μžˆλŠ” λͺ¨λ“  μš”μ†Œκ°€ 선택됨
    μ„±λŠ₯에 쒋지 μ•ŠμœΌλ―€λ‘œ μ‚¬μš©μ„ 지양

  • μ„ μ–Έ κ·Έλ£Ήν™” κ°€λŠ₯

h1 { color: yellow; font-size: 2em; background-color: gray; }
  • μ„ νƒμžμ™€ 선언이 λ™μ‹œμ— κ·Έλ£Ήν™” κ°€λŠ₯
h1, h2, h3, h4, h5, h6 { color: yellow; font-size: 2em; background-color: gray; }

2. class μ„ νƒμž
μš”μ†Œμ— ꡬ애받지 μ•Šκ³  μŠ€νƒ€μΌ κ·œμΉ™μ„ μ μš©ν•  수 μžˆλŠ” κ°€μž₯ 일반적인 방법
html μˆ˜μ • ν•„μš”.

/*css*/
.foo { font-size: 30px; }
<!--html-->
<p class="foo"> ... </p>
  • class 속성에 값을 λ„£κ²Œλ˜λ©΄ class μ„ νƒμžλ₯Ό μ΄μš©ν•΄μ„œ ν•΄λ‹Ή μš”μ†Œμ— μŠ€νƒ€μΌκ·œμΉ™μ„ μ μš©ν•  수 μžˆλ‹€
  • cssμ—μ„œλŠ” μ„ νƒμž μ•žμ— .을 찍어쀀닀
  • μ–΄λŠ μš”μ†Œλ“ μ§€ classμ†μ„±μ˜ 값이 foo둜 μ„ μ–Έλœ μš”μ†Œκ°€ μžˆλ‹€λ©΄ λͺ¨λ‘ ν•΄λ‹Ή κ·œμΉ™μ„ μ μš©λ°›κ²Œ λœλ‹€
  • ν•˜λ‚˜μ˜ μš”μ†Œμ— μ—¬λŸ¬κ°œμ˜ classλ₯Ό 넣을 수 μžˆλ‹€ : 닀쀑 class
    곡백으둜 κ΅¬λΆ„ν•΄μ„œ 두가지 속성값이 λ“€μ–΄κ°€μžˆμŒ
    λ‘κ°œμ˜ κ·œμΉ™μ΄ λͺ¨λ‘ 적용됨
.foo { font-size: 30px; }
.bar { color: blue; }
<p class="foo bar"> ... </p>

3. id μ„ νƒμž

#bar { background-color: yellow; }
<p id="bar"> ... </p>
  • classμ„ νƒμžμ™€ 차이

    • .λŒ€μ‹  #μ‚¬μš©
    • νƒœκ·Έμ˜ class속성이 μ•„λ‹Œ id속성 μ°Έμ‘°
    • idλŠ” λ¬Έμ„œ λ‚΄μ—μ„œ μœ μΌν•΄μ•Όν•œλ‹€
    • κ΅¬μ²΄μ„±μ˜ 값이 λ‹€λ₯΄λ‹€
  • μ„ νƒμžλŠ” 쑰합이 κ°€λŠ₯ν•˜λ‹€

/* μš”μ†Œμ™€ class의 μ‘°ν•© */
p.bar { ... }

: p νƒœκ·Έμ΄λ©΄μ„œ 클래슀둜 barκ°€ μžˆμ–΄μ•Ό κ·œμΉ™μ΄ 적용됨

/* 닀쀑 class */
.foo.bar { ... }

: foo와 bar ν΄λž˜μŠ€κ°€ λ‹€ μžˆλŠ”κ²½μš°μ— ν•΄λ‹Ή

/* id와 class의 μ‘°ν•© */
#foo.bar { ... }

: μ•„μ΄λ””λŠ” fooμ΄λ©΄μ„œ ν΄λž˜μŠ€λŠ” bar인 μš”μ†Œκ°€ 선택

4. 속성 μ„ νƒμž
νƒœκ·Έμ— 속성을 μ΄μš©ν•΄μ„œ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€


1. λ‹¨μˆœ μ†μ„±μœΌλ‘œ 선택

p[class] { color: silver; }
p[class][id] { text-decoration: underline; }

: pμš”μ†Œμ΄λ©΄μ„œ classλΌλŠ” 속성이 μžˆλŠ” μš”μ†Œμ— κΈ€μžλ₯Ό μ€μƒ‰μœΌλ‘œ ν‘œν˜„
μ•„λž˜λŠ” pμš”μ†Œμ΄λ©΄μ„œ class, id속성이 λͺ¨λ‘ μžˆλŠ” κ²½μš°μ— 적용

<p class="foo">Hello</p> /*은색*/
<p class="bar">CSS</p> 은색
<p class="baz" id="title">HTML</p> μ€μƒ‰μ΄λ©΄μ„œ 밑쀄
  • μš”μ†Œ μ„ νƒμžμ™€ μ‘°ν•©μœΌλ‘œ μ‚¬μš©λ¨
  • []μ•ˆμ— μ†μ„±μ˜ 이름 듀어감
  • μš”μ†Œμ— ν•΄λ‹Ή μ΄λ¦„μ˜ 속성이 선언이 λ˜μ–΄μžˆλ‹€λ©΄ λͺ¨λ‘ 적용됨

2. μ •ν™•ν•œ μ†μ„±κ°’μœΌλ‘œ 선택

p[class="foo"] { color: silver; }
p[id="title"] { text-decoration: underline; }

μ†μ„±κ°’μœΌλ‘œ μš”μ†Œλ₯Ό 선택
μ„ νƒμžλ₯Ό μ“Έλ•ŒλŠ” []μ•ˆμ— μ†μ„±μ˜ 이름과 μ†μ„±κ°’κΉŒμ§€ 같이 적어야함

<p class="foo">Hello</p> /*은색*/
<p class="bar">CSS</p> 
<p class="baz" id="title">HTML</p> 밑쀄

3. λΆ€λΆ„ μ†μ„±κ°’μœΌλ‘œ 선택
속성이름과 속성값 사이에 μ‚¬μš©λ˜λŠ” κΈ°ν˜Έμ— 따라 λ‹€λ₯΄λ‹€

<p class="color hot">red</p> 
<p class="cool color">blue</p>
<p class="colorful nature">rainbow</p>
p[class~="color"] { font-style: italic; } /* 1, 2번째 μš”μ†Œ */
p[class^="color"] { font-style: italic; } /* 1, 3번째 μš”μ†Œ */
p[class$="color"] { font-style: italic; } /* 2번째 μš”μ†Œ */
p[class*="color"] { font-style: italic; } /* 1, 2, 3번째 μš”μ†Œ */
  • [class~="bar"] : class μ†μ„±μ˜ 값이 곡백으둜 κ΅¬λΆ„ν•œ "bar" 단어가 ν¬ν•¨λ˜λŠ” μš”μ†Œ 선택

  • [class^="bar"] : class μ†μ„±μ˜ 값이 "bar"둜 μ‹œμž‘ν•˜λŠ” μš”μ†Œ 선택
    ^ 캐럿 기호

  • [class$="bar"] : class μ†μ„±μ˜ 값이 "bar"둜 λλ‚˜λŠ” μš”μ†Œ 선택
    $ dollar sign

  • [class*="bar"] : class μ†μ„±μ˜ 값이 "bar" λ¬Έμžκ°€ ν¬ν•¨λ˜λŠ” μš”μ†Œ 선택
    * asterisk


λ¬Έμ„œ ꡬ쑰 κ΄€λ ¨ μ„ νƒμž

<html>
  <head>
  </head>
  <body>
    <div>
        <h1><span>HTML</span>: Hyper Text Markup Language</h1>
       <span>CSSλŠ” λ¬Έμ„œλ₯Ό κΎΈλ©°μ€λ‹ˆλ‹€.</span>
    </div>
    <span>JavasciprtλŠ” λ¬Έμ„œλ₯Ό λ™μ μœΌλ‘œ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.</span>
    <p>HTMLκ³Ό CSS와 JAVASCRIPTλ₯Ό μ΄μš©ν•΄μ„œ 멋진 μ›Ή μ‚¬μ΄νŠΈλ₯Ό μ œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.</p>
  </body>
</html>
  • htmlμš”μ†ŒλŠ” μžμ‹μš”μ†Œλ“€λ§Œ 쑴재. λΆ€λͺ¨ μš”μ†Œ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ
  • headμš”μ†Œμ™€ body μš”μ†Œ λ‘κ°œμ˜ μžμ‹ μš”μ†Œ 쑴재
  • bodyμš”μ†Œμ— div,span,p 3개의 μžμ‹μš”μ†Œ 쑴재
  • bodyμš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œκ°€ htmlμš”μ†Œ
  • divμš”μ†ŒλŠ” μžμ‹μš”μ†Œλ‘œ h1, spanμš”μ†Œ, λΆ€λͺ¨μš”μ†Œλ‘œ body
  • h1 μš”μ†Œλ„ div의 μžμ‹μš”μ†Œμ΄μž span의 λΆ€λͺ¨μš”μ†Œ

보톡 λ¬Έμ„œμ˜ μš”μ†Œλ“€μ€ μ–΄λŠ μš”μ†Œμ˜ μžμ‹ μš”μ†Œμ΄μž λΆ€λͺ¨μš”μ†Œκ°€ λ˜λŠ” 경우 많음

쑰상/μžμ†

html μš”μ†Œμ˜ μžμ† μš”μ†ŒλŠ” head, body, ...λͺ¨λ“  μš”μ†Œλ“€μ΄ htmlμš”μ†Œμ˜ μžμ† μš”μ†Œ
spanμš”μ†Œμ˜ μ‘°μƒμš”μ†ŒλŠ” h1, div, body, htmlκΉŒμ§€ 4개

ν˜•μ œκ΄€κ³„

같은 λΆ€λͺ¨λ₯Ό 가지고 μžˆλŠ” μš”μ†Œλ“€μ΄ μ„œλ‘œ ν˜•μ œκ΄€κ³„μ— μžˆλŠ” μš”μ†Œλ“€
head, body
div, span, p

μΈμ ‘ν•œ 관계

ν˜•μž¬ 관계에 μžˆλŠ” μš”μ†Œλ“€ 쀑에 λ°”λ‘œ 뒀에 λ‚˜μ˜€λŠ” μš”μ†Œλ₯Ό μΈμ ‘ν•΄μžˆλ‹€κ³  함
spanμš”μ†ŒλŠ” divμš”μ†Œμ˜ μΈμ ‘ν•œ ν˜•μ œμΈ μš”μ†Œ
pμš”μ†Œλ„ span의 μΈμ ‘ν•œ ν˜•μ œ μš”μ†Œ


λ¬Έμ„œκ΅¬μ‘°λ₯Ό μ΄μš©ν•œ μ„ νƒμž 3가지
μžμ†μ„ νƒμž
μžμ‹μ„ νƒμž
인접 ν˜•μ œ μ„ νƒμž

μžμ†μ„ νƒμž

div span { color: red; }

: divμš”μ†Œμ˜ μžμ†, spanμš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” μ„ νƒμž
μ„ νƒμžμ™€ μ„ νƒμž 사이에 μ•„λ¬΄λŸ° 기호 없이 곡백으둜만 ꡬ뢄

μžμ‹μ„ νƒμž

div > h1 { color: red; }

μ„ νƒμž 사이에 κΊ½μ‡  >기호 λ„£κΈ°
> 기호 μ’Œμš°μ— κ³΅λ°±μ€˜λ„ 되고 없어도 됨

인접 ν˜•μ œ μ„ νƒμž

div + span { color: red; }

μ„ νƒμž 사이에 + plus 기호
곡백 μžˆμ–΄λ„ 되고 없어도 됨

μ‘°ν•©ν•΄μ„œ μ‚¬μš©κ°€λŠ₯

/* body μš”μ†Œμ˜ μžμ‹μΈ div μš”μ†Œμ˜ μžμ†μΈ table μš”μ†Œ λ°”λ‘œ 뒀에 μΈμ ‘ν•œ ul μš”μ†Œ 선택 */
body > div table + ul { ... }


κ°€μƒμ„ νƒμž

pseudo selector
1) μ§€κΈˆ λ¬Έμ„œλ‚΄μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ꡬ쑰, λ¬Έμ„œμ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μš”μ†Œμ— μŠ€νƒ€μΌμ„ λΆ€μ—¬ν•  수 있고,
2) νŠΉμ • μš”μ†Œμ˜ μƒνƒœλ₯Ό 미리 μΆ”μ •ν•΄μ„œ κ°€μƒμ˜ 클래슀둜 μŠ€νƒ€μΌμ„ μ μš©μ‹œν‚¬μˆ˜λ„ μžˆλŠ” μ„ νƒμž

κ°€μƒμ„ νƒμžμ—λŠ” 가상 클래슀, κ°€μƒμš”μ†Œ 두가지 쑴재

가상 클래슀
νŠΉμ • μš”μ†Œμ— 미리 μ •μ˜ν•΄λ†“μ€ 상황에 적용이 λ˜λ„λ‘ μ•½μ†λ˜μ–΄ μžˆλŠ” 보이지 μ•ŠλŠ” 클래슀

  • κ°€μƒν΄λž˜μŠ€λŠ” μš°λ¦¬κ°€ μš”μ†Œμ— 직접 클래슀λ₯Ό μž…λ ₯ν•˜λŠ”κ²ƒμ΄ μ•„λ‹ˆκ³  λΈŒλΌμš°μ € μŠ€μŠ€λ‘œκ°€ νŠΉμ •ν•œ 상황이 되면 μžλ™μ μœΌλ‘œ 클래슀λ₯Ό μ μš©μ‹œμΌœμ£ΌλŠ”κ²ƒ.

  • 보톡 μžλ°”μŠ€ν¬λ¦½νŠΈ, μ„œλ²„μ‚¬μ΄λ“œ λ“±μ˜ λ‹€λ₯Έ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•΄μ„œ νŠΉμ •ν•œ 상황, 예λ₯Όλ“€μ–΄ 마우슀λ₯Ό 올리게 되면 μš”μ†Œμ— redλΌλŠ” 클래슀λ₯Ό μ‚½μž…ν•˜λ„λ‘ λ³„λ„μ˜ 처리λ₯Ό ν•΄μ£ΌλŠ”κ²Œ μ‹€λ¬΄μ—μ„œ μ“°μ΄λŠ” 방법
    -> 개발 λΉ„μš©μ΄ 듀어감.

  • cssμ—μ„œλŠ” 자주 μ‚¬μš©λ˜λŠ” μ—¬λŸ¬ 상황듀을 미리 μ •μ˜ν•΄λ†“κ³  κ·Έ 상황이 되면 μ•Œμ•„μ„œ μš”μ†Œμ— μ–΄λ– ν•œ κ°€μƒμ˜ ν΄λž˜μŠ€κ°€ λ“€μ–΄κ°€κ²Œλ” λ§Œλ“€μ–΄λ†“μ•˜λ‹€.
    -> κ°€μƒν΄λž˜μŠ€λ₯Ό μ΄μš©ν•˜λ©΄ css만으둜 κ΅¬ν˜„κ°€λŠ₯ν•˜κΈ° 떄문에 효율적

https://developer.mozilla.org/ko/docs/Web/CSS/Pseudo-classes
참고 링크

:pseudo-class {
    property: value;
}

κ°€μƒν΄λž˜μŠ€ 이름 μ•žμ— : 기호 λ„£μ–΄μ£Όλ©΄ 됨

λ¬Έμ„œκ΅¬μ‘°μ™€ κ΄€λ ¨λœ 가상 클래슀

first-child : 첫번째 μžμ‹ μš”μ†Œμ— λ“€μ–΄κ°€λŠ” 클래슀
last-child : λ§ˆμ§€λ§‰ μžμ‹ μš”μ†Œμ— λ“€μ–΄κ°€λŠ” 클래슀

<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JS</li>
</ul>
li:first-child { color: red; }
li:last-child { color: blue; }

μ•„λž˜ μ½”λ“œμ²˜λŸΌ λ™μž‘ν•˜κ²Œλœλ‹€

<ul>
    <li class="first-child">HTML</li>
    <li>CSS</li>
    <li class="last-child">JS</li>
</ul>

액컀 μš”μ†Œμ™€ κ΄€λ ¨λœ 가상 클래슀

link : ν•˜μ΄νΌλ§ν¬μ΄λ©΄μ„œ 아직 λ°©λ¬Έν•˜μ§€ μ•Šμ€ 액컀λ₯Ό 이야기함
ν•˜μ΄νΌλ§ν¬ : a νƒœκ·Έμ— href속성이 μ‘΄μž¬ν•˜λŠ”κ²ƒ
vistied : 이미 방문을 ν•œ ν•˜μ΄νΌλ§ν¬

a:link { color: blue; }
a:visited { color: gray; }

μ‚¬μš©μž λ™μž‘κ³Ό κ΄€λ ¨λœ 가상 클래슀
이 ν΄λž˜μŠ€λ“€λ„ aμš”μ†Œμ— 주둜 많이 쓰인닀.

focus : ν˜„μž¬ μž…λ ₯ 포컀슀λ₯Ό κ°–κ³  μžˆλŠ” μš”μ†Œμ— 적용됨 ν¬μ»€μŠ€λŠ” νƒ­ ν‚€λ‘œ 쀄 수 있음 (포컀슀 : ν˜„μž¬ 선택을 λ°›κ³  μžˆλŠ”κ²ƒ. 초점)
hover : 마우슀 포인터가 μœ„μΉ˜ν•΄ μžˆλŠ” μš”μ†Œμ— 적용. 즉 마우슀λ₯Ό μ˜¬λ Έμ„λ–„
active : μ‚¬μš©μž μž…λ ₯에 μ˜ν•΄ ν™œμ„±ν™”λœ μš”μ†Œ. μ΄ˆμ μ„ 받은 μƒνƒœμ—μ„œ 링크λ₯Ό ν΄λ¦­ν•˜κ±°λ‚˜ λ²„νŠΌμ„ λˆŒλ €μ„λ–„ μˆœκ°„μ μœΌλ‘œ λ°œμƒ

a:focus { background-color: yellow; }
a:hover { font-weight: bold; }
a:active { color: red; }

κ°€μƒμš”μ†Œ
HTMLμ½”λ“œ 내에 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ꡬ쑰, μš”μ†Œμ— μŠ€νƒ€μΌμ„ λΆ€μ—¬ν•  수 μžˆλ‹€

미리 μ •μ˜ν•΄λ†“μ€ μœ„μΉ˜μ— μ‚½μž…λ˜λ„λ‘ 약속이 λ˜μ–΄ μžˆλŠ” λ³΄μ΄μ§€μ•ŠλŠ” μš”μ†Œ.
λ¬Έμ„œλ‚΄μ—λŠ” μ—†λŠ” μš”μ†Œμ΄μ§€ 만 κ°€μƒμš”μ†Œ μ„ νƒμžλ₯Ό μ“°κ²Œ 되면 미리 μ •μ˜ν•΄λ†“μ€ μœ„μΉ˜μ— μ‚½μž…μ΄ λ˜λ„λ‘ μ•½μ†λ˜μ–΄μžˆλ‹€.

::pseudo-element {
    property: value;
}

κ°€μƒμš”μ†Œ μ„ μ–Έ
: 이용

CSS3λΆ€ν„°λŠ” 가상 ν΄λž˜μŠ€μ™€ 가상 μš”μ†Œλ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ 가상 μš”μ†Œμ—λŠ” ::(더블 콜둠) 기호λ₯Ό μ‚¬μš©ν•˜κΈ°λ‘œ ν–ˆλ‹€.
ν•˜μ§€λ§Œ ν•˜μœ„ λΈŒλΌμš°μ €μ—μ„œ :: 문법을 μ§€μ›ν•˜μ§€ μ•ŠλŠ” λ¬Έμ œκ°€ μžˆμœΌλ―€λ‘œ 상황에 따라 : 기호λ₯Ό μ‚¬μš©ν•΄μ•Όν•¨.

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
p::before { content: "###" }
p::after { content: "!!!" }
p::first-line { ... }
p::first-letter { ... }

μ΄λ ‡κ²Œλ¨

<p>
    <before>###</before>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    <after>!!!</after>
</p>
  • before
    μš”μ†Œ 내에 κ°€μž₯ 첫번쨰 μžμ‹μœΌλ‘œ μ‚½μž…
  • after
    κ°€μž₯ λ§ˆμ§€λ§‰ μžμ‹μœΌλ‘œ μ‚½μž…
  • first-line
    μš”μ†Œμ˜ 첫번째 쀄에 μžˆλŠ” ν…μŠ€νŠΈλ₯Ό κ°μ‹ΈλŠ” μš”μ†Œκ°€ μ‚½μž…. 화면에 λ‚˜νƒ€λ‚œ 쀄이 κΈ°μ€€
  • first-letter
    μš”μ†Œλ‚΄μ— λΈ”λ‘λ ˆλ²¨μš”μ†Œμ€‘μ— κ·Έ μ•ˆμ— 첫번째 문자λ₯Ό κ°μ‹ΈλŠ” μš”μ†Œλ₯Ό 생성

before, after κ°€μƒμš”μ†ŒλŠ” λ‚΄μš©μ΄ μ—†λŠ” μƒνƒœλ‘œ μƒμ„±λœ μš”μ†Œμ΄κΈ° λ•Œλ¬Έμ— λ‚΄μš©μ„ 집어넣기 μœ„ν•΄μ„œλŠ” contentsλΌλŠ” css속성도 μ΄μš©ν•΄μ•Όν•¨


ꡬ체성

μ„œλ‘œ λ‹€λ₯Έ μ„ νƒμžλ₯Ό μ΄μš©ν•΄μ„œ 같은 μš”μ†Œλ₯Ό μ„ νƒν• λ•Œ, λ™μΌν•œ κ·œμΉ™λ“€μ΄ μ„œλ‘œ μƒλ°˜λœ μŠ€νƒ€μΌμ„ κ°–κ³  μžˆλ‹€λ©΄ μ–΄λ–»κ²Œ ν‘œν˜„λ κΉŒ?

h1 { color: red; } /*μš”μ†Œμ„ νƒμž*/
body h1 { color: green; } /*μžμ†μ„ νƒμž*/

λͺ¨λ‘ h1 μš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” μ„ νƒμž. 두 κ·œμΉ™μ€ μ§€μ •λœ μŠ€νƒ€μΌμ΄ μ„œλ‘œ μƒλ°˜λ¨

ꡬ체성
μ„ νƒμžμ— μ–΄λ– ν•œ κ·œμΉ™μ΄ μš°μ„ λ˜μ–΄μ•Όν•˜λŠ”μ§€ 정해진 λ£°
μ„ νƒμžλ₯Ό μ–Όλ§ˆλ‚˜ λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν–ˆλŠλƒλ₯Ό μˆ˜μΉ˜ν™”ν•œκ²ƒ

κ΅¬μ²΄μ„±μ˜ 값이 λ†’μ„μˆ˜λ‘ μš°μ„ λ˜μ–΄ 적용됨

0, 0, 0, 0
ꡬ체성을 κ³„μ‚°ν• λ–„λŠ” μ’ŒμΈ‘μ— μžˆλŠ” κ°’λΆ€ν„° λΉ„κ΅ν•˜κΈ° λ•Œλ¬Έμ— μ’ŒμΈ‘λΆ€λΆ„μ˜ μˆ«μžκ°€ 클수둝 높은 ꡬ체성을 가진닀.

μ„ νƒμžμ— μžˆλŠ” λͺ¨λ“  id속성값
0, 1, 0, 0

μ„ νƒμžμ— μžˆλŠ” λͺ¨λ“  클래슀 속성값, 기타 속성, 가상 클래슀
0, 0, 1, 0

μ„ νƒμžμ— μžˆλŠ” λͺ¨λ“  μš”μ†Œ, 가상 μš”μ†Œ
0, 0, 0, 1

  • μ‘°ν•©μžλ‚˜ μ „μ²΄μ„ νƒμžλŠ” ꡬ체성에 영ν–₯을 λͺ» 쀌
  • μ „μ²΄μ„ νƒμžλŠ” 0, 0, 0, 0의 ꡬ체성 κ°’ 가짐
  • μ‘°ν•©μžλŠ” μ•„λ¬΄λŸ° ꡬ체성 값을 갖지 μ•ŠμŒ. >, +
h1 { ... }  /* 0,0,0,1 */
body h1 { ... }  /* 0,0,0,2 */
.grape { ... }  /* 0,0,1,0 */
*.bright { ... }  /* 0,0,1,0 */
p.bright em.dark { ... }  /* 0,0,2,2 */
#page { ... }  /* 0,1,0,0 */
div#page { ... }  /* 0,1,0,1 */

인라인 μŠ€νƒ€μΌλ‘œ μ„ μ–Έλœ κ·œμΉ™μ΄ κ°€μž₯ 높은 ꡬ체성을 κ°–λŠ”λ‹€.
1, 0, 0, 0

p#page { color: red; }
<p id="page" style="color:blue">Lorem impusm dolor sit.</p>

-> blueκ°€ 적용


!important ν‚€μ›Œλ“œ

p#page { color: red !important; }

속성값 ν•œμΉΈ 뒀에 곡백 μ£Όκ³  씀

<p id="page" style="color:blue">Lorem impusm dolor sit.</p>

-> red둜 λ‚˜νƒ€λ‚¨

importantλŠ” λ³„λ„μ˜ ꡬ체성 값은 μ—†μ§€λ§Œ λͺ¨λ“  ꡬ체성을 λ¬΄μ‹œν•˜κ³  μš°μ„ κΆŒμ„ κ°–κ²Œλ” λ˜μ–΄μžˆλ‹€



상속

상속은 ꡬ체성과 λ”λΆˆμ–΄ 선언듀이 λ¬Έμ„œμ— μ–΄λ–»κ²Œ μ μš©λ˜λŠ”μ§€λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•œ μ€‘μš”ν•œ ν•΅μ‹¬κ°œλ…
μ–΄λ–€ μŠ€νƒ€μΌμ΄ νŠΉμ •μš”μ†Œλ§Œμ΄ μ•„λ‹ˆλΌ κ·Έ μžμ†μš”μ†Œμ—κΉŒμ§€ μ μš©λ˜λŠ” 방식

h1 { color: gray; }
<h1>Hello, <em>CSS</em></h1>

-> emμš”μ†Œκ°€ λΆ€λͺ¨ gray값을 μƒμ†λ°›μ•„μ„œ νšŒμƒ‰μœΌλ‘œ ν‘œν˜„λ¨

margin, padding, background, borderλ“±μ˜ λ°•μŠ€λͺ¨λΈμ†μ„±λ“€μ€ λ‹€ μƒμ†λ˜μ§€ μ•ŠλŠ”λ‹€

μƒμ†λœ μ„ μ–Έμ˜ ꡬ체성

* { color: red; }
h1#page { color: gray; }
<h1 id="page">Hello, <em>CSS</em></h1>

-> redκ°€ 적용됨
μƒμ†λœ κ°’μ—λŠ” μ•„λ¬΄λŸ° ꡬ체성을 갖지 λͺ»ν•¨. 0, 0, 0, 0의 값도 μ—†κΈ° λ•Œλ¬Έμ— 전체 μ„ νƒμžμ˜ ꡬ체성에도 λ°€λ¦°λ‹€


μΊμŠ€μΌ€μ΄λ”©

μΊμŠ€μΌ€μ΄λ”©
: λͺ¨λ“  μŠ€νƒ€μΌ κ·œμΉ™λ“€μ΄, 즉 cssκ°€ μ–΄λ–€ κΈ°μ€€μœΌλ‘œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ λ¬Έμ„œμ— 적용이 λ˜λŠ”μ§€λ₯Ό μ •ν•œ κ·œμΉ™

ꡬ체성도 μΊμŠ€μΌ€μ΄λ”© κ·œμΉ™μ˜ ν•˜λ‚˜μ΄λ‹€
μΌ€μŠ€μΌ€μ΄λ”© : λ‹¨κ³„μ μΈμ΄λΌλŠ” 뜻 가짐

ꡬ체성이 같은 두가지 κ·œμΉ™μ΄ λ™μΌν•œ μš”μ†Œμ— 적용되면 μ–΄λ–»κ²Œ 될까?

h1 { color: red; }
h1 { color: blue; }

ꡬ체성이 같은 κ·œμΉ™μ΄ λ‚˜μ˜€λ©΄ μΊμŠ€μΌ€μ΄λ”©μ˜ 단계적인 κ·œμΉ™μ— 따라 λ™μž‘ν•¨.

μΊμŠ€μΌ€μ΄λ”© κ·œμΉ™ 3가지
1. μ€‘μš”λ„μ™€ 좜처
2. ꡬ체성
3. μ„ μ–Έμˆœμ„œ


1.
  • μ€‘μš”λ„ : !importantλ₯Ό 의미
    !important둜 μ„ μ–Έλœ λͺ¨λ“  κ·œμΉ™μ€ 그렇지 μ•Šμ€ κ·œμΉ™λ³΄λ‹€ μš°μ„ 

  • 좜처 : μ œμž‘μž/μ‚¬μš©μž/μ‚¬μš©μž μ—μ΄μ „νŠΈ user gent둜 ꡬ뢄
    css의 좜처λ₯Ό μ΄μ•ΌκΈ°ν•˜λŠ”κ²ƒ.

    • μ œμž‘μž : μ‹€μ œ μ‚¬μ΄νŠΈλ₯Ό μ œμž‘ν•˜λŠ” μ‚¬μ΄νŠΈ κ°œλ°œμžκ°€ μž‘μ„±ν•œ cssλ₯Ό 의미
    • μ‚¬μš©μž : μ‚¬μ΄νŠΈλ₯Ό λ°©λ¬Έν•˜λŠ” 일반 μ‚¬μš©μžλ“€μ΄ μž‘μ„±ν•œ cssλ₯Ό 의미
    • μ‚¬μš©μž μ—μ΄μ „νŠΈ : 일반 μ‚¬μš©μžμ˜ ν™˜κ²½, 즉 λΈŒλΌμš°μ €μ— λ‚΄μž₯된 css

μš°μ„ μˆœμœ„
5μœ„) μ‚¬μš©μž μ—μ΄μ „νŠΈ μŠ€νƒ€μΌ
λΈŒλΌμš°μ €μ—μ„œ 기본적으둜 μ œκ³΅ν•˜λŠ” μŠ€νƒ€μΌ

4μœ„) μ‚¬μš©μž μŠ€νƒ€μΌ
일반 μœ μ €κ°€ 직접 cssλ₯Ό λ§Œλ“€μ–΄μ„œ 본인 λΈŒλΌμš°μ €μ— 섀정해놓은것. μ§€κΈˆμ€ 잘 μ‚¬μš©λ˜μ§€ μ•Šκ³  μ§€μ›ν•˜μ§€ μ•ŠλŠ” λΈŒλΌμš°μ €λ“€λ„ λ§Žμ•„μ„œ μ‹ κ²½ x

3μœ„) μ œμž‘μž μŠ€νƒ€μΌ
μ‚¬μ΄νŠΈ μ œμž‘μžκ°€ μž‘μ„±ν•œ css. λŒ€λΆ€λΆ„μ˜ μŠ€νƒ€μΌ κ·œμΉ™λ“€μ΄ 여기에 ν•΄λ‹Ή

2μœ„) μ œμž‘μž !important

1μœ„) μ‚¬μš©μž !important

κΈ°λ³Έ κ·œμΉ™μ—μ„œλŠ” μ œμž‘μžκ°€ μš°μ„ μΈλ° !importantμ€‘μš”λ„λ₯Ό 주게 되면 μ‚¬μš©μžκ°€ 더 μš°μ„ ν•˜κ²Œ λ˜μ–΄μžˆλ‹€λŠ”κ²ƒ 주의
κ·Έλž˜λ„ μ‚¬μš©μž μŠ€νƒ€μΌμ€ 거의 쓰지 μ•ŠκΈ° λ•Œλ¬Έμ— 1μˆœμœ„λŠ” λ¬΄μ‹œν•΄λ„ 상관없닀.


2. ꡬ체성

이미 λ°°μ› μŒ


3. μ„ μ–Έ μˆœμ„œ

λ‚˜μ€‘μ— μ„ μ–Έλœ 녀석이 μš°μ„ ν•˜κ²Œ 됨


μ„ νƒμž μΆ”κ°€ 곡뢀
https://www.w3schools.com/cssref/css_selectors.asp

0개의 λŒ“κΈ€