[λ©‹μ‚¬πŸ¦] 2μ£Όμ°¨(수) νŠΉκ°•, μΉ΄λ“œ ν”Œλ¦½ μ• λ‹ˆλ©”μ΄μ…˜, preserve-3d 이해

쟈λͺ½Β·2021λ…„ 11μ›” 10일
4

κ°œλ°œλ‰΄λΉ„(21/10/23~)

λͺ©λ‘ 보기
15/20

λ©‹μŸμ΄ μ‚¬μžμ²˜λŸΌπŸ¦ ν”„λ‘ νŠΈμ—”λ“œ 슀쿨 1κΈ° 2μ£Όμ°¨(수) 회고 - November 10, 2021.

[ 회고 ]

μˆ˜μ—… ν›„ λ…μΌμ—μ„œ κ·Όλ¬΄ν•˜μ‹œλŠ” μ΄μˆ˜μ§„ κ°œλ°œμžλ‹˜μ˜ νŠΉκ°•μ„ λ“£κ³  λ°°μ›€μ—λŠ” 끝이 μ—†λ‹€λŠ” 생각과, κ·ΈλŸΌμ—λ„ λ‚˜ λ˜ν•œ 이 길이 적성에 λ§žλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— 열정이 더 μƒκΈ°λŠ” 것을 λŠκΌˆλ‹€. λΉ„μ „κ³΅μžλ‘œ μ‹œμž‘ν•˜μ…¨κΈ° λ•Œλ¬Έμ— 쀑간쀑간 '처음의 νž˜λ“¦'을 λ§μ”€ν•˜μ‹€ λ•Œ 더 μ΄μž…μ΄ 됐던 것 κ°™λ‹€.

μ§€κΈˆμ€ 이미 경지에 였λ₯΄μ‹  μƒνƒœλΌ λ‚΄κ°€ μ•Œμ•„λ“£λŠ” λ‚΄μš©λ³΄λ‹€ λͺ» μ•Œμ•„λ“£λŠ” λ‚΄μš©μ΄ 훨씬 λ§Žμ•˜μ§€λ§ŒπŸ˜‚ 였늘 νŠΉκ°• λ‚΄μš© λ©”λͺ¨ν•œ κ±° 잘 정리해뒀닀가 ν•„μš”ν•œ μˆœκ°„μ— 적극 ν™œμš©ν•  것이닀. 그리고 μ˜μ–΄μ™€ μΉœμˆ™ν•΄μ Έμ•Όκ² λ‹€κ³  λŠκΌˆλ‹€. μœ μ΅ν•œ μ‹œκ°„μ΄μ—ˆλ‹€ 😊

μ—¬λŸ¬λͺ¨λ‘œ μ•„μΉ¨λΆ€ν„° 생각이 λ§Žμ•˜λ˜ 날이닀. λ‚΄κ°€ λ„ˆλ¬΄ λΆ€μ‘±ν•˜κ³  배울 λ‚΄μš©μ€ 또 λ„ˆλ¬΄ 많이 λ‚¨μ•„μžˆλ‹€λŠ” 생각에 압박감을 λŠκ»΄μ™€μ„œ, 계속 μž μ„ μ€„μ—¬κ°€λ©΄μ„œ κ³΅λΆ€ν•˜λ‹ˆκΉŒ λͺΈμ΄ 많이 μ§€μΉ˜λŠ” 것을 λŠκΌˆλ‹€.

평일 주말 ꡬ뢄할 것 없이 μ§€κΈˆκΉŒμ§€ λ„ˆλ¬΄ λ‹¬λ €μ™€μ„œ μ˜€λŠ˜μ€ 쑰금 μ‰¬μ–΄κ°€λŠ” λ‚ λ‘œ μ •ν–ˆλ‹€ πŸ˜₯ 배운 λ‚΄μš© λΉ λ₯΄κ²Œ λ³΅μŠ΅ν•˜κ³  ν‰μ†Œλ³΄λ‹€ 일찍 잘 것이닀. μ»¨λ””μ…˜ 관리도 μ‹€λ ₯μ΄λ‹ˆκΉŒ πŸ’ͺ!!

