mozilla
Your Search Results

    perspective

    This article is in need of a technical review.

    This is an experimental technology
    Because this technology's specification has not stabilized, check the compatibility table for the proper prefixes to use in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the spec changes.

    Summary

    The perspective CSS property determines 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.

    Part of the 3D-elements that are behind the user, i.e. that their z-axis coordinate is greater than the value of the perspective CSS property are not drawn.

    The vanishing point is by default placed at the center of the element, but its position can be changed using the perspective-origin property.

    Using this property with a value different than 0 and none creates a new stacking context.

    Syntax

    /* Keyword value */
    perspective: none;
    
    /* <length> values */
    perspective: 20px;  
    perspective: 3.5em;
    
    /* Global values */
    perspective: inherit;
    perspective: initial;
    perspective: unset;
    

    Values

    none
    Is a keyword indicating that no perspective transform has to be applied.
    <length>
    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 and its content. If it 0 or a negative value, no perspective transform is applied.

    Formal syntax

    none | <length>

    Examples

    Three cubes

    HTML Content

    <table>
       <tbody>
          <tr>
             <th><code>perspective: 250px;</code>
             </th>
             <th><code>perspective: 350px;</code>
             </th>
             <th><code>perspective: 500px;</code>
             </th>
          </tr>
          <tr>
             <td>
                <div class="container">
                   <div class="cube pers250">
                      <div class="face front">1</div>
                      <div class="face back">2</div>
                      <div class="face right">3</div>
                      <div class="face left">4</div>
                      <div class="face top">5</div>
                      <div class="face bottom">6</div>
                   </div>
                </div>
             </td>
             <td>
                <div class="container">
                   <div class="cube pers350">
                      <div class="face front">1</div>
                      <div class="face back">2</div>
                      <div class="face right">3</div>
                      <div class="face left">4</div>
                      <div class="face top">5</div>
                      <div class="face bottom">6</div>
                   </div>
                </div>
             </td>
             <td>
                <div class="container">
                   <div class="cube pers500">
                      <div class="face front">1</div>
                      <div class="face back">2</div>
                      <div class="face right">3</div>
                      <div class="face left">4</div>
                      <div class="face top">5</div>
                      <div class="face bottom">6</div>
                   </div>
                </div>
             </td>
          </tr>
       </tbody>
    </table>

    CSS Content

    /* Shorthand classes for different perspective values */
    .pers250 {
        perspective: 250px;
        -webkit-perspective: 250px;
    }
    .pers350 {
        perspective: 350px;
        -webkit-perspective: 350px;
    }
    .pers500 {
        perspective: 500px;
        -webkit-perspective: 500px;
    }
    
    /* Define the container div, the cube div, and a generic face */
     .container {
       width: 200px;
       height: 200px;
       margin: 75px 0 0 75px;
       border: none;
    }
    .cube {
       width: 100%;
       height: 100%;
       backface-visibility: visible;
       perspective-origin: 150% 150%;
       transform-style: preserve-3d;
       -webkit-backface-visibility: visible;
       -webkit-perspective-origin: 150% 150%;
       -webkit-transform-style: preserve-3d;
    }
    .face {
       display: block;
       position: absolute;
       width: 100px;
       height: 100px;
       border: none;
       line-height: 100px;
       font-family: sans-serif;
       font-size: 60px;
       color: white;
       text-align: center;
    }
    
    /* Define each face based on direction */
     .front {
       background: rgba(0, 0, 0, 0.3);
       transform: translateZ(50px);
       -webkit-transform: translateZ(50px);
    }
    .back {
       background: rgba(0, 255, 0, 1);
       color: black;
       transform: rotateY(180deg) translateZ(50px);
       -webkit-transform: rotateY(180deg) translateZ(50px);
    }
    .right {
       background: rgba(196, 0, 0, 0.7);
       transform: rotateY(90deg) translateZ(50px);
       -webkit-transform: rotateY(90deg) translateZ(50px);
    }
    .left {
       background: rgba(0, 0, 196, 0.7);
       transform: rotateY(-90deg) translateZ(50px);
       -webkit-transform: rotateY(-90deg) translateZ(50px);
    }
    .top {
       background: rgba(196, 196, 0, 0.7);
       transform: rotateX(90deg) translateZ(50px);
       -webkit-transform: rotateX(90deg) translateZ(50px)
    }
    .bottom {
       background: rgba(196, 0, 196, 0.7);
       transform: rotateX(-90deg) translateZ(50px);
       -webkit-transform: rotateX(-90deg) translateZ(50px);
    }
    
    /* Make the table a little nicer */
    th, p, td {
       background-color: #EEEEEE;
       padding: 10px;
       font-family: sans-serif;
       text-align: left;
    }

    Result

    Specifications

    Specification Status Comment
    CSS Transforms Level 1
    The definition of 'perspective' in that specification.
    Working Draft  

    Browser compatibility

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
    Basic support 12-webkit 10 (10)-moz
    16 (16)
    10 15-webkit (Yes)-webkit
    Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
    Basic support 3.0-webkit 10.0 (10)-moz
    16.0 (16)
    8.1 (Yes)-webkit (Yes)-webkit

    See also

    Document Tags and Contributors

    Last updated by: Sebastianz,