[TIL] Unit 5. CSS 기초

string_mainΒ·2022λ…„ 5μ›” 2일
0

CSS

λͺ©λ‘ 보기
1/1
post-thumbnail

πŸŒ±μš©μ–΄ 정리

  • CSS(Cascading Style Sheets) : μ›Ή νŽ˜μ΄μ§€μ˜ μŠ€νƒ€μΌ 및 λ ˆμ΄μ•„μ›ƒμ„ μ •μ˜ν•˜λŠ” μŠ€νƒ€μΌμ‹œνŠΈ μ–Έμ–΄μ΄μž 더 λ‚˜μ€ μ‚¬μš©μž κ²½ν—˜(UX)을 μ œκ³΅ν•˜κΈ° μœ„ν•œ 도ꡬ (μ‚¬μš©μžκ°€ HTMLλ¬Έμ„œλ₯Ό 잘 이해할 수 μžˆλ„λ‘ λ•λŠ” μ—­ν• )
  • UI(User Interface) : 컴퓨터에 λ¬΄μ§€ν•œ 일반 μ‚¬μš©μžλ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‰½κ²Œ μ‚¬μš©ν•  수 있게 ν•˜λŠ” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€
  • UX(User eXperience) : μ‚¬μš©μžκ°€ μ–΄λ–€ μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜λ©΄μ„œ λŠλΌλŠ” 총체적 κ²½ν—˜

πŸŒ±ν”„λ‘ νŠΈμ—”λ“œ 개발자의 κΈ°λ³Έ μ†Œμ–‘


  • μ»΄ν¬λ„ŒνŠΈλ₯Ό κΈ°λŠ₯λ³„λ‘œ λ¬Άμ–΄μ„œ μ œμž‘
  • ν™”λ©΄μ˜ κ΅¬μ„±μ΄λ‚˜ 배치 (λ ˆμ΄μ•„μ›ƒ λ””μžμΈ)
  • ꡡ은 글씨 λ“± νƒ€μ΄ν¬κ·Έλž˜ν”Όμ™€ 색상 적용
  • μ •λ ¬μ΄λ‚˜ 배색에 λŒ€ν•œ 감각
  • UX에 λŒ€ν•΄ κ³ λ―Όν•˜κ³ , UXκ°€ 잘 적용된 μ›Ήμ΄λ‚˜ 앱을 뢄석해 λ³Έ κ²½ν—˜
  • 직관적이고 μ‰¬μš΄ UI μ œμž‘

🌱CSS 문법

🌿기본 κ΅¬μ„±μš”μ†Œ

body { /*μ…€λ ‰ν„° 및 μ„ μ–Έ 블둝*/
	color: red; /*μ„ μ–Έ = 속성λͺ… + 속성값 + μ„ μ–Έ ꡬ문자*/
    font-size: 30px;
}
  • μ…€λ ‰ν„°(Selector) (μš”μ†Œ μ΄λ¦„μ΄λ‚˜ id, 클래슀 λ“± νŠΉμ • μš”μ†Œλ₯Ό 선택)
  • μ„ μ–Έ 블둝(Declaration block)
  • μ„ μ–Έ(Declaration)
  • 속성λͺ…(Property)
  • 속성값(Value)
  • μ„ μ–Έ κ΅¬λΆ„μž(;)

🌿CSS 적용 방법

  • 인라인 μŠ€νƒ€μΌ
<!--html-->
<nav style="background: #eee; color: blue">...</nav>
  • λ‚΄λΆ€ μŠ€νƒ€μΌ μ‹œνŠΈ
<!--html-->
<style>
#hello1 {
  color: red;
  background-color: yellow;
}
</style>
  • μ™ΈλΆ€ μŠ€νƒ€μΌ μ‹œνŠΈ (ꢌμž₯)
/*css*/
#hello1 {
  color: red;
  background-color: yellow;
}
<!--html-->
<link rel="stylesheet" href="index.css" />
  • import
/*css*/
#hello1 {
  color: red;
  background-color: yellow;
}
<!--html-->
<style type='text/css'>
@import url("mystyle.css");
</style>

