3.CSS in JS

CSS in JS λž€

CSS in JSλŠ” κΈ°μ‘΄ CSS νŒŒμΌμ„ μ‚¬μš©ν•˜λŠ” λŒ€μ‹  μžλ°”μŠ€ν¬λ¦½νŠΈ 파일 λ‚΄μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ ꡬ문을 μ‚¬μš©ν•˜μ—¬ CSS μŠ€νƒ€μΌμ„ μž‘μ„±ν•˜λŠ” 방식을 λ§ν•œλ‹€. κ°œλ°œμžκ°€ μž‘μ—… 쀑인 μ»΄ν¬λ„ŒνŠΈλ‚˜ λͺ¨λ“ˆ 내에 CSS μŠ€νƒ€μΌμ„ μΊ‘μŠν™”ν•  수 μžˆμ–΄ λͺ¨λ“ˆμ„±κ³Ό νŽΈμ˜μ„±μ„ 높일 수 μžˆλŠ” μ ‘κ·Ό 방식이닀.

  1. CSS와 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 톡합(Integration of CSS and JavaScript): CSS in JSλ₯Ό μ‚¬μš©ν•˜λ©΄ 일반적으둜 κ΄€λ ¨ μ»΄ν¬λ„ŒνŠΈ 둜직이 μžˆλŠ” λ™μΌν•œ 파일 λ˜λŠ” λͺ¨λ“ˆ λ‚΄μ—μ„œ CSS μŠ€νƒ€μΌμ΄ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œμ— 직접 μž‘μ„±λœλ‹€. μ΄λŸ¬ν•œ 톡합을 톡해 λ³„λ„μ˜ CSS 파일이 ν•„μš”ν•˜μ§€ μ•ŠμœΌλ©° 보닀 μΌκ΄€λœ 개발 ν™˜κ²½μ„ μ œκ³΅ν•œλ‹€.

  2. 동적 μŠ€νƒ€μΌλ§(Dynamic Styling): CSS in JSλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜, 쑰건, ν•¨μˆ˜λ₯Ό CSS μŠ€νƒ€μΌ λ‚΄μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•˜μ—¬ 동적 μŠ€νƒ€μΌλ§μ„ κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€. μ΄λŸ¬ν•œ μœ μ—°μ„± 덕뢄에 μ‚¬μš©μž μƒν˜Έ μž‘μš©, μ»΄ν¬λ„ŒνŠΈ μƒνƒœ λ˜λŠ” 기타 μš”μΈμ— 따라 변경될 수 μžˆλŠ” μŠ€νƒ€μΌμ„ λ§Œλ“€ 수 μžˆλ‹€. λ˜ν•œ λ‹€μ–‘ν•œ ν™”λ©΄ 크기와 ν™˜κ²½μ— 맞게 μ‘°μ •λ˜λŠ” λ°˜μ‘ν˜• λ””μžμΈμ„ μ‰½κ²Œ λ§Œλ“€ 수 μžˆλ‹€.

  3. λ²”μœ„ 지정 μŠ€νƒ€μΌ(Scoped Styles): CSS in JSλŠ” 일반적으둜 μŠ€νƒ€μΌμ΄ μ •μ˜λœ μ»΄ν¬λ„ŒνŠΈ λ˜λŠ” λͺ¨λ“ˆ λ‚΄μ—μ„œ μŠ€νƒ€μΌμ„ μΊ‘μŠν™”ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•œλ‹€. 즉, ν•œ μ»΄ν¬λ„ŒνŠΈμ— μ •μ˜λœ μŠ€νƒ€μΌμ΄ λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈμ˜ μŠ€νƒ€μΌμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμœΌλ―€λ‘œ λͺ…λͺ… 좩돌과 μŠ€νƒ€μΌ 유좜의 κ°€λŠ₯성이 μ€„μ–΄λ“­λ‹ˆλ‹€.

  4. λͺ¨λ“ˆμ„± 및 μž¬μ‚¬μš©μ„±(Modularity and Reusability): CSS in JSλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ μŠ€νƒ€μΌμ„ 포함할 수 μžˆλ„λ‘ ν—ˆμš©ν•˜μ—¬ λͺ¨λ“ˆμ„±κ³Ό μž¬μ‚¬μš©μ„±μ„ μ΄‰μ§„ν•œλ‹€. λ”°λΌμ„œ μ»΄ν¬λ„ŒνŠΈ 둜직과 ν•¨κ»˜ μŠ€νƒ€μΌμ„ 더 μ‰½κ²Œ κ΄€λ¦¬ν•˜κ³  μœ μ§€ 관리할 수 μžˆμ–΄ μ‚¬μš©ν•˜μ§€ μ•Šκ±°λ‚˜ μΆ©λŒν•˜λŠ” μŠ€νƒ€μΌμ΄ λ°œμƒν•  κ°€λŠ₯성이 μ€„μ–΄λ“­λ‹ˆλ‹€. λ˜ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ—¬λŸ¬ λΆ€λΆ„μ—μ„œ μ»΄ν¬λ„ŒνŠΈμ™€ κ΄€λ ¨ μŠ€νƒ€μΌμ„ μ‰½κ²Œ μž¬μ‚¬μš©ν•  수 μžˆλ‹€.

  5. μ„±λŠ₯ μ΅œμ ν™”(Performance Optimization): JS λ„κ΅¬μ˜ CSSλŠ” λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€ 쀑에 μ΅œμ ν™”λ₯Ό μˆ˜ν–‰ν•˜μ—¬ λΆˆν•„μš”ν•œ μŠ€νƒ€μΌμ„ μ œκ±°ν•˜κ³  μƒμ„±λœ CSS의 전체 크기λ₯Ό μ€„μ΄λŠ” κ²½μš°κ°€ λ§Žλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ λΈŒλΌμš°μ €μ—μ„œ λ‘œλ“œν•˜κ³  ꡬ문 뢄석해야 ν•˜λŠ” CSS의 양을 쀄여 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯을 κ°œμ„ ν•˜λŠ” 데 도움이 λœλ‹€.

  6. 툴링 및 라이브러리(Tooling and Libraries): JS 라이브러리 및 ν”„λ ˆμž„μ›Œν¬μ—λŠ” 각각 κ³ μœ ν•œ ꡬ문과 κΈ°λŠ₯을 κ°–μΆ˜ λ‹€μ–‘ν•œ CSSκ°€ λ“±μž₯ν–ˆλ‹€. 인기 μžˆλŠ” μ˜΅μ…˜μœΌλ‘œλŠ” μŠ€νƒ€μΌ μ»΄ν¬λ„ŒνŠΈ, 이λͺ¨μ…˜, CSS λͺ¨λ“ˆ 등이 μžˆλ‹€. μ΄λŸ¬ν•œ λ„κ΅¬λŠ” λ‹€μ–‘ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ ˆμž„μ›Œν¬ 및 λΌμ΄λΈŒλŸ¬λ¦¬μ— CSS in JSλ₯Ό μ‰½κ²Œ 톡합할 수 μžˆλŠ” API 및 μœ ν‹Έλ¦¬ν‹°λ₯Ό μ œκ³΅ν•œλ‹€.

  7. 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 등을 κΈ°μ€€μœΌλ‘œ μš”μ†Œλ₯Ό μΌμΉ˜μ‹œν‚€λŠ” λ‹€μ–‘ν•œ μ„ νƒμžλ₯Ό μ œκ³΅ν•œλ‹€.

  1. νƒœκ·Έ μ„ νƒμž(Tag Selectors): div, p λ˜λŠ” h1κ³Ό 같은 HTML νƒœκ·Έ 이름을 κΈ°μ€€μœΌλ‘œ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

  2. 클래슀 μ„ νƒμž(Class Selectors): .my-class와 같이 클래슀 이름 뒀에 점(.)을 μ‚¬μš©ν•˜μ—¬ ν• λ‹Ήλœ 클래슀 이름을 κΈ°μ€€μœΌλ‘œ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

  3. ID μ„ νƒμž(ID Selectors): ν•΄μ‹œ(#) 뒀에 ID 이름(예: #my-id)을 μ‚¬μš©ν•˜μ—¬ νŽ˜μ΄μ§€μ—μ„œ ID둜 κ³ μœ ν•œ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

  4. 속성 μ„ νƒμž(Attribute Selectors): μœ ν˜•μ΄ "ν…μŠ€νŠΈ"인 λͺ¨λ“  μž…λ ₯ μš”μ†Œλ₯Ό μ„ νƒν•˜λ €λ©΄ [type="text"]와 같이 속성을 κΈ°μ€€μœΌλ‘œ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

  5. μ˜μ‚¬ 클래슀(Pseudo-Classes): :hover, :active λ˜λŠ” :nth-child()와 같이 λ¬Έμ„œ λ‚΄ μƒνƒœ λ˜λŠ” μœ„μΉ˜μ— 따라 μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

  6. κ²°ν•©κΈ°(Combinators): μ—¬λŸ¬ μ„ νƒμžλ₯Ό κ²°ν•©ν•˜μ—¬ νŠΉμ • μš”μ†Œλ₯Ό λŒ€μƒμœΌλ‘œ μ§€μ •ν•œλ‹€. 일반적인 κ²°ν•©κΈ°μ—λŠ” ν•˜μœ„ μ„ νƒμž(곡백), ν•˜μœ„ μ„ νƒμž(>), μΈμ ‘ν•œ ν˜•μ œ μ„ νƒμž(+) 및 일반 ν˜•μ œ μ„ νƒμž(~)κ°€ μžˆλ‹€.

λ°•μŠ€λͺ¨λΈ

λ°•μŠ€ λͺ¨λΈμ€ μ½˜ν…μΈ , νŒ¨λ”©, ν…Œλ‘λ¦¬ 및 여백을 κ³ λ €ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€μ—μ„œ μš”μ†Œκ°€ λ Œλ”λ§λ˜λŠ” 방식을 μ„€λͺ…ν•˜λŠ” CSS의 핡심 κ°œλ…μ΄λ‹€. μƒμž λͺ¨λΈμ€ 각 μš”μ†Œλ₯Ό 크기와 간격에 영ν–₯을 μ£ΌλŠ” λ‹€μ–‘ν•œ 속성을 가진 μ§μ‚¬κ°ν˜• μƒμžλ‘œ μ·¨κΈ‰ν•œλ‹€.

  1. μ½˜ν…μΈ (Contents): ν…μŠ€νŠΈ, 이미지 λ˜λŠ” 기타 HTML μš”μ†Œμ™€ 같은 μš”μ†Œμ˜ μ‹€μ œ μ½˜ν…μΈ μ΄λ‹€.

  2. νŒ¨λ”©(Padding): μ½˜ν…μΈ μ™€ μš”μ†Œ ν…Œλ‘λ¦¬ μ‚¬μ΄μ˜ 곡간이닀. νŒ¨λ”©μ€ νŒ¨λ”© 상단, νŒ¨λ”© ν•˜λ‹¨, νŒ¨λ”© 였λ₯Έμͺ½, νŒ¨λ”© μ™Όμͺ½ λ˜λŠ” νŒ¨λ”©(padding-top, padding-bottom, padding-right, padding-left or padding)κ³Ό 같은 속성을 μ‚¬μš©ν•˜μ—¬ 지정할 수 μžˆλ‹€.

  3. ν…Œλ‘λ¦¬(Border): μš”μ†Œμ˜ νŒ¨λ”©κ³Ό μ½˜ν…μΈ λ₯Ό λ‘˜λŸ¬μ‹ΈλŠ” 선이닀. ν…Œλ‘λ¦¬λŠ” ν…Œλ‘λ¦¬ λ„ˆλΉ„, ν…Œλ‘λ¦¬ μŠ€νƒ€μΌ, ν…Œλ‘λ¦¬ 색상(border-width, border-style, border-color)κ³Ό 같은 속성을 μ‚¬μš©ν•˜μ—¬ μŠ€νƒ€μΌκ³Ό 크기λ₯Ό 지정할 수 μžˆλ‹€.

  4. μ—¬λ°±(Margin): μ—¬λ°±: μš”μ†Œμ˜ ν…Œλ‘λ¦¬ λ°”κΉ₯μͺ½ κ³΅κ°„μœΌλ‘œ μΈμ ‘ν•œ μš”μ†Œ 사이에 곡간을 λ§Œλ“­λ‹ˆλ‹€. 여백은 μ—¬λ°± 상단, μ—¬λ°± μ™Όμͺ½, μ—¬λ°± 였λ₯Έμͺ½, μ—¬λ°± ν•˜λ‹¨ λ˜λŠ” μ—¬λ°± (margin-top, margin-bottom, margin-right, margin-left or margin)κ³Ό 같은 속성을 μ‚¬μš©ν•˜μ—¬ 지정할 수 μžˆλ‹€.

media query

λ―Έλ””μ–΄ μΏΌλ¦¬λŠ” ν™”λ©΄ 크기, 해상도, λ°©ν–₯ λ“± μ‚¬μš©μžμ˜ κΈ°κΈ°λ‚˜ 뷰포트의 νŠΉμ„±μ— 따라 λ‹€μ–‘ν•œ μŠ€νƒ€μΌμ„ μ μš©ν•  수 μžˆλŠ” CSS κΈ°λŠ₯이닀. λ―Έλ””μ–΄ 쿼리λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ μž₯μΉ˜μ™€ ν™”λ©΄ 크기에 맞게 λ ˆμ΄μ•„μ›ƒκ³Ό μŠ€νƒ€μΌμ„ μ‘°μ •ν•˜μ—¬ λ°˜μ‘ν˜• μ›Ή λ””μžμΈμ„ κ΅¬ν˜„ν•  수 μžˆλ‹€.

  1. λ―Έλ””μ–΄ μœ ν˜•(Media Type): λ―Έλ””μ–΄ μΏΌλ¦¬λŠ” 컴퓨터 ν™”λ©΄μ˜ 경우 ν™”λ©΄(screen), 인쇄 맀체의 경우 인쇄(print), 슀크린 λ¦¬λ”μ˜ 경우 μŒμ„±(speech) λ“± λ‹€μ–‘ν•œ λ―Έλ””μ–΄ μœ ν˜•μ„ νƒ€κΉƒνŒ…ν•  수 μžˆλ‹€.

  2. λ―Έλ””μ–΄ κΈ°λŠ₯(Media Features): λ―Έλ””μ–΄ μΏΌλ¦¬λŠ” λ„ˆλΉ„, 높이, λ°©ν–₯, μ’…νš‘λΉ„, 색상 λ“± λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ νƒ€κ²Ÿ λ””λ°”μ΄μŠ€μ˜ 속성을 κ²°μ •ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ @media(max-width: 768px)λŠ” 뷰포트 λ„ˆλΉ„κ°€ 768ν”½μ…€ μ΄ν•˜μΌ λ•Œ μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€.

  3. λ°˜μ‘ν˜• λ””μžμΈ(Responsive Design): λ―Έλ””μ–΄ μΏΌλ¦¬λŠ” 일반적으둜 λ°˜μ‘ν˜• λ””μžμΈμ„ λ§Œλ“€κΈ° μœ„ν•΄ CSS κ·Έλ¦¬λ“œ 및 Flexbox와 ν•¨κ»˜ μ‚¬μš©λœλ‹€. ν™”λ©΄ ν¬κΈ°λ‚˜ κΈ°κΈ° λ°©ν–₯에 따라 μ„œλ‘œ λ‹€λ₯Έ μŠ€νƒ€μΌμ„ μ •μ˜ν•˜λ©΄ μ›Ή νŽ˜μ΄μ§€μ˜ λ ˆμ΄μ•„μ›ƒκ³Ό ν”„λ ˆμ  ν…Œμ΄μ…˜μ΄ 졜적의 μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•˜λ„λ‘ μ‘°μ •ν•  수 μžˆλ‹€.

Flexbox

ν”Œλ ‰μŠ€λ°•μŠ€: ν”Œλ ‰μ‹œλΈ” λ°•μŠ€ λ ˆμ΄μ•„μ›ƒμ˜ μ€„μž„λ§μΈ ν”Œλ ‰μŠ€λ°•μŠ€λŠ” μš”μ†Œλ₯Ό ν–‰μ΄λ‚˜ μ—΄λ‘œ λ°°μ—΄ν•  수 μžˆλŠ” 1차원 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ΄λ‹€. 곡간을 λΆ„λ°°ν•˜κ³ , μš”μ†Œλ₯Ό μ •λ ¬ν•˜κ³ , 크기와 μˆœμ„œλ₯Ό μ œμ–΄ν•  수 μžˆλŠ” μœ μ—°ν•˜κ³  동적인 방법을 μ œκ³΅ν•œλ‹€. Flexbox의 μ£Όμš” κΈ°λŠ₯ 및 κ°œλ…μ€ λ‹€μŒκ³Ό κ°™λ‹€:

  1. ν”Œλ ‰μŠ€ μ»¨ν…Œμ΄λ„ˆ(Flex Container): ν”Œλ ‰μŠ€ ν•­λͺ©μ„ ν¬ν•¨ν•˜λŠ” μƒμœ„ μš”μ†Œμ΄λ‹€. μ»¨ν…Œμ΄λ„ˆμ— CSS 속성 display: flex λ˜λŠ” display: inline-flexλ₯Ό μ μš©ν•˜λ©΄ ν”Œλ ‰μŠ€ μ»¨ν…Œμ΄λ„ˆκ°€ λœλ‹€.

  2. ν”Œλ ‰μŠ€ ν•­λͺ©(Flex Items): ν”Œλ ‰μŠ€ λ ˆμ΄μ•„μ›ƒμ˜ 영ν–₯을 λ°›λŠ” ν”Œλ ‰μŠ€ μ»¨ν…Œμ΄λ„ˆ λ‚΄μ˜ ν•˜μœ„ μš”μ†Œμ΄λ‹€. ν”Œλ ‰μŠ€ ν•­λͺ©μ€ μ»¨ν…Œμ΄λ„ˆ λ‚΄μ˜ μ‚¬μš© κ°€λŠ₯ν•œ 곡간에 맞게 크기λ₯Ό λŠ˜λ¦¬κ±°λ‚˜ μ€„μ΄κ±°λ‚˜ κ³ μ •ν•  수 μžˆλ‹€.

  3. μ£ΌμΆ• 및 ꡐ차 μΆ•(Main Axis and Cross Axis): ν”Œλ ‰μŠ€λ°•μŠ€λŠ” μ£ΌμΆ•κ³Ό ꡐ차 μΆ•μ˜ 두 좕을 따라 μž‘λ™ν•œλ‹€. 주좕은 ν–‰(μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½)(row (left-to-right)) λ˜λŠ” μ—΄(μœ„μ—μ„œ μ•„λž˜λ‘œ)(column (top-to-bottom)둜 μ„€μ •ν•  수 μžˆλŠ” ν”Œλ ‰μŠ€ λ°©ν–₯(flex-direction) 속성에 μ˜ν•΄ κ²°μ •λœλ‹€. μ‹­μžμΆ•μ€ 주좕에 μˆ˜μ§μ΄λ‹€.

  4. μœ μ—°μ„±(Flexibility): ν”Œλ ‰μŠ€λ°•μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš© κ°€λŠ₯ν•œ 곡간에 따라 ν”Œλ ‰μŠ€ ν•­λͺ©μ„ λŠ˜λ¦¬κ±°λ‚˜ 쀄일 수 μžˆλ‹€. ν”Œλ ‰μŠ€ μ„±μž₯(flex-grow), ν”Œλ ‰μŠ€ μΆ•μ†Œ(flex-shrink) 및 ν”Œλ ‰μŠ€ κΈ°μ€€(flex-basis) 속성은 ν”Œλ ‰μŠ€ ν•­λͺ©μ˜ 크기λ₯Ό μ‘°μ •ν•˜λŠ” 방법을 μ œμ–΄ν•œλ‹€.

  5. μ •λ ¬ 및 μ •λ‹Ήν™”(Alignment and Justification): FlexboxλŠ” μ½˜ν…μΈ  맞좀(justify-content) 및 ν•­λͺ© μ •λ ¬(align-itemsκ³Ό 같은 속성을 μ œκ³΅ν•˜μ—¬ μ£ΌμΆ• 및 ꡐ차 좕을 따라 ν”Œλ ‰μŠ€ ν•­λͺ©μ˜ μ •λ ¬ 및 뢄포λ₯Ό μ œμ–΄ν•œλ‹€. 이λ₯Ό 톡해 ν”Œλ ‰μŠ€ μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μš”μ†Œλ₯Ό μ‰½κ²Œ 쀑앙에 λ°°μΉ˜ν•˜κ³  간격을 μ‘°μ •ν•˜κ³  μ •λ ¬ν•  수 μžˆλ‹€.

μ΄λ²ˆμ—μ•Όλ§λ‘œ CSS Flexλ₯Ό μ΅ν˜€λ³΄μž

Grid

일반적으둜 CSS κ·Έλ¦¬λ“œλΌκ³  μ•Œλ €μ§„ CSS κ·Έλ¦¬λ“œ λ ˆμ΄μ•„μ›ƒμ€ λ³΅μž‘ν•œ κ·Έλ¦¬λ“œ 기반 λ ˆμ΄μ•„μ›ƒμ„ λ§Œλ“€ 수 μžˆλŠ” 2차원 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ΄λ‹€. ν–‰, μ—΄, κ·Έλ¦¬λ“œ λ‚΄ μš”μ†Œμ˜ μ •λ ¬ 및 배치λ₯Ό μ •λ°€ν•˜κ²Œ μ œμ–΄ν•  수 μžˆλ‹€.

  1. κ·Έλ¦¬λ“œ μ»¨ν…Œμ΄λ„ˆ(Grid Container): κ·Έλ¦¬λ“œ ν•­λͺ©μ„ ν¬ν•¨ν•˜λŠ” λΆ€λͺ¨ μš”μ†Œμ΄λ‹€. μ»¨ν…Œμ΄λ„ˆμ— CSS 속성 display: gridλ₯Ό μ μš©ν•˜λ©΄ κ·Έλ¦¬λ“œ μ»¨ν…Œμ΄λ„ˆκ°€ λœλ‹€.

  2. κ·Έλ¦¬λ“œ ν•­λͺ©(Grid Items): κ·Έλ¦¬λ“œ μ»¨ν…Œμ΄λ„ˆ λ‚΄μ˜ μžμ‹ μš”μ†Œμ΄λ‹€. κ·Έλ¦¬λ“œ ν•­λͺ©μ€ μ„  기반 배치 λ˜λŠ” κ·Έλ¦¬λ“œ μ˜μ—­ 배치λ₯Ό μ‚¬μš©ν•˜μ—¬ κ·Έλ¦¬λ“œ 내에 λ°°μΉ˜λœλ‹€.

  3. κ·Έλ¦¬λ“œ νŠΈλž™(Grid Tracks:): κ·Έλ¦¬λ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” κ°€λ‘œ 및 μ„Έλ‘œ νŠΈλž™μ΄λ‹€. νŠΈλž™μ€ κ·Έλ¦¬λ“œ ν…œν”Œλ¦Ώ μ—΄(grid-template-columns) 및 κ·Έλ¦¬λ“œ ν…œν”Œλ¦Ώ ν–‰(grid-template-rows) 속성을 μ‚¬μš©ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ μ •μ˜ν•˜κ±°λ‚˜ κ·Έλ¦¬λ“œ ν•­λͺ©μ„ λ°°μΉ˜ν•˜μ—¬ μ•”μ‹œμ μœΌλ‘œ λ§Œλ“€ 수 μžˆλ‹€.

  4. κ·Έλ¦¬λ“œ μ„ (Grid Lines): κ·Έλ¦¬λ“œλ₯Ό ν–‰κ³Ό μ—΄λ‘œ λ‚˜λˆ„λŠ” 선이닀. 이 선을 μ°Έμ‘°ν•˜μ—¬ κ·Έλ¦¬λ“œ ν•­λͺ©μ„ λ°°μΉ˜ν•˜κ³  μ •λ ¬ν•  수 μžˆλ‹€.

  5. κ·Έλ¦¬λ“œ μ˜μ—­(Grid Areas): κ·Έλ¦¬λ“œ ν•­λͺ©μ— ν• λ‹Ήν•  수 μžˆλŠ” κ·Έλ¦¬λ“œ λ‚΄μ˜ λͺ…λͺ…λœ μ˜μ—­μ΄λ‹€. κ·Έλ¦¬λ“œ-ν…œν”Œλ¦Ώ-μ˜μ—­(grid-template-areas) 속성을 μ‚¬μš©ν•˜μ—¬ κ·Έλ¦¬λ“œ μ˜μ—­μ„ μ§€μ •ν•˜λ©΄ κ·Έλ¦¬λ“œ λ‚΄μ—μ„œ κ·Έλ¦¬λ“œ ν•­λͺ©μ„ μ‰½κ²Œ λ°°μΉ˜ν•˜κ³  μž¬μ •λ ¬ν•  수 μžˆλ‹€.

  6. μ •λ ¬ 및 간격(Alignment and Spacing): CSS κ·Έλ¦¬λ“œμ—λŠ” κ·Έλ¦¬λ“œ μ…€ λ‚΄μ—μ„œ κ·Έλ¦¬λ“œ ν•­λͺ©μ˜ μ •λ ¬ 및 간격을 μ œμ–΄ν•  수 μžˆλŠ” justify-items, align-items, justify-content, align-content와 같은 속성이 μ œκ³΅λœλ‹€. 이λ₯Ό 톡해 μš”μ†Œμ˜ μœ„μΉ˜ 및 배열을 μ •λ°€ν•˜κ²Œ μ œμ–΄ν•  수 μžˆλ‹€.

  7. λ°˜μ‘ν˜• λ””μžμΈ(Responsive Design): CSS κ·Έλ¦¬λ“œλ₯Ό λ―Έλ””μ–΄ 쿼리와 κ²°ν•©ν•˜μ—¬ λ‹€μ–‘ν•œ ν™”λ©΄ 크기와 λ°©ν–₯에 맞게 μ‘°μ •λ˜λŠ” λ°˜μ‘ν˜• λ ˆμ΄μ•„μ›ƒμ„ λ§Œλ“€ 수 μžˆλ‹€. κ·Έλ¦¬λ“œ ν…œν”Œλ¦Ώμ„ μˆ˜μ •ν•˜κ³  ν•­λͺ© 배치λ₯Ό μ‘°μ •ν•˜μ—¬ μ‚¬μš© κ°€λŠ₯ν•œ 곡간에 따라 λ‹€μ–‘ν•œ λ ˆμ΄μ•„μ›ƒμ„ λ§Œλ“€ 수 μžˆλ‹€.

μ΄λ²ˆμ—μ•Όλ§λ‘œ CSS Gridλ₯Ό μ΅ν˜€λ³΄μž

Last updated