2.Style Basics

className

JavaScriptμ—μ„œμ˜ className

μ•„μ£Ό μ˜€λž˜μ „ μžλ°”μŠ€ν¬λ¦½νŠΈμ—” "class"같은 μ˜ˆμ•½μ–΄λŠ” 객체의 ν”„λ‘œνΌν‹°κ°€ 될 수 μ—†λ‹€λŠ” μ œμ•½μ‚¬ν•­μ΄ μžˆμ—ˆλ‹€. μ§€κΈˆμ€ 이런 μ œμ•½μ‚¬ν•­μ΄ μ‚¬λΌμ‘Œμ§€λ§Œ, κ³Όκ±°μ—” "class" ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•  수 μ—†μ—ˆκΈ° λ•Œλ¬Έμ— elem.classλ₯Ό μ‚¬μš©ν•˜λŠ” 것 μ—­μ‹œ λΆˆκ°€λŠ₯ν–ˆλ‹€.

이런 λ°°κ²½ λ•Œλ¬Έμ— 클래슀λ₯Ό μœ„ν•œ ν”„λ‘œνΌν‹° "className"κ°€ λ„μž…λ˜κ²Œ λ˜μ—ˆλ‹€. elem.classNameλŠ” "class" 속성에 λŒ€μ‘ν•œλ‹€.

className – 클래슀 전체λ₯Ό λ¬Έμžμ—΄ ν˜•νƒœλ‘œ λ°˜ν™˜ν•΄μ£ΌλŠ” ν”„λ‘œνΌν‹°λ‘œ 클래슀 전체λ₯Ό 관리할 λ•Œ μœ μš©ν•œλ‹€.

JSXμ—μ„œμ˜ className

μ›Ή κ°œλ°œμ—μ„œ className은 HTML 및 JSX(JavaScript XML) κ΅¬λ¬Έμ—μ„œ μš”μ†Œμ— ν•˜λ‚˜ μ΄μƒμ˜ CSS 클래슀λ₯Ό ν• λ‹Ήν•˜λŠ” 데 일반적으둜 μ‚¬μš©λ˜λŠ” 속성이닀. 이λ₯Ό 톡해 κ°œλ°œμžλŠ” μš”μ†Œμ— CSS에 μ •μ˜λœ νŠΉμ • μŠ€νƒ€μΌμ„ μ μš©ν•˜μ—¬ μ›ν•˜λŠ” λͺ¨μ–‘κ³Ό λ™μž‘μ„ μ œκ³΅ν•  수 μžˆλ‹€.

λ‹€μŒμ€ className 속성에 λŒ€ν•΄ 이해해야 ν•  λͺ‡ 가지 μ€‘μš”ν•œ 사항

λͺ©μ (Purpose): className μ†μ„±μ˜ μ£Όμš” λͺ©μ μ€ CSS 클래슀λ₯Ό HTML λ˜λŠ” JSX μš”μ†Œμ™€ μ—°κ²°ν•˜λŠ” 것이닀. CSS ν΄λž˜μŠ€λŠ” μš”μ†Œμ— μ μš©ν•΄μ•Ό ν•˜λŠ” μŠ€νƒ€μΌ, λ ˆμ΄μ•„μ›ƒ 및 μ‹œκ°μ  속성을 μ •μ˜ν•œλ‹€.

ꡬ문(Syntax): className 속성은 μš”μ†Œμ˜ μ‹œμž‘ νƒœκ·Έμ˜ μΌλΆ€λ‘œ className="value" ꡬ문을 μ‚¬μš©ν•˜μ—¬ μ§€μ •λœλ‹€. className에 ν• λ‹Ήλœ 값은 ν•˜λ‚˜ μ΄μƒμ˜ 곡백으둜 κ΅¬λΆ„λœ 클래슀 이름을 ν¬ν•¨ν•˜λŠ” λ¬Έμžμ—΄μ΄λ‹€.

<div className="container main-section">Content goes here</div>

이 μ˜ˆμ œμ—μ„œ <div> μš”μ†Œμ—λŠ” 두 가지 클래슀 이름이 ν• λ‹Ήλ˜μ–΄ μžˆλ‹€: "container", "main-section"이닀.

