πŸ” ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ FE λ°λΈŒμ½”μŠ€ 5κΈ° TIL 20231103

Jun 2k (Jun2)Β·2023λ…„ 11μ›” 5일
1

πŸ’» Intro

7μ£Όμ°¨ κ³Όμ œκ°€ λλ‚˜κ³  μ†Œν”Όμ•„ λ§€λ‹ˆμ €λ‹˜κ»˜ μ „ν•΄λ“€μ—ˆλ˜ λŒ€λ§μ˜ CSS κ°•μ˜κ°€ μ‹œμž‘λ˜μ—ˆλ‹€.
CSS 속성값듀이 λ¬΄κΆλ¬΄μ§„ν•œλ§ŒνΌ κ°•μ˜λŸ‰λ„ μƒλ‹Ήν–ˆλ‹€.
ν•˜μ§€λ§Œ κ±±μ •ν–ˆλ˜ 것과 달리 λ°•μ˜μ›… κ°•μ‚¬λ‹˜μ˜ 토읡 κ°•μ˜μŠ€λŸ¬μš΄ 귀에 λ°•νžˆλŠ” λ”•μ…˜κ³Ό μ‘±μ§‘κ²Œ νŒλ“€μ΄ λ§Žμ•„ μ—„μ²­ 만쑱슀러운 κ°•μ˜μ˜€λ‹€.

λ ˆμ΄μ•„μ›ƒμ— λŒ€ν•œ CSSλŠ” μ›Ή κ°œλ°œμ„ κ³΅λΆ€ν•œμ§€ μ–΄μ–Έ 1년이 λ„˜μ–΄κ°€κΈ°μ— 주먹ꡬꡬ μ‹μœΌλ‘œ κ·Έλ•Œ κ·Έλ•Œ ν•„μš”ν•œ 것을 μ°Ύμ•„λ³΄λ©΄μ„œ λŒ€λž΅μ μœΌλ‘œλŠ” μ•Œκ³  μžˆμ—ˆλ‹€.
κ·Έλž˜μ„œ μ΄λ²ˆμ—λŠ” CSSλ₯Ό λ‹€λ£¨λ©΄μ„œ 이슈λ₯Ό κ²ͺμ—ˆλ˜ λ‚΄μš©λ“€μ— λŒ€ν•΄μ„œ μ™œ 그런 μ΄μŠˆκ°€ λ‚¬μ—ˆλŠ”μ§€λ₯Ό κ°•μ˜λ₯Ό 톡해 μ•Œκ²Œλœ 것이 μžˆλŠ”λ° 이것듀을 정리해보렀고 ν•œλ‹€.



🧐 였늘 μƒˆλ‘­κ²Œ 배운 것

float 속성을 ν•΄μ œν•˜λŠ” 방법

floatλ₯Ό μ μ ˆν•œ λ•Œμ— ν•΄μ œν•˜μ§€ μ•ŠμœΌλ©΄ μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 μ»¨ν…Œμ΄λ„ˆ λ°–μœΌλ‘œ μš”μ†Œλ“€μ΄ νŠ€μ–΄λ‚˜μ˜€κ²Œ λœλ‹€.


기본적으둜 floatλ₯Ό λΆ€μ—¬ν–ˆλ‹€κ°€ ν•΄μ œλ₯Ό ν•˜κ³  μ‹Άλ‹€λ©΄ ν•΄μ œλ₯Ό μ‹œμž‘ν•  μš”μ†Œμ— clear 속성을 λΆ€μ—¬ν•˜λ©΄ λœλ‹€.

ν•˜μ§€λ§Œ 이 방법은 clear 속성을 μœ„ν•œ ν•„μš”μ—†λŠ” div νƒœκ·Έμ™€ 같은 HTML μš”μ†Œλ₯Ό μΆ”κ°€ν•΄μ•Ό ν•œλ‹€. 이후 clearλ₯Ό λ‹€μ‹œ μ—†μ• μ£ΌκΈ° μœ„ν•œ μœ μ§€λ³΄μˆ˜ λ˜ν•œ λ²ˆκ±°λ‘­λ‹€.

