同步 · dev.to / @markyu
A practical CSS 3D transform guide explaining perspective, rotateX, rotateY, transform-style, backface visibility, and debugging layout.
- 发布日期
- May 20 '24
- 阅读时长
- 2 min read
- 点赞
- 4
CSS 3D transforms look broken when one property is missing: perspective.
Without perspective, your element can rotate in 3D but still feel flat or strange. The browser is doing math; your eyes are just not getting depth cues.
Start With a Card
<div class="scene">
<div class="card">
<div class="face front">Front</div>
<div class="face back">Back</div>
</div>
</div>.scene {
width: 240px;
height: 320px;
perspective: 900px;
}
.card {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
transition: transform 600ms ease;
}
.scene:hover .card {
transform: rotateY(180deg);
}
.face {
position: absolute;
inset: 0;
display: grid;
place-items: center;
border-radius: 12px;
backface-visibility: hidden;
}
.front {
background: #2563eb;
color: white;
}
.back {
background: #111827;
color: white;
transform: rotateY(180deg);
}That is a real 3D card flip.
The Three Properties That Matter
| Property | Job |
|---|---|
perspective | gives depth to children |
transform-style: preserve-3d | keeps child elements in 3D space |
backface-visibility: hidden | hides the mirrored backside |
If your card shows mirrored text, check backface-visibility.
If the back face never appears, check the rotateY(180deg) on the back.
If everything looks flat, check perspective.
Rotate X vs Rotate Y
transform: rotateX(45deg);Rotates around the horizontal axis.
transform: rotateY(45deg);Rotates around the vertical axis.
transform: rotateZ(45deg);This is the normal 2D-style rotation most developers already know.
Common Mistake: Perspective on the Wrong Element
This is usually wrong:
.card {
perspective: 900px;
transform: rotateY(180deg);
}Perspective should usually be on the parent:
.scene {
perspective: 900px;
}The parent creates the viewing space. The child moves inside it.
Final Thought
CSS 3D is not hard, but it is unforgiving. One missing property can make the whole demo feel fake.
What 3D UI effect do you actually like in production apps: card flips, subtle tilt, or none at all?
相关阅读
CSS Heart Animation: Small Demo, Real Animation Lessons
A cleaner CSS heart animation tutorial focused on transform, pseudo-elements, keyframes, and the small mistakes that break simple UI animations.
css
React 19 Micro-Interactions Without Layout Jank
A practical React 19 micro-interactions guide focused on motion boundaries, CSS transitions, optimistic UI, reduced motion, and performance.
react
Next.js Images Without CLS: My LQIP Blur-Up Setup
A practical Next.js image optimization guide for zero CLS layouts, blur placeholders, dimensions, remote images, and production image hygiene.
nextjs
原文发布
本文首发于 dev.to,评论与点赞保留在原站。
在 dev.to 继续阅读