🌱id & class

  • id : 고유(unique)ν•œ 이름을 뢙일 λ•Œ μ‚¬μš© (쀑볡 ν—ˆμš© X)
  • class : μ—¬λŸ¬ μš”μ†Œμ— 동일 μŠ€νƒ€μΌμ„ μ μš©ν•  λ•Œ μ‚¬μš©
idclass
# 으둜 선택. 으둜 선택
ν•œ λ¬Έμ„œμ— 단 ν•˜λ‚˜μ˜ μš”μ†Œμ—λ§Œ μ μš©λ™μΌν•œ 값을 κ°–λŠ” μš”μ†Œμ— 적용
νŠΉμ • μš”μ†Œμ— 이름을 λΆ™μ΄λŠ” 데 μ‚¬μš©μŠ€νƒ€μΌμ˜ λΆ„λ₯˜(classification)에 μ‚¬μš©

🌱CSS 속성(Property)

  • color : κΈ€κΌ΄ 색상 속성
.box {
  color: #155724; /* κΈ€μž 색상 */
  background-color: #d4edda; /* λ°°κ²½ 색상 */
  border-color: #c3e6cb; /* ν…Œλ‘λ¦¬ 색상 */
}
  • font-family : κΈ€κΌ΄ 속성, 글꼴이 μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜ λ””λ°”μ΄μŠ€μ— 따라 μ§€μ›ν•˜μ§€ μ•ŠλŠ” 글꼴이 μžˆμ„ 수 μžˆμ–΄ fallback 글꼴을 μΆ”κ°€ν•  수 있음
.emphasize {
  font-family: "SF Pro KR", "MalgunGothic", "Verdana";
}
  • font-size : 폰트 크기 속성
  • font-weight : 폰트 κ΅΅κΈ° 속성
  • text-decoration : 밑쀄, κ°€λ‘œμ€„ 속성
  • letter-spacing : μžκ°„ 속성
  • line-height : ν–‰κ°„ 속성
  • text-align : κ°€λ‘œ μ •λ ¬ 속성 (left. right, center, justify)

πŸŒ±κ΄€μ‹¬μ‚¬ 뢄리(SoC:Separation of Concerns)

  • μ •μ˜ : 컴퓨터 ν”„λ‘œκ·Έλž¨μ„ κ΅¬λ³„λœ λΆ€λΆ„μœΌλ‘œ λΆ„λ¦¬μ‹œν‚€λŠ” λ””μžμΈ 원칙
  • 관심사 λΆ„λ¦¬λΌλŠ” νŒ¨λŸ¬λ‹€μž„μ„ μ μš©ν•΄ 더 이상 <center>, <font>λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŒ (HTML은 ꡬ쑰λ₯Ό μ„€κ³„ν•˜λŠ” 일만 λ‹΄λ‹Ήν•˜κ³ , CSSλŠ” μŠ€νƒ€μΌλ§λ§Œ λ‹΄λ‹Ή)

πŸŒ±μ ˆλŒ€ λ‹¨μœ„μ™€ μƒλŒ€ λ‹¨μœ„

  • μ ˆλŒ€ λ‹¨μœ„ : px, pt λ“±
  • μƒλŒ€ λ‹¨μœ„ : %, em, rem, ch, vw, vh λ“±

