MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

# perspective()

The `perspective()` CSS function defines the distance between the z=0 plane and the user in order to give to the 3D-positioned element some perspective. Each 3D element with z>0 becomes larger; each 3D-element with z<0 becomes smaller. The strength of the effect is determined by the value of this property.

## Syntax

```perspective(d)
```

## Values

d
Is a `<length>` giving the distance from the user to the z=0 plane. It is used to apply a perspective transform to the element. If it is 0 or a negative value, no perspective transform is applied.
Cartesian coordinates on ℝ2 Homogeneous coordinates on ℝℙ2 Cartesian coordinates on ℝ3 Homogeneous coordinates on ℝℙ3

This transform applies to the 3D space and cannot be represented on the plan.

A perspective is not a linear transform in ℝ3 and cannot be represented using a matrix in the Cartesian coordinates system. $\left(\begin{array}{ccc}10& 0& 0\\ 01& 0& 0\\ 0& 0& 1& 0\\ 0& 0& -1/d& 1\end{array}\right)$

## Examples

### Applying perspective on a 3D object

#### HTML

```<p>Without Perspective:</p>
<div class="no-perspective-box">
<div class="face front">A</div>
<div class="face top">B</div>
<div class="face left">C</div>
</div>
<p>With Perspective (7.5cm):</p>
<div class="perspective-box">
<div class="face front">A</div>
<div class="face top">B</div>
<div class="face left">C</div>
</div>
```

#### CSS

```.face{
position: absolute;
width: 100px;
height: 100px;
line-height: 100px;
font-size: 100px;
text-align: center;
}

.no-perspective-box{
width: 100px;
height: 100px;
transform-style: preserve-3d;
transform: rotateX(-15deg) rotateY(15deg);
margin-left: 100px;
}

.perspective-box{
width: 100px;
height: 100px;
transform-style: preserve-3d;
transform: perspective(7.5cm) rotateX(-15deg) rotateY(15deg);
margin-left: 100px;
}

.top{
background-color: blue;
transform: rotateX(90deg) translate3d(0, 0, 50px);
}

.left{
background-color: red;
transform: rotateY(-90deg) translate3d(0, 0, 50px);
}

.front{
background-color: green;
transform: translate3d(0, 0, 50px);
}
```

Tags: