Notice
Recent Posts
Recent Comments
Link
ยซ   2026/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

็„ก์ œ

perspective ๋ณธ๋ฌธ

<style>

perspective

yo-u-loo 2026. 3. 27. 15:56

 

๐ŸŸข perspective

3D ๊ณต๊ฐ„์—์„œ ์นด๋ฉ”๋ผ์™€ ์š”์†Œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ž…์ฒด๊ฐ(์›๊ทผ๊ฐ)์„ ๊ฒฐ์ •ํ•˜๋Š” ์†์„ฑ.

 

๐Ÿ”น perspective

@keyframes rotate {  
  0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); }
  50% { transform: perspective(120px) rotateX(-180deg) rotateY(0deg); }
  100% { transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); }
}
  • perspective(๊ฐ’) ์˜ (๊ฐ’)์€ ์นด๋ฉ”๋ผ์˜ ๊ฑฐ๋ฆฌ.
    • ๊ฐ’: ์ž‘๋‹ค (100px) ์˜๋ฏธ: ์นด๋ฉ”๋ผ๊ฐ€ ๊ฐ€๊นŒ์›€ ๊ฒฐ๊ณผ: ์›๊ทผ๊ฐ(์™œ๊ณก) ํผ ๊ฐ•ํ•œ 3D
    • ๊ฐ’: ํฌ๋‹ค (1000px)  ์˜๋ฏธ: ์นด๋ฉ”๋ผ๊ฐ€ ๋ฉ€์Œ  ๊ฒฐ๊ณผ: ์›๊ทผ๊ฐ(์™œ๊ณก) ์ž‘์Œ ํ‰๋ฉด์— ๊ฐ€๊นŒ์›€

 

 

๐Ÿ”ฅ perspective ์˜ ๋‘ ๊ฐ€์ง€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๐Ÿ”ฅ

1๏ธโƒฃ transform ํ•จ์ˆ˜๋กœ์„œ์˜ perspective()

.box {
    transform: perspective(200px) rotateY(45deg);
}
  • ํŠน์ง•:
    • transform ์•ˆ์—์„œ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ.
    • ํ•ด๋‹น ์š”์†Œ์—๋งŒ ์ ์šฉ.
    • ๋‹ค๋ฅธ ๋ณ€ํ˜•(rotate, scale ๋“ฑ)๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ.
    • ๊ฐ„๋‹จํ•œ 3D ํšจ๊ณผ์— ์ ํ•ฉ.

 

2๏ธโƒฃ CSS ์†์„ฑ์œผ๋กœ์„œ์˜ perspective

.container {
    perspective: 200px;
}

.box {
    transform: rotateY(45deg);
}
  • ํŠน์ง•:
    • ๋ถ€๋ชจ ์š”์†Œ๊ฐ€ 3D ๊ณต๊ฐ„์„ ์ƒ์„ฑ.
    • ์ž์‹ ์š”์†Œ๋“ค์˜ 3D ๋ณ€ํ˜•์— ์˜ํ–ฅ.
    • ์ž์‹ ์š”์†Œ๋“ค์ด ๊ฐ™์€ ๊ณต๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ์›€์ง์ž„.
    • ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ผ๊ด€๋œ 3D ํšจ๊ณผ.

๐Ÿ‘‰ ์‹ค๋ฌด์—์„œ ๋” ๋งŽ์ด ์‚ฌ์šฉ๋จ.

 


 

๐Ÿ“Š ์ฐจ์ด ๋น„๊ต ๐Ÿ“Š

๊ตฌ๋ถ„ transform: perspective() perspective ์†์„ฑ
์ ์šฉ ๋Œ€์ƒ ์ž๊ธฐ ์ž์‹  ๋ถ€๋ชจ ์š”์†Œ  →  ์ž์‹ ์š”์†Œ
์‚ฌ์šฉ ์œ„์น˜ transform ์•ˆ ๋…๋ฆฝ ์†์„ฑ
ํšจ๊ณผ ๊ฐ„๋‹จํ•œ 3D ์‹ค์ œ ๊ณต๊ฐ„๊ฐ ์žˆ๋Š” 3D
์‹ค๋ฌด ์‚ฌ์šฉ ๊ฐ„๋‹จ ํšจ๊ณผ ๋ณต์žกํ•œ 3D UI
ํ•ต์‹ฌ “์นด๋ฉ”๋ผ๋ฅผ ์š”์†Œ์— ์ง์ ‘ ๋ถ™์ž„ “์นด๋ฉ”๋ผ๋ฅผ ๋ถ€๋ชจ์— ์„ค์น˜ํ•ด์„œ ๊ณต๊ฐ„ ์ƒ์„ฑ

 


 

๐ŸŽฏ perspective + 3D ํ•ต์‹ฌ ์†์„ฑ๋“ค ๐ŸŽฏ

๐Ÿ”น transform-style

์ž์‹ ์š”์†Œ๋ฅผ 3D ๊ณต๊ฐ„์— ์œ ์ง€ํ• ์ง€ ๊ฒฐ์ •.