μž₯기전이닀. 50λ―Έν„° λ‹¬λ¦¬κΈ°μ²˜λŸΌ 달리지 말자.

(+) γ…œγ…œ ν•˜λ‹€λ³΄λ‹ˆ 또 λŠ¦μ–΄μ‘Œμ–΄........


[ 곡뢀 ]

[ κ°•μ˜μš”μ•½ ]

μ»¨λ²€μ…˜ μ‚΄νŽ΄λ³΄κΈ°

  • νšŒμ‚¬ μ»¨λ²€μ…˜λ“€μ„ μ‚΄νŽ΄λ³΄μ•˜κ³ , 클래슀 넀이밍 방법을 λ°°μ› λ‹€.
  • μ»¨λ²€μ…˜μ˜ μ£Ό λͺ©μ μ€ 업무 νš¨μœ¨μ„ 높이고 μœ μ§€λ³΄μˆ˜ 투자 λΉ„μš©μ„ μ΅œμ†Œν™”ν•˜λŠ” 것이닀.
  • μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•΄ z-indexλ₯Ό 10λ‹¨μœ„λ‘œ μ‘°μ •ν•˜λŠ” 방법은 μ—¬λŸ¬ κΈ°μ—…μ—μ„œ 많이 쓰인닀. μΆ”κ°€ 및 μ˜ˆμ™Έμ‚¬ν•­ λ°œμƒ μ‹œ 1λ‹¨μœ„λ‘œ 더 μ„Έλ°€νžˆ μ‘°μ ˆν•  수 있기 λ•Œλ¬Έ.
  • μ‹œμž‘μ£Όμ„, μ’…λ£Œμ£Όμ„μ„ λ‹¬μ•„μ£ΌλŠ” 것도 쒋은 방법
    <!-- ~~ μ‹œμž‘ --> , <!-- //~~ 끝 -->
  • 지원할 νšŒμ‚¬μ˜ μ»¨λ²€μ…˜μ„ (κ³΅κ°œλ˜μ–΄ μžˆλ‹€λ©΄) 미리 보고 κ°€λŠ” 것이 μ’‹λ‹€.
  • HTML/CSS 클래슀 넀이밍을 'ν˜•νƒœ-의미' ν˜•μ‹μ˜ Kebab case둜 μ“°κ²Œλ˜λ©΄ ν˜•νƒœλ§Œ ν˜Ήμ€ 의미만 선택해 λ³€κ²½ν•˜κΈ° μš©μ΄ν•˜λ‹€.
  • BEM λ°©λ²•λ‘ μœΌλ‘œ 클래슀 μž‘λͺ…ν•˜λŠ” νšŒμ‚¬λŠ” κ·Έλ ‡κ²Œ λ§Žμ§€ μ•Šλ‹€.
  • 특히 λŒ€κΈ°μ—…μ—μ„œλŠ” CSS λ‚œλ…ν™”λ₯Ό 톡해 크둀링을 λ°©μ–΄ν•˜κ³ μž ν•œλ‹€.
  • 크둀링: 웹에 μžˆλŠ” 정보λ₯Ό λ‚΄ 컴퓨터(μ„œλ²„)둜 κ°€μ Έμ˜€λŠ” 것. μ„œλ²„μ— λΆ€ν•˜λ₯Ό 주게 되기 λ•Œλ¬Έμ— 차단 λ‹Ήν•œλ‹€. 규λͺ¨κ°€ 큰 νšŒμ‚¬μ—μ„œλŠ” API μ„œλ²„λ₯Ό λ”°λ‘œ λ§Œλ“ λ‹€.

button λ§Œλ“€κΈ°

μ²œν•˜μ œμΌ λ²„νŠΌ κ²½μ§„λŒ€νšŒ