πŸŒΏκΈ€κΌ΄ μ‚¬μ΄μ¦ˆλ₯Ό μ •ν•  λ•Œ

  1. μ ˆλŒ€μ μΈ 크기둜 μ •ν•˜λŠ” 경우 : px μ‚¬μš©
  • κ³ μ •λœ μ ˆλŒ€ λ‹¨μœ„μ΄κΈ° λ•Œλ¬Έμ— μ‚¬μš©μž 접근성이 뢈리
  • 픽셀은 인쇄와 같이 ν™”λ©΄μ˜ μ‚¬μ΄μ¦ˆκ°€ 정해진 κ²½μš°μ— 유리
  • κ³ ν•΄μƒλ„μ—μ„œλŠ” 1px이 λͺ¨λ‹ˆν„°μ˜ ν•œ 점보닀 크게 μ—…μŠ€μΌ€μΌ(upscale) 되기 λ•Œλ¬Έμ—, λšœλ ·ν•˜μ§€ λͺ»ν•œ ν˜•νƒœλ‘œ 좜λ ₯λ˜λŠ” κ²½μš°κ°€ 있음
  1. 일반적인 경우 : rem μ‚¬μš©
  • root의 κΈ€μž 크기, 즉 λΈŒλΌμš°μ €μ˜ κΈ°λ³Έ κΈ€μž 크기가 1rem이며, 두 배둜 크게 ν•˜κ³  μ‹Άλ‹€λ©΄ 2rem, μž‘κ²Œ ν•˜λ €λ©΄ 0.8rem λ“±μœΌλ‘œ 쑰절
  • μ‚¬μš©μžκ°€ μ„€μ •ν•œ κΈ°λ³Έ κΈ€κΌ΄ 크기λ₯Ό λ”°λ₯΄λ―€λ‘œ, 접근성에 μœ λ¦¬ν•¨
  • em은 λΆ€λͺ¨ μ—˜λ¦¬λ¨ΌνŠΈμ— 따라 μƒλŒ€μ μœΌλ‘œ 크기가 λ³€κ²½λ˜λ―€λ‘œ 계산이 어렀움. 이에 λΉ„ν•΄ rem은 root의 κΈ€μž 크기에 λ”°λΌμ„œλ§Œ μƒλŒ€μ μœΌλ‘œ 변함

πŸŒΏν™”λ©΄ μ‚¬μ΄μ¦ˆλ₯Ό μ •ν•  λ•Œ

  1. λ°˜μ‘ν˜• μ›Ή(responsive web) κΈ°μ€€ : px μ‚¬μš©
  • λ°˜μ‘ν˜• 웹은 λ””λ°”μ΄μŠ€μ˜ λ„ˆλΉ„(width)에 따라 μœ λ™μ μΈ λ ˆμ΄μ•„μ›ƒμ΄ μ μš©λ˜λŠ” μ‚¬μ΄νŠΈμ΄λ‹€.
  1. ν™”λ©΄ λ„ˆλΉ„λ‚˜ 높이에 λ”°λ₯Έ μƒλŒ€μ  크기가 μ€‘μš”ν•œ 경우 : vw(viewport width), vh(viewport height) μ‚¬μš©
  • 1vw λŠ” λ³΄μ΄λŠ” μ˜μ—­ λ„ˆλΉ„μ˜ 1/100을, 1vh λŠ” λ³΄μ΄λŠ” μ˜μ—­ λ†’μ΄μ˜ 1/100을 λœ»ν•¨ (화면을 가득 μ±„μš°λ©° λ”± λ–¨μ–΄μ§€κ²Œ 슀크둀 λ˜λŠ” μ‚¬μ΄νŠΈλŠ” 100vw, 100vh λ₯Ό μ‚¬μš©ν•΄ κ΅¬ν˜„ν•œ 것)
  • 참고둜 <body> νƒœκ·Έμ—μ„œμ˜ %λŠ” HTML이 μ°¨μ§€ν•˜λŠ” λͺ¨λ“  μ˜μ—­, 즉 μ§€κΈˆμ€ 보이지 μ•ŠμœΌλ‚˜ 슀크둀 ν–ˆμ„ λ•Œ λ³΄μ΄λŠ” μ˜μ—­κΉŒμ§€ ν¬ν•¨ν–ˆμ„ λ•Œ λΉ„μœ¨μž„

| μ˜ˆμ‹œ μ‚¬μ΄νŠΈ |

🌱Box Model

  • λͺ¨λ“  μ½˜ν…μΈ λŠ” 각자의 μ˜μ—­μ„ 가지며, ν•˜λ‚˜μ˜ μ»¨ν…μΈ λ‘œ λ¬Άμ΄λŠ” μš”μ†Œλ“€μ΄ ν•˜λ‚˜μ˜ λ°•μŠ€κ°€ λœλ‹€.

🌿block μš”μ†Œ vs inline μš”μ†Œ

  • block μš”μ†Œ : <h1>, <p>, <div> λ“±
  • inline μš”μ†Œ : <span> λ“± (inline은 width, height 속성이 μ μš©λ˜μ§€ μ•ŠμŒ)