.container {
    transform-style: preserve-3d;
}

 

  • flat: ์ž์‹์ด ํ‰๋ฉด์œผ๋กœ ๋ˆŒ๋ฆผ. (๊ธฐ๋ณธ๊ฐ’)
  • preserve-3d: ์ž์‹ ์š”์†Œ๋“ค์ด 3D ์ƒํƒœ ์œ ์ง€.

 

 

๐Ÿ”น backface-visibility

์š”์†Œ์˜ ๋’ท๋ฉด์„ ๋ณด์ด๊ฒŒ ํ• ์ง€ ์ˆจ๊ธธ์ง€ ๊ฒฐ์ •.

.box {
    backface-visibility: hidden;
}

 

  • visible: ๋’ค์ง‘ํžˆ๋ฉด ๋’ท๋ฉด ๋ณด์ž„. (๊ธฐ๋ณธ๊ฐ’)
  • hidden: ๋’ค์ง‘ํžˆ๋ฉด ์•ˆ ๋ณด์ž„.

 

 

๐Ÿ”น perspective-origin

์นด๋ฉ”๋ผ ์œ„์น˜ ์กฐ์ •

.container {
    perspective: 500px;
    perspective-origin: left;
}
  • center: ์ •๋ฉด. (๊ธฐ๋ณธ๊ฐ’)
  • left: ์™ผ์ชฝ ์‹œ์ .
  • right: ์˜ค๋ฅธ์ชฝ ์‹œ์ .
  • top: ์œ„์—์„œ ๋‚ด๋ ค๋‹ค๋ด„.
  • bottom: ์•„๋ž˜์—์„œ ์˜ฌ๋ ค๋‹ค๋ด„.

๐Ÿ‘‰ ๋˜๋Š” ์ขŒํ‘œ๋กœ๋„ ๊ฐ€๋Šฅ (%)

 

 

๐Ÿ“โ€Š POINT ๐Ÿ“โ€Š

โœ”๏ธ transform: perspective() ๋Š” ๊ฐ„๋‹จํ•œ ํšŒ์ „ ํšจ๊ณผ,

perspective ์†์„ฑ ์€ ์นด๋“œ&ํ๋ธŒ&UI,

perspective + preserve-3d ๋Š” ์—ฌ๋Ÿฌ ์š”์†Œ 3D โœ”๏ธ

 

 

๐Ÿ“‹ ์†์„ฑ๋ณ„ ์ƒ์„ธ ์š”์•ฝํ‘œ ๐Ÿ“‹

์†์„ฑ / ํ•จ์ˆ˜ ์ ์šฉ ๋Œ€์ƒ ์—ญํ•  ํ•ต์‹ฌ ํฌ์ธํŠธ
perspective ๋ถ€๋ชจ 3D ๊ณต๊ฐ„ ์ƒ์„ฑ ๊ฐ’ ์ž‘์œผ๋ฉด ์ž…์ฒด๊ฐ ๊ฐ•, ๊ฐ’ ํฌ๋ฉด ํ‰๋ฉด ๋А๋‚Œ
perspective() ์š”์†Œ(transform) ์นด๋ฉ”๋ผ ๊ฑฐ๋ฆฌ ์ ์šฉ ๋‹จ์ผ ์š”์†Œ 3D ํšจ๊ณผ, transform ์•ˆ์—์„œ ์‚ฌ์šฉ
perspective-origin ๋ถ€๋ชจ ์นด๋ฉ”๋ผ ์œ„์น˜ ์ง€์ • ๊ธฐ๋ณธ center, left/top ๋“ฑ ์กฐ์ • ๊ฐ€๋Šฅ
transform-style ๋ถ€๋ชจ/์š”์†Œ ์ž์‹ 3D ์œ ์ง€ ์—ฌ๋ถ€ preserve-3d → 3D ์œ ์ง€, flat → ํ‰๋ฉด
backface-visibility ์š”์†Œ ๋’ท๋ฉด ๋ณด์ž„ ์—ฌ๋ถ€ hidden → ์นด๋“œ ๋’ค์ง‘๊ธฐ ์‹œ ๋’ท๋ฉด ์ˆจ๊น€
transform (rotateX/Y/Z) ์š”์†Œ ํšŒ์ „/3D ์ด๋™ perspective์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ์ž…์ฒด๊ฐ

 


 

โš™๏ธ ์‹ค์ „ ์˜ˆ์ œ ์ฝ”๋“œ โš™๏ธ

.container {
    perspective: 800px;
}

.card {
    width: 200px;
    height: 300px;
    transform-style: preserve-3d;
    transition: 0.6s;
}

.card:hover {
    transform: rotateY(180deg);
}

 

'<style>' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

CSS์˜ Animation๊ณผ @keyframes  (0) 2026.03.27
transition ์†์„ฑ  (1) 2026.03.27
Functions์˜ filter์†์„ฑ๊ณผ ํ•จ์ˆ˜  (0) 2026.03.27
transform ์†์„ฑ๊ณผ functions (ํ•จ์ˆ˜)  (0) 2026.03.26
Pseudo-elements (์˜์‚ฌ ์š”์†Œ)  (0) 2026.03.26