μ—¬λŸ¬ 클래슀(Multiple Classes): className 속성은 곡백으둜 κ΅¬λΆ„ν•˜μ—¬ μš”μ†Œμ— μ—¬λŸ¬ 클래슀 이름을 ν• λ‹Ήν•  수 μžˆλ„λ‘ μ§€μ›ν•œλ‹€. 이λ₯Ό 톡해 μ—¬λŸ¬ μŠ€νƒ€μΌμ„ μ μš©ν•˜κ³  μš”μ†Œμ— μ„œλ‘œ λ‹€λ₯Έ CSS 클래슀의 효과λ₯Ό κ²°ν•©ν•  수 μžˆλ‹€.

μž¬μ‚¬μš©μ„± 및 λͺ¨λ“ˆμ„±(Reusability and Modularity): CSS ν΄λž˜μŠ€λŠ” μŠ€νƒ€μΌμ„ ν•œ 번 μ •μ˜ν•˜μ—¬ μ›Ήμ‚¬μ΄νŠΈμ˜ μ—¬λŸ¬ μš”μ†Œμ— μ μš©ν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€. μ—¬λŸ¬ μš”μ†Œμ— λ™μΌν•œ 클래슀 이름을 μ§€μ •ν•˜λ©΄ μΌκ΄€λœ μŠ€νƒ€μΌκ³Ό μœ μ§€ 관리 κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό 보μž₯ν•  수 μžˆλ‹€.

CSS 클래슀 μ •μ˜(CSS Class Definitions): className 속성과 μ—°κ²°λœ CSS ν΄λž˜μŠ€λŠ” λ³„λ„μ˜ CSS 파일 λ˜λŠ” <style>νƒœκ·Έ 내에 μ •μ˜λœλ‹€. className μ†μ„±μ˜ 클래슀 이름은 CSS 파일 λ˜λŠ” <style> νƒœκ·Έμ— μ •μ˜λœ 이름과 μΌμΉ˜ν•œλ‹€. ν•΄λ‹Ή 클래슀 이름에 μ •μ˜λœ μŠ€νƒ€μΌμ΄ 각 μš”μ†Œμ— μ μš©λœλ‹€.

계단식 및 νŠΉμ •μ„±(Cascading and Specificity): className 속성을 톡해 μ—¬λŸ¬ CSS ν΄λž˜μŠ€κ°€ μš”μ†Œμ— ν• λ‹Ήλœ 경우 ν•΄λ‹Ή ν΄λž˜μŠ€μ— λŒ€ν•΄ μ •μ˜λœ μŠ€νƒ€μΌμ΄ κ³„λ‹¨μ‹μœΌλ‘œ μ μš©λ˜μ–΄ μ„œλ‘œ μƒν˜Έ μž‘μš©ν•  수 μžˆλ‹€. μΆ©λŒν•˜λŠ” μŠ€νƒ€μΌμ΄ μ •μ˜λœ 경우 className μ†μ„±μ˜ 클래슀 이름 μˆœμ„œκ°€ μš”μ†Œμ˜ μ΅œμ’… λͺ¨μ–‘에 영ν–₯을 쀄 수 μžˆλ‹€.

μ „λ°˜μ μœΌλ‘œ className 속성은 μ›Ή κ°œλ°œμ—μ„œ CSS ν΄λž˜μŠ€μ™€ HTML λ˜λŠ” JSX μš”μ†Œμ˜ 연결을 μš©μ΄ν•˜κ²Œ ν•˜λŠ” μ€‘μš”ν•œ μš”μ†Œμ΄λ‹€. 이λ₯Ό 톡해 κ°œλ°œμžλŠ” μŠ€νƒ€μΌμ„ μ μš©ν•˜κ³  μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ›ν•˜λŠ” μ‹œκ°μ  ν‘œν˜„κ³Ό λ™μž‘μ„ κ΅¬ν˜„ν•  수 μžˆλ‹€.

μ˜λ―ΈμžˆλŠ” λ§ˆν¬μ—…