κ±°μ°½ν•œ 이름이 λΆ™μ—ˆλ‹€ 🀣 μ˜€λŠ˜λ„ λŠλΌμ§€λ§Œ μž˜ν•˜λŠ” 뢄듀은 λ²„νŠΌμœΌλ‘œ μž‘ν’ˆμ„ 내놨닀. λŒ€λ‹¨ν•΄... λ‚˜λŠ” 배운 λ‚΄μš©μ„ μ‘μš©ν•΄λ΄€λ‹€.


animation - card flip 🌟

μ–΄μ œ κ΅¬ν˜„ν•΄λ΄€λ˜ μΉ΄λ“œ ν”Œλ¦½μ„ μ˜€λŠ˜μ€ animation으둜 λ§Œλ“€μ–΄λ³΄λ©΄μ„œ 보좩 μ„€λͺ…을 λ“€μ—ˆλ‹€. λ‹€μ‹œ λ³΅μŠ΅ν•˜λ©΄μ„œ 속성 ν•˜λ‚˜ν•˜λ‚˜λ₯Ό μ£Όμ„μ²˜λ¦¬ ν•΄λ³΄λ‹ˆ 이제 이해가 μ’€ λ˜λŠ” 것 κ°™μ•˜λ‹€ πŸ’‘ λ‚˜λŠ” κΈ€λ‘œ 써야 머릿속에 λ”± 정리가 잘되기 λ•Œλ¬Έμ— κ³΅λΆ€ν•˜λ €κ³  ν•΅μ‹¬λ§Œ ν’€μ–΄ 써봀닀.

1. μ»¨ν…Œμ΄λ„ˆ μ•ˆμ— νšŒμ „ νŒ¨λ„μ΄ 있고, κ·Έ 속에 μΉ΄λ“œ μ•žλ©΄ μ•„μ΄ν…œκ³Ό μΉ΄λ“œ λ’·λ©΄ μ•„μ΄ν…œμ΄ μžˆλ‹€.

    <div class="μ»¨ν…Œμ΄λ„ˆ">
        <div class="νšŒμ „νŒ¨λ„">
            <div class="μΉ΄λ“œμ•ž">μ•žλ©΄</div>
            <div class="μΉ΄λ“œλ’€">λ’·λ©΄</div>
        </div>
    </div>

(두 μΉ΄λ“œκ°€ κ΅¬λΆ„λ˜κ²Œ 색깔을 쀬닀.)

        .μΉ΄λ“œμ•ž {
            background-color: #fc9090;
        }
        .μΉ΄λ“œλ’€ {
            background-color: #fddc8a;
        }

2. μ»¨ν…Œμ΄λ„ˆμ™€, νšŒμ „νŒ¨λ„μ„ ν¬ν•¨ν•œ μΉ΄λ“œλ“€μ˜ ν¬κΈ°λŠ” λͺ¨λ‘ κ°™μ•„μ•Ό ν•œλ‹€. μ»¨ν…Œμ΄λ„ˆμ— 일정 크기(μΉ΄λ“œ 크기가 될 κ°’)λ₯Ό 지정해쀀 λ’€, λ‚˜λ¨Έμ§€ μ•„μ΄ν…œλ“€μ— λͺ¨λ‘ width: 100%;, height: 100%값을 μ€€λ‹€.

        .μ»¨ν…Œμ΄λ„ˆ {
            width: 170px;
            height: 240px;
        }
        .νšŒμ „νŒ¨λ„, .μΉ΄λ“œμ•ž, .μΉ΄λ“œλ’€ {
            width: 100%;
            height: 100%;
        }

λ¬Όλ‘  μΉ΄λ“œμ•ž, μΉ΄λ“œλ’€μ— 이미지λ₯Ό μ‚½μž…ν–ˆλ‹€λ©΄, 이미지에도 λ˜‘κ°™μ΄ width, height 값을 100%둜 λ§žμΆ°μ€˜μ•Ό ν•œλ‹€.

