πŸ“ƒ Front-End

πŸ“ƒ Front-End/CSS

CSS μ „μ²˜λ¦¬κΈ°

CSS μ „μ²˜λ¦¬κΈ°λ₯Ό μ‚¬μš©ν•˜λ©΄ 개발적인 μΈ‘λ©΄μ—μ„œ μœ μ§€λ³΄μˆ˜μ„±κ³Ό λ™μΌν•œ μŠ€νƒ€μΌμ„ μ μš©ν•΄μ•Όν•˜λŠ” λŒ€μƒμ„ 보닀 μ‰½κ²Œ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€. CSS μ „μ²˜λ¦¬κΈ°μ˜ μž₯점 μž¬μ‚¬μš©μ„± 곡톡 μš”μ†Œ λ˜λŠ” 반볡적인 ν•­λͺ©μ„ λ³€μˆ˜ λ˜λŠ” ν•¨μˆ˜λ‘œ λŒ€μ²΄ μ‹œκ°„μ  λΉ„μš© κ°μ†Œ μž„μ˜ ν•¨μˆ˜ 및 Built-in(λ‚΄μž₯) ν•¨μˆ˜λ‘œ 인해 개발 μ‹œκ°„μ  λΉ„μš© μ ˆμ•½ μœ μ§€ 관리 쀑첩, 상속과 같은 μš”μ†Œλ‘œ 인해 κ΅¬μ‘°ν™”λœ μ½”λ“œλ‘œ μœ μ§€ 및 관리가 용이 CSS μ „μ²˜λ¦¬κΈ°μ˜ 단점 λΈŒλΌμš°μ €λŠ” CSS만 λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— μ „μ²˜λ¦¬κΈ°λŠ” 직접 λ™μž‘μ‹œν‚¬ μˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ CSS둜 컴파일 ν›„ λ™μž‘μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€. CSS μ „μ²˜λ¦¬κΈ° μ’…λ₯˜ Sass Less Stylus μ°Έκ³  MDN, css_preprocessor https://fathory.tistory.com/30 https://kdydesig..

πŸ“ƒ Front-End/CSS

CSS μ• λ‹ˆλ©”μ΄μ…˜κ³Ό JS μ• λ‹ˆλ©”μ΄μ…˜μ˜ 차이점

λ§Žμ€ μ›Ήμ‚¬μ΄νŠΈμ—μ„œ μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό λΆ€μ—¬ν•  λ•Œ CSS의 transition/animation 속성을 μ‚¬μš©ν•  수 있고 JavaScript의 setInterval()/requestAnimationFrame() 을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 각각을 μ‚¬μš©ν•  λ•Œμ˜ νŠΉμ§•μ΄ λ‹€λ₯΄κ³  μž₯단점이 λ‹€λ¦…λ‹ˆλ‹€. CSS μ• λ‹ˆλ©”μ΄μ…˜ κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ˜ 경우 CSS둜 처리 ν•©λ‹ˆλ‹€. transform 의 translate λ₯Ό μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„ν•  수 μžˆλŠ” μ• λ‹ˆλ©”μ΄μ…˜μ„ JavaScript의 style.top κ³Ό style.left 속성을 λ³€ν™” μ‹œν‚€κ²Œ 되면 λΈŒλΌμš°μ € λ Œλ”λ§ κ³Όμ •μ—μ„œ layout μ΄λ‚˜ paint 단계λ₯Ό 거쳐야 ν•  κ²½μš°κ°€ 생길 수 있기 λ•Œλ¬Έμ— μ„±λŠ₯ κ°œμ„ μ— νš¨μœ¨μ μ΄μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. CSS μ• λ‹ˆλ©”μ΄μ…˜ νŠΉμ§• μ™ΈλΆ€ 라이..

πŸ“ƒ Front-End/CSS

Resettingκ³Ό Normalizing CSS

