The perspective-origin property sets the vanishing point for a 3D scene. Put it on the same parent that has perspective. Children with 3D transform values then foreshorten toward that point.
The default is 50% 50% (center). Keywords such as top, left, and bottom right work like other CSS position values. This is not transform-origin, which sets the pivot of the transformed element itself.
Standard-track.
Not deprecated. Baseline widely available. It only has a visible effect when the same element also has a perspective length (not none).
20% from the left, 80% from the top of the parent.
How It Works
First value is X.20% is measured across the parent’s width.
Second value is Y.80% is measured down the parent’s height.
Lengths work too. You can write 40px 120px, and negative values are allowed.
Tune for the layout. Percentages are handy when the scene size is fluid and corners feel too extreme.
Edge Cases & Pitfalls
If the origin change seems invisible, one of these is usually why.
pair
Needs perspective on the same element
With perspective: none, changing the origin does nothing visible. Set a length first.
parent
Put it on the parent, not the child
Like perspective, the origin belongs on the scene container. The child’s pivot is transform-origin.
one-value
One value only sets X
perspective-origin: left means X is left and Y stays center. Use two values when you need a corner.
inherit
Not inherited by default
Children do not get the parent origin automatically. Use inherit only when a nested scene should copy it on purpose.
extreme
Values outside 0%–100% are valid
Negative percentages or values past 100% move the vanishing point outside the box. Useful for strong skew; easy to overdo.
Compatibility
Browser Support
perspective-origin is a browser CSS property for 3D transforms. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available since Sep 2015
perspective-origin
Unprefixed: Chrome 36+, Firefox 16+, Safari 9+, Edge 12+, Opera 23+. Internet Explorer 10 supports the property. Older WebKit builds need a prefix.
97%Modern browser support
Google Chrome36+ · 12+ with -webkit-
Full support
Mozilla Firefox16+
Full support
Apple Safari9+ · 4+ with -webkit-
Full support
Microsoft Edge12+
Full support
Opera23+
Full support
Samsung Internet3+
Full support
Internet Explorer10+
Full support
perspective-originWidely supported
Bottom line: Safe for everyday use without prefixes in current browsers. Legacy WebKit needed -webkit-perspective-origin. Pair it with unprefixed perspective in modern code.
Remember
Key Takeaways
Role: aim the vanishing point on the parent that has perspective.
Common values:center, corner keywords, and percentages.
Initial value:50% 50%. Not inherited.
Pairing: distance with perspective; pivot of the child with transform-origin.
One line:perspective-origin aims where the 3D scene converges; perspective sets how strong that depth feels.
Frequently Asked Questions
It sets the vanishing point for a 3D scene. The viewer appears to look from that point on the element that also has perspective.
Put it on the same parent that has perspective. That parent frames the scene for children with 3D transforms.
The initial value is 50% 50%, which is the same as center. The vanishing point sits in the middle of the element.
Yes. Without a perspective length on the same element, changing the origin has nothing visible to skew.
perspective-origin moves the vanishing point of the parent scene. transform-origin sets the pivot point of the element that is transformed.
It is Baseline and widely available since September 2015: Chrome 36+, Firefox 16+, Safari 9+, Edge 12+, IE 10+. It is a browser CSS property, not a Node.js feature.