3. 이제 μΉ΄λ“œμ•ž, λ’€λ₯Ό λΆ™μ—¬μ£ΌκΈ° μœ„ν•΄ μΉ΄λ“œ 뒷면을 λ’€μ§‘νžŒ μƒνƒœλ‘œ λ§Œλ“€μ–΄ μ€€λ‹€.

        .μΉ΄λ“œλ’€ {
            background-color: #fddc8a;
            transform: rotateY(180deg);
        }

4. μΉ΄λ“œ μ•ž, 뒀면을 ν•¨κ»˜ 겹쳐진 μƒνƒœλ‘œ λ§Œλ“€κΈ° μœ„ν•΄, μΉ΄λ“œ μ•žλ©΄μ„ position: absolute; μ„ μ–ΈμœΌλ‘œ μ ˆλŒ€μœ„μΉ˜ν™” μ‹œμΌœμ•Ό ν•œλ‹€.
그런데 absoluteλŠ” static이 μ•„λ‹Œ λΆ€λͺ¨ μœ„μΉ˜λ₯Ό μ°Έκ³ ν•˜λ―€λ‘œ, λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆμ— position: relative;λ₯Ό μ£Όμ–΄μ•Ό ν•œλ‹€. μ΄λ ‡κ²Œ μ•ˆν•˜λ©΄ <body>λ₯Ό μ°Έκ³ ν•  것이닀.

        .μ»¨ν…Œμ΄λ„ˆ {
            width: 170px;
            height: 240px;
            position: relative;
        }
        .μΉ΄λ“œμ•ž {
            background-color: #fc9090;
            position: absolute;
        }

5. μΉ΄λ“œκ°€ μ»¨ν…Œμ΄λ„ˆμ˜ 평면을 뚫고 νšŒμ „ν•΄μ•Ό ν•˜λ―€λ‘œ νšŒμ „ νŒ¨λ„μ— transform-style: preserve-3d; 선언을 ν•΄μ•Όν•œλ‹€.

        .νšŒμ „νŒ¨λ„ {
            transform-style: preserve-3d;
        }

preserve-3d μ΄ν•΄ν•˜κΈ° πŸ˜Άβ—

preserve-3d κ°œλ…μ„ μ •ν™•νžˆ μ•ŒκΈ° μœ„ν•΄ MDN λ¬Έμ„œλ₯Ό μ°Έκ³ ν•΄λ³΄μ•˜λ‹€.
(https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style)

  • transform-style은 λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆκ°€ μ•„λ‹Œ μžμ‹ μš”μ†Œμ— μ§€μ •ν•΄μ£ΌλŠ” 것이닀.
  • transform-style: flat;
    μžμ‹ μš”μ†Œκ°€ λΆ€λͺ¨μ˜ 평면 μœ„μ—μ„œλ§Œ transform될 지,
    transform-style: preserve-3d;
    λΆ€λͺ¨ 평면상이 μ•„λ‹Œ μžμ‹ μš”μ†Œλ§Œμ˜ 3D κ³΅κ°„μ—μ„œ (preserveλŠ” λ³΄μ‘΄ν•œλ‹€λŠ” 뜻) transform될 지λ₯Ό μ •ν•΄μ£ΌλŠ” 속성이닀.
    (MDN μ˜ˆμ‹œλ₯Ό 보면 μ΄ν•΄ν•˜κΈ° 쉽닀. λΆ€λͺ¨ 평면을 뚫고 μ§€λ‚˜κ°„λ‹€)
  • 이 속성은 inherit(상속)λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, 3D νš¨κ³Όκ°€ ν•„μš”ν•œ λͺ¨λ“  'non-leaf descendents' μš”μ†Œμ— 선언이 ν•„μš”ν•˜λ‹€.
    (이 뢀뢄은 해석이 잘 μ•ˆλΌμ„œ κ²€μƒ‰ν•΄λ³΄λ‹ˆ leafκ°€ μžμ‹μ΄ μ—†λŠ” λ…Έλ“œλ“€μ„ μ§€μΉ­ν•œλ‹€κ³  ν•œλ‹€. λ”°λΌμ„œ μ—¬κΈ°μ„œλŠ” non-leafλ‹ˆκΉŒ, μ»¨ν…Œμ΄λ„ˆ μ†μ—μ„œ μžμ†μ„ κ°€μ§€λŠ” 그릇 μ—­ν• (CSS diner μ ‘μ‹œμ²˜λŸΌ) μ•„μ΄ν…œλ“€μ—λŠ” λͺ¨λ‘ transform-style: preserve-3d; 선언을 ν•΄μ€˜μ•Ό ν•œλ‹€λŠ” 뜻으둜 보인닀.)
  • κ·Έλž˜μ„œ 이번 μΉ΄λ“œ ν”Œλ¦½ μ˜ˆμ‹œμ—μ„œλŠ” .νšŒμ „νŒ¨λ„μ— ν•΄λ‹Ή 선언을 ν•œ 것이닀.

