← Back to CSS Course | Chapter 8: Animations & Effects | Lesson 7 of 22

CSS 3D Transforms

एक 3D transform flat page में असली depth जोड़ता है — किसी element को viewer से दूर rotate करना, उसे space में पीछे धकेलना, या एक scene बनाना जहाँ child elements अपनी खुद की 3D positions रखते हैं।
Syntax
css
selector {
  transform: rotateX(angle) rotateY(angle) translateZ(length);
  perspective: length;
}

2D से 3D तक: rotateX/Y/Z

rotateX() और rotateY() किसी element को उसके horizontal या vertical axis के चारों ओर tilt करते हैं, उसे viewer से दूर या उसकी तरफ़ fold होते हुए दिखाते हैं, जबकि rotateZ() बिल्कुल familiar 2D rotate() जैसा behave करता है। depth effect को असल में render करने के लिए तीनों को parent पर एक perspective establish करना चाहिए।

Note:
  • Accepted values:
  • rotateX(angle) | rotateY(angle) | rotateZ(angle) — किसी axis के चारों ओर rotation
  • translate3d(x, y, z) — 3D में move करता है
  • scale3d(x, y, z) — 3D में scale करता है
  • perspective(length) — एक element के लिए depth
  • perspective — parent पर length, जैसे 800px
  • transform-style — flat | preserve-3d
  • backface-visibility — visible | hidden
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords

उदाहरण: From 2D to 3D: rotateX/Y/Z

css
<style>
.scene {
  perspective: 400px;
  background: #eee;
  padding: 30px;
}
.box {
  transform: rotateY(45deg);
  background: steelblue;
  color: white;
  padding: 20px;
  display: inline-block;
}
</style>
<div class="scene">
  <div class="box">Tilted away from the viewer</div>
</div>

perspective Property

perspective यह set करता है कि viewer की आँख screen से कितनी दूर है: एक छोटी value (जैसे 200px) एक dramatic, exaggerated 3D effect बनाती है, जबकि एक बड़ी value (जैसे 1500px) एक subtle effect बनाती है। parent पर perspective set न होने पर, 3D rotations ऐसे render होते हैं जैसे उन्हें infinitely दूर से देखा जा रहा हो और flat दिखते हैं।

perspective-origin vanishing point को element के center से हटाकर shift करता है, यह बदलते हुए कि 3D scene का कौन-सा side सबसे तेज़ recede होता दिखता है।

Note:
  • Accepted values:
  • perspective: none — default, कोई perspective नहीं
  • perspective: <length> — viewer तक distance, जैसे 600px
  • perspective(<length>) — वही, एक transform function के रूप में
  • perspective-origin: <position> — vanishing point (default 50% 50%)
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords

उदाहरण: The perspective Property

css
<style>
.dramatic {
  perspective: 200px;
  background: #eee;
  padding: 30px;
  display: inline-block;
}
.subtle {
  perspective: 1500px;
  background: #eee;
  padding: 30px;
  display: inline-block;
}
.box {
  transform: rotateY(45deg);
  background: steelblue;
  color: white;
  padding: 20px;
}
</style>
<div class="dramatic"><div class="box">Dramatic depth</div></div>
<div class="subtle"><div class="box">Subtle depth</div></div>

translate3d और translateZ

translate3d(x, y, z) किसी element को एक साथ तीन dimensions में move करता है, जहाँ एक positive z value इसे viewer की तरफ़ धकेलती है और एक negative value इसे दूर धकेलती है — perspective के साथ combined, यह element के apparent size को बदलता है, बिल्कुल असली depth की तरह।

Note:
  • Accepted values:
  • translate3d(x, y, z) — तीन dimensions में move करें
  • translateZ(<length>) — viewer की तरफ़ या दूर move करें
  • scale3d(x, y, z) — तीन axes पर scale करें
  • rotate3d(x, y, z, angle) — किसी custom axis के चारों ओर rotate करें

उदाहरण: translate3d and translateZ

css
<style>
.scene {
  perspective: 500px;
}
.box {
  transform: translate3d(0, 0, 100px);
}
</style>
<div class="scene">
  <div class="box">Pushed toward the viewer, appears larger</div>
</div>

transform-style: preserve-3d

Default रूप से, एक 3D-transformed element अपने children को अपने ही 2D plane में flatten कर देता है। इसके बजाय parent पर transform-style: preserve-3d set करना children को उनकी अपनी independent 3D positions और rotations रखने देता है, जो किसी rotating cube जैसे layered 3D scenes बनाने के लिए ज़रूरी है।

backface-visibility: hidden किसी element को 90 degrees से आगे rotate होकर viewer से दूर मुँह करने पर पूरी तरह hide कर देता है, जो एक convincing flip-card effect बनाने के लिए ज़रूरी है जहाँ आप mirrored backside text को through दिखते नहीं देखना चाहते।

Note:
  • Accepted values:
  • transform-style: flat — default, children parent के plane में flatten होते हैं
  • transform-style: preserve-3d — children अपनी 3D position रखते हैं
  • backface-visibility: visible — default
  • backface-visibility: hidden — दूर rotate होने पर back face hide करता है
  • inherit | initial | unset | revert — हर property द्वारा accepted CSS-wide keywords

उदाहरण: transform-style: preserve-3d

css
<style>
.cube {
  transform-style: preserve-3d;
}
.face {
  backface-visibility: hidden;
}
</style>
<div class="cube">
  <div class="face">Front face</div>
  <div class="face">Back face, hidden once rotated away</div>
</div>

2D बनाम 3D Transforms

2D transforms के उलट, जो किसी element को सिर्फ flat page plane में reposition करते हैं, 3D transforms को असल में सिर्फ अलग-शेप वाली flat shadow के बजाय depth की तरह दिखने के लिए एक perspective context और extra Z-axis functions (rotateX/Y, translateZ, matrix3d) चाहिए होते हैं।

Note:
  • Accepted values:
  • transform: translate() rotate() scale() skew() — 2D functions
  • transform: rotateX() rotateY() translateZ() — 3D functions
  • perspective — depth effect दिखने के लिए ज़रूरी
  • transform-style: preserve-3d — nested 3D रखता है

उदाहरण: 2D vs 3D Transforms

css
<style>
.flat {
  transform: rotate(45deg);
}
.scene {
  perspective: 400px;
}
.depth {
  transform: rotateY(45deg);
}
</style>
<div class="flat">2D: stays flat</div>
<div class="scene"><div class="depth">3D: appears to have depth</div></div>
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. perspective भूल जाना, इसलिए rotateY flat दिखता है।
  2. parent पर transform-style: preserve-3d भूल जाना, इसलिए children flatten हो जाते हैं।
  3. perspective को transform वाले उसी element पर रखना, parent पर नहीं।
ब्राउज़र सपोर्ट

हर modern browser में supported: Chrome, Firefox, Safari, Edge और Opera।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.