μ›Ή λΈŒλΌμš°μ €λ§ˆλ‹€ 각자의 HTMLμš”μ†Œμ˜ κΈ°λ³Έ μŠ€νƒ€μΌμ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€. CSS μŠ€νƒ€μΌλ§μ„ μ μš©ν• λ•Œ μ΄λŸ¬ν•œ κΈ°λ³Έ μŠ€νƒ€μΌλ§λ“€μ΄ λ°©ν•΄λ₯Ό ν•  λΏλ”λŸ¬, λΈŒλΌμš°μ €λ§ˆλ‹€ λ‹€λ₯Έ HTML μš”μ†Œμ— λŒ€ν•œ κΈ°λ³Έ κ°’ λ•Œλ¬Έμ— μΌμ–΄λ‚˜λŠ” 크둜슀 λΈŒλΌμš°μ§• 을 막기 μœ„ν•΄μ„œ μž…λ‹ˆλ‹€. Reset CSS μ™„μ „νžˆ CSS λ₯Ό 아무것도 μ—†λŠ” λ°±μ§€μ²˜λŸΌ μ΄ˆκΈ°ν™” ν•©λ‹ˆλ‹€. μ£Όμ†Œ : https://meyerweb.com/eric/tools/css/reset/ μž₯점 λ‹€λ₯Έ 뢀뢄에 신경을 쓰지 μ•Šμ•„λ„ λ˜λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€. -> λͺ¨λ“  것을 resetν•˜κ³  μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ— κ³ λ €ν•΄μ•Όν•  λ³€μˆ˜κ°€ μ μŠ΅λ‹ˆλ‹€. 단점 μ μš©λ˜λŠ” μŠ€νƒ€μΌμ΄ ν•˜λ‚˜λ„ μ—†κΈ° λ•Œλ¬Έμ— 였히렀 μ½”λ“œμ˜ 길이가 κΈΈμ–΄μ§ˆ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λΈŒλΌμš°μ €λŠ” 계속 ν•΄μ„œ μ—…λ°μ΄νŠΈλ˜κ³  μžˆλŠ” 반면, 리셋 CSS의 졜근 μ—…λ°μ΄νŠΈλŠ” 20..

πŸ“ƒ Front-End/CSS

CSS μš°μ„ μˆœμœ„

CSS μš°μ„ μˆœμœ„ 속성 κ°’ 뒀에 !important λ₯Ό 뢙인 속성 HTML μ—μ„œ style을 직접 μ§€μ •ν•œ 속성(inline 방식) #id 둜 μ§€μ •ν•œ 속성 .class 둜 μ§€μ •ν•œ 속성 νƒœκ·Έμ΄λ¦„ 으둜 μ§€μ •ν•œ 속성 μƒμœ„ 객체에 μ˜ν•΄ 상속 된 속성

πŸ“ƒ Front-End/CSS

z-index

z-index 속성은 κ²ΉμΉ˜λŠ” μš”μ†Œμ˜ μŒ“μž„ μˆœμ„œλ₯Ό μ œμ–΄ ν•©λ‹ˆλ‹€. z-index λŠ” position 의 absolute, relative, fixed 일 λ•Œλ§Œ λ™μž‘ν•˜λ©° 음수λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, position: static 이 μ•„λ‹Œ 값을 κ°–λŠ” μš”μ†Œμ—λ§Œ 영ν–₯을 μ€λ‹ˆλ‹€. z-index κ·œμΉ™ position 속성이 μ—†λŠ” νƒœκ·Έλ“€μ€ λ‚˜μ˜€λŠ” μˆœμ„œλŒ€λ‘œ μŒ“μž…λ‹ˆλ‹€. position 속성이 μžˆλŠ” νƒœκ·Έλ“€μ€ μ—†λŠ” νƒœκ·Έλ“€λ³΄λ‹€ μœ„μ— λ‚˜μ˜€λŠ” μˆœμ„œλŒ€λ‘œ μŒ“μž…λ‹ˆλ‹€. position 속성에 z-indexκΉŒμ§€ μžˆλ‹€λ©΄ z-indexκ°€ 큰 νƒœκ·Έκ°€ μœ„μ— μŒ“μž…λ‹ˆλ‹€. z-index이 같은 값일 경우 HTML ꡬ쑰상 μ•„λž˜μΈ 것이 λ¨Όμ € 적용 λ©λ‹ˆλ‹€. z-indexκ°€ 아무리 크더라도 λΆ€λͺ¨ νƒœκ·Έμ˜ z-indexκ°€ 더 μš°μ„ μž…λ‹ˆλ‹€. z-index μ’…λ₯˜ ..

πŸ“ƒ Front-End/CSS

em & rem