6. μš°λ¦¬λŠ” .μΉ΄λ“œμ•žκ³Ό .μΉ΄λ“œλ’€κ°€ ν•˜λ‚˜μ˜ μΉ΄λ“œκ°€ 되기λ₯Ό μ›ν•œλ‹€. (λ‹¨μˆœνžˆ 겹쳐진 μƒνƒœ 말고) κ·ΈλŸ¬λ―€λ‘œ .μΉ΄λ“œμ•žμ˜ 본래 λ’·λ©΄ (rotateY(180deg)ν–ˆμ„ λ•Œ λͺ¨μŠ΅)κ³Ό .μΉ΄λ“œλ’€μ˜ 본래 μ•žλ©΄ (rotateY(0deg)ν–ˆμ„ λ•Œ λͺ¨μŠ΅)은 보이지 μ•Šμ•„μ•Ό ν•  것이닀.
backface-visibility: hidden; 선언을 각각 ν•΄μ£Όμž.

        .μΉ΄λ“œμ•ž {
            background-color: #fc9090;
            position: absolute;
            backface-visibility: hidden;
        }
        .μΉ΄λ“œλ’€ {
            background-color: #fddc8a;
            transform: rotateY(180deg);
            backface-visibility: hidden;
        }

7. 이제 λ‹€ μ™”λ‹€. μ• λ‹ˆλ©”μ΄μ…˜μ„ λ§Œλ“€κ³ 

        @keyframes μΉ΄λ“œν”Œλ¦½ {
            from {
                transform: rotateY(0);
            }
            to {
                transform: rotateY(360deg);
            }
        }

8. νšŒμ „νŒ¨λ„μ— μ• λ‹ˆλ©”μ΄μ…˜μ„ 주자!

        .νšŒμ „νŒ¨λ„ {
            transform-style: preserve-3d;
            animation: μΉ΄λ“œν”Œλ¦½ 5s infinite;
        }

9. μ΄λŒ€λ‘œλ©΄ λ°‹λ°‹ν•˜κ²Œ νšŒμ „ν•˜λ‹ˆκΉŒ perspective 원근법을 μ£Όλ©΄ 완성이닀.

        .μ»¨ν…Œμ΄λ„ˆ {
            width: 170px;
            height: 240px;
            position: relative;
            perspective: 400px;
        }

μΉ΄λ“œμ— 여백을 μ£Όλ©΄ λ‹€μŒκ³Ό 같은 μ• λ‹ˆλ©”μ΄μ…˜μ΄ λœλ‹€! μ •λ¦¬ν•˜λ‹ˆ λΏŒλ“― :)

profile
FE κ°œλ°œμžκ°€ 되기 μœ„ν•œ 좔진λ ₯을 μ–»λŠ” 쀑

0개의 λŒ“κΈ€