μ‹œλ§¨ν‹± λ§ˆν¬μ—…μ΄λΌκ³ λ„ ν•˜λŠ” 의미 μžˆλŠ” λ§ˆν¬μ—…μ€ ν‘œμ‹œλ˜λŠ” μ½˜ν…μΈ μ˜ ꡬ쑰와 의미λ₯Ό μ •ν™•ν•˜κ²Œ ν‘œν˜„ν•˜λŠ” λ°©μ‹μœΌλ‘œ HTML μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” 것을 κ°•μ‘°ν•˜λŠ” μ›Ή 개발 μ ‘κ·Ό 방식이닀. μ—¬κΈ°μ—λŠ” μ‹œκ°μ  μ„œμ‹μ΄λ‚˜ 일반 μ»¨ν…Œμ΄λ„ˆμ—λ§Œ μ˜μ‘΄ν•˜μ§€ μ•Šκ³  μ½˜ν…μΈ μ˜ λͺ©μ κ³Ό λ§₯락을 μ „λ‹¬ν•˜λŠ” 데 κ°€μž₯ μ ν•©ν•œ HTML μš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” 것이 ν¬ν•¨λœλ‹€.

  1. HTML ꡬ쑰(HTML Structure): 의미 μžˆλŠ” λ§ˆν¬μ—…μ€ μ½˜ν…μΈ μ˜ ꡬ쑰와 λͺ©μ μ„ κ°€μž₯ 잘 μ„€λͺ…ν•˜λŠ” HTML μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” 데 쀑점을 λ‘‘λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, κΈ°λ³Έ 제λͺ©μ—λŠ” <h1>, λ‹¨λ½μ—λŠ” <p>, 탐색 λ©”λ‰΄μ—λŠ” <nav>, μ½˜ν…μΈ μ˜ κ°œλ³„ μ„Ήμ…˜μ—λŠ” <section>을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€. μ μ ˆν•œ μš”μ†Œλ₯Ό ν™œμš©ν•˜λ©΄ μ½˜ν…μΈ μ˜ ꡬ쑰와 계측 ꡬ쑰가 μ‚¬λžŒκ³Ό 검색 엔진 λͺ¨λ‘μ—κ²Œ λͺ…ν™•ν•˜κ³  의미 있게 μ „λ‹¬λœλ‹€.

  2. μ ‘κ·Όμ„±(Accessibility)(SEO - Search Engine Optimization): μ ‘κ·Ό κ°€λŠ₯ν•œ μ›Ήμ‚¬μ΄νŠΈλ₯Ό λ§Œλ“€λ €λ©΄ 의미 μžˆλŠ” λ§ˆν¬μ—…μ΄ ν•„μˆ˜μ μ΄λ‹€. μ‹œλ§¨ν‹± μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λ©΄ 슀크린 리더와 보쑰 기술이 μ½˜ν…μΈ λ₯Ό 더 잘 μ΄ν•΄ν•˜κ³  탐색할 수 μžˆλ‹€. 이λ₯Ό 톡해 μ‹œκ° μž₯애와 같은 μž₯μ• κ°€ μžˆλŠ” μ‚¬λžŒλ„ 효과적으둜 정보에 μ•‘μ„ΈμŠ€ν•˜κ³  이해할 수 μžˆλ‹€.

  3. SEO(검색 엔진 μ΅œμ ν™”): 검색 엔진은 μ›Ή νŽ˜μ΄μ§€λ₯Ό μ •ν™•ν•˜κ²Œ μ΄ν•΄ν•˜κ³  색인을 μƒμ„±ν•˜κΈ° μœ„ν•΄ 의미 μžˆλŠ” λ§ˆν¬μ—…μ— μ˜μ‘΄ν•œλ‹€. μ‹œλ§¨ν‹± HTML μš”μ†Œλ₯Ό μ‚¬μš©ν•˜κ³  κ·Έ μ•ˆμ— 의미 μžˆλŠ” μ½˜ν…μΈ λ₯Ό μ œκ³΅ν•˜λ©΄ 검색 엔진 κ²°κ³Όμ—μ„œ μ›Ήμ‚¬μ΄νŠΈμ˜ κ°€μ‹œμ„±κ³Ό μˆœμœ„λ₯Ό ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€. μ‹œλ§¨ν‹± λ§ˆν¬μ—…μ€ 검색 엔진이 μ½˜ν…μΈ λ₯Ό ν•΄μ„ν•˜κ³  검색 μΏΌλ¦¬μ™€μ˜ 관련성을 νŒλ‹¨ν•˜λŠ” 데 도움이 λœλ‹€.

  4. μœ μ§€ 관리 및 적응성(Maintenance and Adaptability): 의미둠적 λ§ˆν¬μ—…μ„ μ‚¬μš©ν•˜λ©΄ μ›Ήμ‚¬μ΄νŠΈλ₯Ό 더 μ‰½κ²Œ μœ μ§€ κ΄€λ¦¬ν•˜κ³  μ—…λ°μ΄νŠΈν•  수 μžˆλ‹€. λ§ˆν¬μ—…μ΄ μ½˜ν…μΈ μ˜ ꡬ쑰λ₯Ό μ •ν™•ν•˜κ²Œ λ°˜μ˜ν•˜λ©΄ λ³€κ²½, μ„Ήμ…˜ μΆ”κ°€ λ˜λŠ” 제거, μ‚¬μ΄νŠΈ 전체에 μΌκ΄€λœ μŠ€νƒ€μΌ 적용이 더 κ°„λ‹¨ν•΄μ§‘λ‹ˆλ‹€. λ˜ν•œ 의미 μžˆλŠ” λ§ˆν¬μ—…μ€ ꡬ쑰가 잘 μ •μ˜λ˜μ–΄ 있고 CSS λ―Έλ””μ–΄ 쿼리둜 μ‘°μ •ν•  수 μžˆμœΌλ―€λ‘œ μ›Ήμ‚¬μ΄νŠΈκ°€ λ‹€μ–‘ν•œ μž₯μΉ˜μ™€ ν™”λ©΄ 크기에 더 μ‰½κ²Œ 적응할 수 μžˆλ‹€.

  5. 관심사 뢄리(Separation of Concerns): 의미 μžˆλŠ” λ§ˆν¬μ—…μ€ ꡬ쑰(HTML), ν”„λ ˆμ  ν…Œμ΄μ…˜(CSS), κΈ°λŠ₯(JavaScript)의 뢄리λ₯Ό μ΄‰μ§„ν•œλ‹€. HTMLμ—μ„œ μ½˜ν…μΈ μ˜ μ˜λ―Έμ™€ ꡬ쑰에 μ§‘μ€‘ν•¨μœΌλ‘œμ¨ μΌκ΄€λœ μŠ€νƒ€μΌμ„ μ μš©ν•˜κ³  λ³„λ„μ˜ CSS 및 JavaScript νŒŒμΌμ„ 톡해 κΈ°λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 것이 더 μ‰¬μ›Œμ§‘λ‹ˆλ‹€. μ΄λ ‡κ²Œ λΆ„λ¦¬ν•˜λ©΄ μ½”λ“œ μœ μ§€ 관리와 가독성이 ν–₯μƒλœλ‹€.

  6. μ»¨ν…μŠ€νŠΈ 및 λͺ…ν™•μ„±(Context and Clarity): 의미 μžˆλŠ” λ§ˆν¬μ—…μ€ μ½˜ν…μΈ μ— λͺ…ν™•μ„±κ³Ό λ§₯락을 μ œκ³΅ν•˜λŠ” 데 도움이 λœλ‹€. μ½˜ν…μΈ μ˜ λͺ©μ μ„ μ •ν™•ν•˜κ²Œ μ„€λͺ…ν•˜λŠ” μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λ©΄ 개발자, λ””μžμ΄λ„ˆ, μ½˜ν…μΈ  μ œμž‘μžκ°€ μ½”λ“œλ² μ΄μŠ€λ₯Ό 더 μ‰½κ²Œ μ΄ν•΄ν•˜κ³  μž‘μ—…ν•  수 μžˆλ‹€. λ˜ν•œ 의미 μžˆλŠ” λ§ˆν¬μ—…μ€ μ½˜ν…μΈ κ°€ 잘 κ΅¬μ‘°ν™”λ˜κ³  μ‰½κ²Œ 이해할 수 μžˆλ„λ‘ ν•¨μœΌλ‘œμ¨ μ „λ°˜μ μΈ μ‚¬μš©μž κ²½ν—˜μ„ κ°œμ„ ν•œλ‹€.

Last updated