blockinline-blockinline
μ€„λ°”κΏˆ μ—¬λΆ€μ€„λ°”κΏˆ μΌμ–΄λ‚¨μ€„λ°”κΏˆ μΌμ–΄λ‚˜μ§€ μ•ŠμŒμ€„λ°”κΏˆ μΌμ–΄λ‚˜μ§€ μ•ŠμŒ
κΈ°λ³Έ λ„ˆλΉ„ (width)100%κΈ€μžκ°€ μ°¨μ§€ν•˜λŠ” λ§ŒνΌκΈ€μžκ°€ μ°¨μ§€ν•˜λŠ” 만큼
width, height μ‚¬μš© κ°€λŠ₯ μ—¬λΆ€κ°€λŠ₯κ°€λŠ₯λΆˆκ°€λŠ₯

🌿Box ꡬ성 μš”μ†Œ

  • border : ν…Œλ‘λ¦¬λŠ” 심미적인 μš©λ„ 외에도, 개발 κ³Όμ •μ—μ„œλ„ 맀우 의미 있게 μ‚¬μš©λœλ‹€. (크기, μ˜μ—­ νŒŒμ•… λ“±)
  • margin : λ°”κΉ₯ μ—¬λ°± (속성값은 top, right, bottom, left둜 μ‹œκ³„λ°©ν–₯이며, 음수 κ°’ 지정도 κ°€λŠ₯)
  • padding : μ•ˆμͺ½ μ—¬λ°±

🌿Boxλ₯Ό λ²—μ–΄λ‚˜λŠ” μ½˜ν…μΈ  처리

  1. μ½˜ν…μΈ κ°€ μ°¨μ§€ν•˜λŠ” 높이보닀 μž‘μ€ κ°’ ν• λ‹Ή
  2. λ°•μŠ€ 크기에 맞좰 μ½˜ν…μΈ λ₯Ό 더 이상 ν‘œμ‹œν•˜μ§€ μ•Šκ±°λ‚˜ λ°•μŠ€ μ•ˆμ— μŠ€ν¬λ‘€μ„ μΆ”κ°€ (overflow)

🌿Box 크기 μΈ‘μ • κΈ°μ€€(Box Sizing)

  • content-boxλŠ” λ°•μŠ€μ˜ 크기λ₯Ό μΈ‘μ •ν•˜λŠ” 기본값이닀.
  • μ•„λž˜μ™€ 같이 여백을 κ³ λ €ν•˜μ§€ μ•Šκ³  κ³„μ‚°ν•˜λ©΄ λ ˆμ΄μ•„μ›ƒ λ””μžμΈμ΄ μ–΄λ €μ›Œμ§„λ‹€. (λŒ€λΆ€λΆ„μ˜ λ ˆμ΄μ•„μ›ƒ λ””μžμΈμ—μ„œ μ—¬λ°±κ³Ό ν…Œλ‘λ¦¬λ₯Ό ν¬ν•¨ν•˜λŠ” λ°•μŠ€ 크기 계산법인 border-boxλ₯Ό ꢌμž₯함)
<!--html-->
<div id="container">
  <div id="inner">
    μ•ˆμͺ½ box
  </div>
</div>
/*css*/
#container {
  width: 300px;
  padding: 10px;
  background-color: yellow;
  border: 2px solid red;
}

#inner {
  width: 100%;
  height: 200px;
  border: 2px solid green;
  background-color: lightgreen;
  padding: 30px;
}

ex) #container의 λ„ˆλΉ„λ₯Ό 300px둜 μ§€μ •ν–ˆλŠ”λ° 개발자 λ„κ΅¬λ‘œ 확인 μ‹œ 324px이 λ˜λŠ” 경우
300px (μ½˜ν…μΈ  μ˜μ—­)
+ 10px (padding-left)
+ 10px (padding-right)
+ 2px (border-left)
+ 2px (border-right)

  • μ—¬λ°±κ³Ό ν…Œλ‘λ¦¬ λ‘κ»˜λ₯Ό 포함해 λ°•μŠ€ 크기λ₯Ό κ³„μ‚°ν•˜κ²Œ λ§Œλ“œλŠ” 방법 (ꢌμž₯) : boder-box
/*css*/
* {
  box-sizing: border-box;
}