λ”°λΌμ„œ λ‹€λ₯Έ 방법이 ν•„μš”ν•˜λ‹€!
두 κ°€μ§€ λ‹€λ₯Έ 방법이 μžˆλŠ”λ° 이 방법듀은 λ”°λ‘œ HTML에 μš”μ†Œλ₯Ό μΆ”κ°€ν•˜μ§€ μ•Šκ³ λ„ ν•΄μ œκ°€ κ°€λŠ₯ν•˜λ‹€.

  1. λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆμ— overflow: hidden을 λΆ€μ—¬ν•œλ‹€.

  2. λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆμ— ::after μ„ νƒμžλ₯Ό 톡해 clear 속성을 λΆ€μ—¬ν•  μžμ‹ μš”μ†Œλ₯Ό CSSμ—μ„œ λ™μ μœΌλ‘œ μΆ”κ°€ν•œλ‹€.

ν•˜μ§€λ§Œ 첫 번째 방법은 λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆμ˜ overflow 속성에 hidden이 μ•„λ‹Œ λ‹€λ₯Έ 속성(visible, clip) 등이 ν•„μš”ν•  경우 hidden을 μ§€μ •ν•  수 μ—†λŠ” 상황이 λ°œμƒν•  μˆ˜λ„ 있기 λ•Œλ¬Έμ— λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.

λ”°λΌμ„œ 두 번째 방법이 κ°€μž₯ 효과적이라고 ν•  수 μžˆλŠ”λ° 이 방법도 μ£Όμ˜ν•΄μ•Ό ν•  사항이 μžˆλ‹€.

  • λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆ μ•ˆμ˜ λͺ¨λ“  μš”μ†Œκ°€ float 속성을 κ°€μ Έμ•Ό ν•œλ‹€.
    κ·Έλ ‡μ§€ μ•Šμ€ μš”μ†Œκ°€ ν¬ν•¨λ˜μ–΄ μžˆλ‹€λ©΄ λ ˆμ΄μ•„μ›ƒμ΄ 망가진닀.



    이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” floatλ₯Ό μ§€μ •ν•  μš”μ†Œλ₯Ό 또 λ‹€λ₯Έ λΆ€λͺ¨ νƒœκ·Έλ‘œ 감싸고 ν•΄λ‹Ή νƒœκ·Έμ— ::after μš”μ†Œλ₯Ό μΆ”κ°€ν•˜λ©΄ λœλ‹€.

μŒ“μž„ λ§₯락 (Stacking Context)

기본적으둜 λ ˆμ΄μ•„μ›ƒμ„ ν‘œμ‹œν•  λ•ŒλŠ” z-indexλ₯Ό 톡해 μš°μ„ μˆœμœ„λ₯Ό μ„€μ •ν•œλ‹€.
z-indexλŠ” staticλ₯Ό μ œμ™Έν•œ λͺ¨λ“  position 속성 쀑 ν•˜λ‚˜λΌλ„ μ„€μ •λ˜μ–΄ 있으면 μ μš©ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ 이전 ν”„λ‘œμ νŠΈλ‚˜ 클둠코딩을 μ§„ν–‰ν•  λ•Œ z-indexλ₯Ό λΆ€μ—¬ν•˜μ§€ μ•Šμ•˜λŠ”λ° 일뢀 μš”μ†Œκ°€ μƒμœ„μ— ν‘œμ‹œλ  λ•Œκ°€ μžˆμ—ˆλ‹€.

μœ„ 사진과 같이 z-indexλ₯Ό λ”°λ‘œ μ§€μ •ν•˜μ§€ μ•Šμ•˜λŠ”λ° 2, 3번째 λ°•μŠ€κ°€ 1번 λ°•μŠ€λ³΄λ‹€ μœ„μ— μžˆλŠ” κ²ƒμ²˜λŸΌ λ Œλ”λ§λœλ‹€.

