CSS 数据类型

CSS 函数perspective() 用于 3D 变换的上下文中。它用于定义元素的透视深度,创建可以发生转换的 3D 空间。它采用单个值作为参数,表示观察者距 z=0 平面的距离。结果是 <transform-function> 数据类型。

CSS 函数perspective() 是应用于要转换的元素的转换值的一部分。 Perspective() 函数和属性 perspective 之间的区别perspective-origin 是,后两者与在三维空间中变换的子元素的父元素有关。

属性值

视角() 函数采用单个参数,可以是以下之一:

  • d:它是一个 <length> 值,表示用户与 z=0 平面之间的距离。当 d 的值为 0 或负数时,不会对元素应用透视变换。

  • none:不对元素设置透视。

语法

perspective(d) 
  • <length> 值或无传递给函数。

  • z=0 是二维视图中所有内容出现的空间。

  • 负值被视为无效并且是语法错误。

  • 小于或等于 0 的值被限制为 1px。

  • 除"none"之外的任何值都会导致具有正 z 位置的元素显得较大,而具有负 z 位置的元素显得较小。

  • 具有 z 位置的元素等于或大于透视值,消失。

  • 当perspective() 的值较大时,变换较小,反之亦然。

  • perspective(none) 指定无限远距离的透视,因此不应用任何变换。

CSS Perspective(): 基本示例

下面的例子演示了perspective()函数的使用,它显示了参数d的各种值:

<html>
<head>
<style>
   .face {
      position: absolute;
      width: 100px;
      height: 100px;
      line-height: 100px;
      font-size: 100px;
      text-align: center;
   }

   p + div {
      width: 100px;
      height: 100px;
      transform-style: preserve-3d;
      margin-left: 100px;
      padding: 25px;
   }
   .without-perspective {
      transform: rotateX(-15deg) rotateY(30deg);
   }

   .with-perspective-none {
      transform: perspective(none) rotateX(-15deg) rotateY(30deg);
   }

   .with-perspective-larger {
      transform: perspective(8cm) rotateX(-15deg) rotateY(30deg);
   }

   .with-perspective-smaller {
      transform: perspective(3.1cm) rotateX(-15deg) rotateY(30deg);
   }

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

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

   .front {
      background-color: cadetblue;
      transform: translate3d(0, 0, 50px);
   }
</style>
</head>
<body>
   <p>Without perspective:</p>
   <div class="without-perspective">
      <div class="face front">1</div>
      <div class="face top">2</div>
      <div class="face left">3</div>
   </div>

   <p>With perspective (none):</p>
   <div class="with-perspective-none">
      <div class="face front">1</div>
      <div class="face top">2</div>
      <div class="face left">3</div>
   </div>

   <p>With perspective (8cm):</p>
   <div class="with-perspective-larger">
      <div class="face front">1</div>
      <div class="face top">2</div>
      <div class="face left">3</div>
   </div>

   <p>With perspective (3.1cm):</p>
   <div class="with-perspective-smaller">
      <div class="face front">1</div>
      <div class="face top">2</div>
      <div class="face left">3</div>
   </div>
</body>
</html>