μƒλŒ€μ μΈ λ°˜μ‘ν˜• μœ λ‹› 기본적으둜 λΈŒλΌμš°μ €μ—μ„œ HTML에 ν• λ‹Ή λ˜λŠ” 폰트 μ‚¬μ΄μ¦ˆλŠ” 16px μž…λ‹ˆλ‹€. μ‚¬μš©ν•˜λŠ” 이유 ? 폰트 μ‚¬μ΄μ¦ˆλ₯Ό px λ§Œμ„ μ‚¬μš©ν•˜μ—¬ λ‚˜νƒ€λ‚΄λ©΄ μ»¨ν…Œμ΄λ„ˆμ˜ μ‚¬μ΄μ¦ˆκ°€ λ³€κ²½λ˜μ–΄λ„ 컨텐츠가 κ·ΈλŒ€λ‘œ κ³ μ •λœ κ°’μœΌλ‘œ μœ μ§€λ©λ‹ˆλ‹€. λ˜ν•œ, μ‚¬μš©μžκ°€ λΈŒλΌμš°μ €μ—μ„œ 폰트 μ‚¬μ΄μ¦ˆ 섀정을 바꿔도 μ „ν˜€ λ°˜μ‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. em νƒ€μ΄ν¬κ·Έλž˜ν”Όμ—μ„œ ν˜„μž¬ μ§€μ •λœ 포인트 μ‚¬μ΄μ¦ˆλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ‹¨μœ„ μž…λ‹ˆλ‹€. em 의 경우 ν•΄λ‹Ή λ‹¨μœ„κ°€ μ‚¬μš©λ˜κ³  μžˆλŠ” λΆ€λͺ¨μš”μ†Œμ˜ font-size 속성 값이 κΈ°μ€€ μž…λ‹ˆλ‹€. Parent Child .parent{ font-size : 8em; } .child{ font-size : 0.5em; } κ°€μž₯ μœ„μ—μ„œ "기본적으둜 λΈŒλΌμš°μ €μ—μ„œ HTML에 ν• λ‹Ή λ˜λŠ” 폰트 μ‚¬μ΄μ¦ˆλŠ” 16px μž…λ‹ˆλ‹€." 라고 μ„€λͺ… ν–ˆ..

πŸ“ƒ Front-End/CSS

Flex

flexλŠ” 1μ°¨μ›μœΌλ‘œ μˆ˜ν‰, 수직 μ˜μ—­ 쀑 ν•˜λ‚˜μ˜ λ°©ν–₯으둜만 λ ˆμ΄μ•„μ›ƒμ„ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€. display : flex μ •λ ¬ ν•˜κ³ μž ν•˜λŠ” μš”μ†Œλ₯Ό κ°μ‹ΈλŠ” λΆ€λͺ¨μ—κ²Œ display : flex λ₯Ό μ„ μ–Έ ν•©λ‹ˆλ‹€. flex μ•„μ΄ν…œλ“€μ€ κ°€λ‘œ λ°©ν–₯으둜 배치되고, μžμ‹ μ΄ 가진 λ‚΄μš©λ¬Όμ˜ width 만큼만 차지 ν•©λ‹ˆλ‹€. μ„ μ–Έ μ‹œ, 보이지 μ•ŠλŠ” 두 개의 μΆ•(Axis)이 μƒκΉλ‹ˆλ‹€. .flexBox{ display: flex; } 메인좕(Main Axis), μˆ˜μ§μΆ• λ˜λŠ” ꡐ차좕(Cross Axis) Main axis : flex-direction λ°©ν–₯에 따라 Cross axis : mainκ³Ό μˆ˜μ§μ„ μ΄λ£¨λŠ” λ°©ν–₯ flex-direction μžμ‹λ“€μ΄ λ°°μΉ˜λ˜λŠ” μΆ•μ˜ λ°©ν–₯을 κ²°μ •ν•˜λŠ” 속성 .flexBox{ display: flex; f..

πŸ“ƒ Front-End/CSS

Grid

2μ°¨μ›μ μœΌλ‘œ μˆ˜ν‰κ³Ό μˆ˜μ§μ„ λ™μ‹œμ— λ‚˜λˆŒ 수 μžˆλŠ” λ ˆμ΄μ•„μ›ƒ 방법 μž…λ‹ˆλ‹€. display : grid , column κ³Ό rows 1 2 3 4 4 4 4 4 .father{ display: grid; /* μžμ‹μ˜ λΆ€λͺ¨μ—κ²Œ μ„ μ–Έ */ grid-template-columns:250px 250px 250px; /* μ›ν•˜λŠ” μ—΄λ§ŒνΌ μž…λ ₯ ν•œλ‹€ */ grid-template-rows: 100px 80px 300px; /*μ›ν•˜λŠ” row의 크기λ₯Ό μž…λ ₯ */ column-gap: 10px; /* column κ°„μ˜ 차이 */ row-gap: 10px; } .child{ flex-basis: 300px; background: peru; color: white; font-size: 50px; } repeat .grid{ dis..

HoHo.dev
'πŸ“ƒ Front-End' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (13 Page)