μ΄μœ κ°€ λ¬΄μ—‡μΌκΉŒ?

λ°”λ‘œ μŒ“μž„ λ§₯λ½μ΄λΌλŠ” κ°œλ…λ•Œλ¬Έμ΄λ‹€.

μŒ“μž„ λ§₯락이 λ°œμƒν•˜λŠ” λ‹€μ–‘ν•œ κ²½μš°κ°€ μžˆλŠ”λ° 이 쀑 2, 3번 λ°•μŠ€μ— 적용된 transformκ³Ό opacity 속성 λ˜ν•œ ν•΄λ‹Ή μš”μ†Œμ˜ μŒ“μž„ λ§₯락을 μƒμ„±ν•˜μ—¬ z-indexλ₯Ό μ μš©ν•œ κ²ƒμ²˜λŸΌ μŒ“μž„ λ§₯락이 μƒμ„±λ˜μ§€ μ•Šμ€ μš”μ†Œλ³΄λ‹€ μƒμœ„μ— μœ„μΉ˜ν•˜κ²Œ λœλ‹€.

λ”°λΌμ„œ λ ˆμ΄μ•„μ›ƒμ„ λ°°μΉ˜ν•  λ•Œ λ­”κ°€ z-indexλ₯Ό μ μš©ν•˜μ§€ μ•Šμ•˜λŠ”λ° μ΄λŸ¬ν•œ μ΄μŠˆκ°€ λ°œμƒν•˜λ©΄ μŒ“μž„ λ§₯락에 λŒ€ν•œ κ³΅μ‹λ¬Έμ„œ 뢀뢄을 참고해보면 쒋을 κ±° κ°™λ‹€.


inline-flex 와 inline-grid 적용 μ‹œ μ—¬λ°± λ°œμƒ

flex와 gridλ₯Ό 잘 λͺ¨λ₯΄κ³  μ‚¬μš©ν•  λ‹Ήμ‹œ inline-flex λ˜λŠ” inline-gridλ₯Ό μ μš©ν–ˆλŠ”λ° λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆ κ°„ 여백이 μžλ™μœΌλ‘œ λ°œμƒν•˜λŠ” 문제λ₯Ό κ²ͺμ—ˆμ—ˆλ‹€.

λ‚œ λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆ νƒœκ·Έμ˜ λ§ˆμ§„ λ¬Έμ œμΈκ°€? λΌλŠ” 생각 λ•Œλ¬Έμ— margin을 0으둜 지정해보기도 ν•΄λ΄€μ§€λ§Œ κ·ΈλŒ€λ‘œμ˜€λ‹€.

이번 κ°•μ˜μ—μ„œ κ·Έ 이유λ₯Ό μ•Œκ²Œ λ˜μ—ˆλ‹€. λ°”λ‘œ inline 속성이 λΆ€μ—¬λœ μš”μ†Œμ˜ κ³ μœ ν•œ νŠΉμ„± λ•Œλ¬Έμ΄μ—ˆλ‹€. inline μš”μ†ŒλŠ” κΈ€μžμ²˜λŸΌ μ΅œμ†Œ λ„ˆλΉ„λ₯Ό μœ μ§€ν•˜λ €κ³  ν•˜κ³  HTML μƒμ—μ„œ inline μš”μ†Œ κ°„ 띄어쓰기가 μžˆλ‹€λ©΄ 곡백이 μ μš©λ˜λŠ” κ²ƒμ΄μ—ˆλ‹€.

μ‚¬μ§„μ—μ„œλ„ μ€„λ°”κΏˆμ΄ μ‘΄μž¬ν•˜λ―€λ‘œ 띄어쓰기가 μ μš©λ˜μ–΄ 여백이 λ°œμƒν•˜λŠ” κ²ƒμ΄μ—ˆλ‹€.