πŸŒ±μ…€λ ‰ν„°(Selector)

🌿기본 μ…€λ ‰ν„°

  • 전체 μ…€λ ‰ν„° : λ¬Έμ„œμ˜ λͺ¨λ“  μš”μ†Œ 선택
* { }
  • νƒœκ·Έ μ…€λ ‰ν„° : 같은 νƒœκ·Έλͺ…을 가진 λͺ¨λ“  μš”μ†Œ 선택 (볡수 선택 κ°€λŠ₯)
h1 { }
div { }

section, h1 { }
  • ID μ…€λ ‰ν„° : #으둜 μš”μ†Œ 선택
#only { }
  • class μ…€λ ‰ν„° : .으둜 μš”μ†Œ 선택
.widget { }
.center { }
  • attribute μ…€λ ‰ν„° : 같은 속성을 가진 μš”μ†Œ 선택
a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }

πŸŒΏμžμ‹/후손/ν˜•μ œ μ…€λ ‰ν„°

  • μžμ‹ μ…€λ ‰ν„° : 첫 번째둜 μž…λ ₯ν•œ μš”μ†Œμ˜ λ°”λ‘œ μ•„λž˜ μžμ‹μΈ μš”μ†Œλ₯Ό λͺ¨λ‘ 선택
header > p { }
<header>
	<p> <!-- 선택 -->
		<span>
			<p></p>
		</span>
	</p>
	<p> <!-- 선택 -->
		<span>
			<p></p>
		</span>
	</p>
</header>
  • 후손 μ…€λ ‰ν„° : 첫 번째둜 μž…λ ₯ν•œ μš”μ†Œ 뿐만 μ•„λ‹ˆλΌ ν›„μ†κΉŒμ§€ λͺ¨λ‘ 선택
header p {}
<header>
	<p><!-- 선택 -->
		<span>
			<p><!-- !!선택!! -->
			</p>
		</span>
	</p>
	<p><!-- 선택 -->
		<span>
			<p><!-- !!선택!! -->
			</p>
		</span>
	</p>
</header>
  • ν˜•μ œ μ…€λ ‰ν„° : 같은 λΆ€λͺ¨ μš”μ†Œλ₯Ό κ³΅μœ ν•˜λ©΄μ„œ, 첫 번째 μž…λ ₯ν•œ μš”μ†Œ 뒀에 μ˜€λŠ” 두 번째 μž…λ ₯ν•œ μš”μ†Œλ₯Ό λͺ¨λ‘ 선택
section ~ p { }
<header>
	<section></section>
	<p></p> <!-- 선택 -->
	<p></p> <!-- 선택 -->
	<p></p> <!-- 선택 -->
</header>
  • 인접 ν˜•μ œ μ…€λ ‰ν„° : 같은 λΆ€λͺ¨ μš”μ†Œλ₯Ό κ³΅μœ ν•˜λ©΄μ„œ, 첫 번째 μž…λ ₯ν•œ μš”μ†Œ λ°”λ‘œ 뒀에 μ˜€λŠ” 두 번째 μž…λ ₯ν•œ μš”μ†Œ 선택
section + p { }
<header>
	<section></section>
	<p></p> <!-- 선택 -->
	<p></p>
	<p></p>
</header>

πŸŒΏκΈ°νƒ€ μ…€λ ‰ν„°

  • 가상 클래슀 μ…€λ ‰ν„° : μš”μ†Œμ˜ μƒνƒœ 정보에 κΈ°λ°˜ν•΄ μš”μ†Œλ₯Ό 선택
a:link { } /*μ‚¬μš©μžκ°€ λ°©λ¬Έν•˜μ§€ μ•Šμ€ <a>μš”μ†Œλ₯Ό 선택*/
a:visited { } /*μ‚¬μš©μžκ°€ λ°©λ¬Έν•œ <a>μš”μ†Œλ₯Ό 선택 */
a:hover { } /* 마우슀λ₯Ό μš”μ†Œ μœ„μ— μ˜¬λ Έμ„ λ•Œ 선택 */
a:active { } /* ν™œμ„±ν™” 된(클릭된) μƒνƒœμΌ λ•Œ 선택 */
a:focus { } /* ν¬μ»€μŠ€κ°€ 듀어와 μžˆμ„ λ•Œ 선택 */
  • UI μš”μ†Œ μƒνƒœ μ…€λ ‰ν„°
