🍎 듀어가기에 μ•žμ„œ

이 글은 λͺ¨λ˜ 웹을 μœ„ν•œ HTML5+CSS3 바이블을 κ³΅λΆ€ν•˜λ©° κΈ°μ–΅ν•΄λ‘˜ λ‚΄μš©λ“€μ„ κ°„λ‹¨ν•˜κ²Œ κΈ°λ‘ν•œ κΈ€μž…λ‹ˆλ‹€.
책에 λŒ€ν•œ μžμ„Έν•œ 사항은 링크λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”. πŸ‘

πŸ“– 1. CSS3 λ³€ν™˜(transform)

λ³€ν™˜μ΄λž€?

HTML5κ°€ λ“±μž₯ν•˜λ©΄μ„œ ν”Œλž˜μ‹œκ°™μ€ ν”ŒλŸ¬κ·ΈμΈ 없이 μ›Ή λΈŒλΌμš°μ €μ— 3차원을 κ΅¬ν˜„ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
κ·Έ 방법은 2가지가 μžˆμŠ΅λ‹ˆλ‹€.

  • μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•œ WebGL
  • βœ… CSS3λ₯Ό μ‚¬μš©ν•œ 3차원 λ³€ν™˜

2차원 λ³€ν™˜

μ›Ή λΈŒλΌμš°μ €λ₯Ό λ°”λΌλ³΄λŠ” μœ μ €μ˜ μ‹œμ„ μ„ κΈ°μ€€μœΌλ‘œ 쒌 -> 우 λ°©ν–₯이 XμΆ•, μœ„ -> μ•„λž˜ λ°©ν–₯이 YμΆ•μž…λ‹ˆλ‹€.
λ˜ν•œ, λͺ¨λ‹ˆν„° -> μœ μ € λ°©ν–₯으둜 Z좕을 μΆ”κ°€ν•˜λ©΄ 3차원 λ³€ν™˜μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.(Z-indexλ₯Ό λ– μ˜¬λ¦¬μ‹œλ©΄ λ©λ‹ˆλ‹€.)

div {
  width: 100px;
  height: 100px;
  background: red;

  transform: rotate(60deg) scale(1.2) skewY(10deg);
  /* 🌟 
  translate: νŠΉμ • 크기만큼 이동
  scale: νŠΉμ • 크기만큼 ν™•λŒ€ 및 μΆ•μ†Œ(배율)
  skew: νŠΉμ • κ°λ„λ§ŒνΌ 기울이기
  rotate: νŠΉμ • κ°λ„λ§ŒνΌ νšŒμ „
  */

  /* 🌟
  transform-origin: λ³€ν™˜μ˜ 쀑심을 μ§€μ •ν•©λ‹ˆλ‹€.
  ex) transform-origin: 100% 100%; 
  XμΆ•κ³Ό Y좕에 λŒ€ν•΄ 100%μ΄λ―€λ‘œ 객체의 κ°€μž₯ 였λ₯Έμͺ½ μ•„λž˜λ₯Ό κΈ°μ€€μœΌλ‘œ ν•©λ‹ˆλ‹€.
  */
}

πŸŽ–οΈ transform에 μž…λ ₯ν•˜λŠ” ν‚€μ›Œλ“œ μˆœμ„œμ— λ”°λΌμ„œ 같은 ν‚€μ›Œλ“œλ“€μ„ 적어도 λ‹€λ₯Έ 결과물이 λ‚˜μ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 즉, μˆœμ„œμ— 따라 λ‹€λ₯Έ λ³€ν™˜μ΄ κ΅¬ν˜„λ˜κΈ°λ„ ν•©λ‹ˆλ‹€.

3차원 λ³€ν™˜

  • translate3d(X, Y, Z): νŠΉμ • 크기만큼 μ΄λ™ν•©λ‹ˆλ‹€.

  • scale3d(X, Y, Z): νŠΉμ • 크기만큼 ν™•λŒ€ 및 μΆ•μ†Œν•©λ‹ˆλ‹€.

  • rotate3d(X, Y, Z): νŠΉμ • κ°λ„λ§ŒνΌ νšŒμ „ν•©λ‹ˆλ‹€.

  • transform-style: λ³€ν™˜μ„ μ μš©ν•  λ•Œ, κ·Έ 영ν–₯이 μžμ‹ μ—κ²Œλ§Œ μ μš©λ μ§€ μžμ†μ—κ²Œλ„ μ μš©λ μ§€ μ •ν•©λ‹ˆλ‹€.

    1. flat : ν›„μ†μ˜ 3차원 속성을 λ¬΄μ‹œν•©λ‹ˆλ‹€.
    2. preserve-3d : ν›„μ†μ˜ 3차원 속성을 μœ μ§€ν•©λ‹ˆλ‹€.
  • backface-visibility: 3차원 κ³΅κ°„μ—μ„œ 후면을 λ³΄μ΄κ±°λ‚˜ 보이지 μ•Šκ²Œ λ§Œλ“œλŠ” μ†μ„±μž…λ‹ˆλ‹€.

    1. visible : 후면을 보이게 λ§Œλ“­λ‹ˆλ‹€.
    2. hidden : 후면을 보이지 μ•Šκ²Œ λ§Œλ“­λ‹ˆλ‹€.(πŸŒ‘ 마치 λ‹¬μ˜ 뒷면을 λ³Ό 수 없듯이 πŸŒ•)

원근법

이 뢀뢄은 개인적으둜 κ³΅μ‹λ¬Έμ„œλ₯Ό ν™•μΈν•˜λŠ” 게 λ°”λ‘œ μ΄ν•΄λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
μˆ«μžκ°€ μž‘μ„μˆ˜λ‘ μœ μ € κΈ°μ€€ μ•žμ— μžˆλŠ” 객체λ₯Ό 더 크게 뒀에 μžˆλŠ” 객체λ₯Ό μž‘κ²Œ ν‘œν˜„ν•©λ‹ˆλ‹€.