κ·Έλž˜μ„œ λ‹¨μˆœν•˜μ§€λ§Œ HTMLμ—μ„œ λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆλ₯Ό λΆ™μ—¬μ„œ μž‘μ„±ν•˜κ²Œ 되면 곡백이 사라진닀.

ν•˜μ§€λ§Œ κΌ­ inline 속성이 ν•„μš”ν•œ 것이 μ•„λ‹ˆλΌλ©΄ λ˜λ„λ‘μ΄λ©΄ κΈ°μ‘΄ flexλ‚˜ grid 속성을 μ‚¬μš©ν•˜κ³  λ§ˆμ§„μ„ μ‘°μ ˆν•˜λ„λ‘ ν•˜λŠ” 것이 이런 이슈λ₯Ό κ²ͺμ§€ μ•ŠλŠ” 방법이닀.



πŸ™„ 더 곡뢀해야 ν•  것

grid의 2차원 λ ˆμ΄μ•„μ›ƒ 속성

항상 ν–‰κ³Ό 열이 μ•„μ§κΉŒμ§€ ν˜Όλ™μ΄ μ˜¨λ‹€... λ‹€μ‹œ 곡식 λ¬Έμ„œμ˜ grid ν•­λͺ©μ„ ν™•μΈν•˜κ³  grid-template-areas 속성을 톡해 μš”μ†Œμ˜ 이름을 λΆ™μ—¬μ„œ μ‹œκ°μ μœΌλ‘œ λ ˆμ΄μ•„μ›ƒμ„ κ΅¬μ„±ν•˜λŠ” μ—°μŠ΅μ„ ν•΄μ•Όκ² λ‹€.



πŸ‘€ λŠλ‚€μ 

πŸ‘ Keep

  • μ•žμ„  과제 및 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ cssλ₯Ό μ‘°κΈˆμ΄λΌλ„ 꾸며보렀고 찾아보고 κ΅¬ν˜„ν•΄λ³΄μ•˜λ˜ 것이 도움이 λœλ‹€. μ•„μ˜ˆ 처음 λ“£λŠ” λ‚΄μš©μ΄ μ•„λ‹ˆμ–΄μ„œ μ΄ν•΄ν•˜λŠ”λ° 크게 μ–΄λ ΅μ§€ μ•Šμ•˜κ³  이전에 CSSλ₯Ό λ§Œμ§€λ‹€κ°€ κ²ͺμ—ˆλ˜ 이유 λͺ¨λ₯Ό μ΄μŠˆμ— λŒ€ν•œ 원인 및 해결방법을 μ•Œκ²Œ λ˜μ–΄μ„œ μ’‹λ‹€.

😱 Problem

  • μ•„μ§κΉŒμ§€ float와 flex, grid에 λŒ€ν•œ μˆ™λ‹¬μ΄ λ˜μ§€ μ•Šμ€ 것 κ°™λ‹€. μ•žμœΌλ‘œ ν”„λ‘œμ νŠΈλ‚˜ 과제λ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ 많이 μ‚¬μš©ν•΄λ³΄λ©΄μ„œ μ‹€μ‚¬μš© κ²½ν—˜μ„ μŒ“μ•„μ•Ό ν•  것 κ°™λ‹€.

😜 Try

  • CSS μ„ νƒμž 쀑 ::after 가상 μš”μ†Œλ‚˜ :nth-child 등을 많이 μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μ—ˆλŠ”λ° μ μš©ν•΄λ³΄μ•„μ•Όκ² λ‹€.


πŸ˜… ν•΄λ‹Ή λ‚΄μš©μ€ κ³΅λΆ€ν•˜λ©΄μ„œ μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. ν‹€λ¦° λΆ€λΆ„μ΄λ‚˜ μ˜€ν•΄ν•˜κ³  μžˆλŠ” 뢀뢄이 μžˆλ‹€λ©΄ ν”Όλ“œλ°± λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

profile
ν”„λ‘ νŠΈμ—”λ“œ 개발자 쀀비쀑...

0개의 λŒ“κΈ€