input:checked + span { } /*체크 μƒνƒœμΌ λ•Œ 선택 */
input:enabled + span { } /*μ‚¬μš© κ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œ 선택 */
input:disabled + span { } /*μ‚¬μš© λΆˆκ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œ 선택 */
  • ꡬ쑰 가상 클래슀 μ…€λ ‰ν„°
p:first-child { } /*p μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, 첫 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택*/
ul > li:last-child { }
ul > li:nth-child(2n) { }
section > p:nth-child(2n+1) { } /*section의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, ν™€μˆ˜ 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ p인 것을 선택*/
ul > li:first-child { }
li:last-child { }
div > div:nth-child(4) { }
div:nth-last-child(2) { } /*div의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, λ§ˆμ§€λ§‰μ—μ„œ 두 번째 μ—˜λ¦¬λ¨ΌνŠΈκ°€ div인 것을 선택*/
section > p:nth-last-child(2n + 1) { }
p:first-of-type { } /*p μ—˜λ¦¬λ¨ΌνŠΈμ˜ ν˜•μ œ μ—˜λ¦¬λ¨ΌνŠΈ 쀑 첫 번째 p μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택 (first-childμ™€λŠ” λ‹€λ₯΄κ²Œ 첫 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ μ•„λ‹Œ, 처음 λ“±μž₯ν•˜λŠ” pλ₯Ό 선택)*/
div:last-of-type { }
ul:nth-of-type(2) { }
p:nth-last-of-type(1) { }
  • λΆ€μ • μ…€λ ‰ν„°
input:not([type="password"]) { }
div:not(:nth-of-type(2)) { }
  • μ •ν•©μ„± 확인 μ…€λ ‰ν„°
input[type="text"]:valid { }
input[type="text"]:invalid { }

μ…€λ ‰ν„° μ—°μŠ΅ κ²Œμž„

πŸŒ±μ•Œκ²Œλœ 점 & λŠλ‚€ 점


  • 아무리 ν›Œλ₯­ν•œ κΈ°λŠ₯을 가지고 μžˆλ”λΌλ„ UIκ°€ μ—†μœΌλ©΄ μ†Œμš©μ΄ μ—†λ‹€. κ·Έ UIλ₯Ό λ§Œλ“œλŠ” 역할이 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžμ΄λ‹€.
  • CSSλŠ” 배우기 κ°€μž₯ μ‰¬μš΄ λ™μ‹œμ—, κ°€μž₯ μ–΄λ €μš΄ 언어이닀. 규λͺ¨κ°€ 쑰금만 컀져도 CSSλ₯Ό 의미있게 κ΅¬μ„±ν•˜λŠ” 일이 μ–΄λ ΅κ³ , ν•œ 뢀뢄을 변경해도 μ˜λ„μΉ˜ μ•Šμ€ λ‹€λ₯Έ μš”μ†Œκ°€ λ³€κ²½λ˜λŠ” 일이 μžˆμ–΄ λ‹€μ–‘ν•œ λͺ¨λ²” 사둀(Best practice)λ₯Ό μ΅ν˜€μ•Ό ν•œλ‹€.
  • μ…€λ ‰ν„°,,,,ν—·κ°ˆλ¦¬λ‹ˆκΉŒ λ³΅μŠ΅μ΄λž‘ μ—°μŠ΅ κΌ­ ν•˜μž,,,,

πŸŒ±μΆ”κ°€ ν•™μŠ΅

  • λ‹€μ–‘ν•œ CSS selector μ΄ν•΄ν•˜κ³  μ΅μˆ™ν•΄μ§€κΈ° (https://codestates.github.io/sw-checkpoint-css-selector-deploy/)
  • 개발자 λ„κ΅¬μ˜ Element 탭을 μ΄μš©ν•˜μ—¬ 자주 κ°€λŠ” μ›Ή μ‚¬μ΄νŠΈμ˜ CSS 속성을 λ³€κ²½ν•΄ 보기

| 참고자료 |

profile
FE developer

0개의 λŒ“κΈ€