perspective()
        
        
          
                Baseline
                
                  Widely available
                
                
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
perspective() は CSS の関数で、ユーザーと z=0 平面との間の距離を定義し、閲覧者からの視点は二次元のインターフェイスが三次元であったかのようになります。結果は <transform-function> データ型になります。
試してみましょう
transform: perspective(0);
transform: perspective(none);
transform: perspective(800px);
transform: perspective(23rem);
transform: perspective(6.5cm);
<section class="default-example" id="default-example">
  <div class="transition-all" id="example-element">
    <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>
</section>
#default-example {
  background: linear-gradient(skyblue, khaki);
  perspective: 800px;
  perspective-origin: 150% 150%;
}
#example-element {
  width: 100px;
  height: 100px;
  perspective: 550px;
  transform-style: preserve-3d;
}
.face {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  position: absolute;
  backface-visibility: inherit;
  font-size: 60px;
  color: white;
}
.front {
  background: rgba(90, 90, 90, 0.7);
  transform: translateZ(50px);
}
.back {
  background: rgba(0, 210, 0, 0.7);
  transform: rotateY(180deg) translateZ(50px);
}
.right {
  background: rgba(210, 0, 0, 0.7);
  transform: rotateY(90deg) translateZ(50px);
}
.left {
  background: rgba(0, 0, 210, 0.7);
  transform: rotateY(-90deg) translateZ(50px);
}
.top {
  background: rgba(210, 210, 0, 0.7);
  transform: rotateX(90deg) translateZ(50px);
}
.bottom {
  background: rgba(210, 0, 210, 0.7);
  transform: rotateX(-90deg) translateZ(50px);
}
perspective() 座標変換関数は transform 値の一部で、座標変換される要素に適用されます。これは perspective および perspective-origin の各プロパティが三次元空間に座標変換される子の親に付けられるのとは異なります。
構文
perspective() で使用する視点距離は、<length> 値でユーザーと z=0 平面との間の距離を指定するか、または none で指定します。
z=0 平面とは、二次元表示ですべてが見える平面、つまり画面のことです。
負の値は構文エラーになります。
1px より小さい値 (ゼロを含む) は 1px になります。
値が none 以外の場合、 z が正の位置にある要素は大きく表示されます。また、z が負の位置にある要素は小さく表示されます。
z 位置が perspective の値と同じか大きい要素は、ユーザーの背後にあるかのようになり、非表示になります。
perspective() が大きいと、座標変換が小さいことを表します。perspective() の値が小さいと、座標変換が大きいことを表します。perspective(none) は無限の距離からの遠近感を表し、座標変換はありません。
perspective(d)
値
例
>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 (9cm):</p>
<div class="perspective-box-far">
  <div class="face front">A</div>
  <div class="face top">B</div>
  <div class="face left">C</div>
</div>
<p>With perspective (4cm):</p>
<div class="perspective-box-closer">
  <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;
}
p + div {
  width: 100px;
  height: 100px;
  transform-style: preserve-3d;
  margin-left: 100px;
}
.no-perspective-box {
  transform: rotateX(-15deg) rotateY(30deg);
}
.perspective-box-far {
  transform: perspective(9cm) rotateX(-15deg) rotateY(30deg);
}
.perspective-box-closer {
  transform: perspective(4cm) rotateX(-15deg) rotateY(30deg);
}
.top {
  background-color: skyblue;
  transform: rotateX(90deg) translate3d(0, 0, 50px);
}
.left {
  background-color: pink;
  transform: rotateY(-90deg) translate3d(0, 0, 50px);
}
.front {
  background-color: limegreen;
  transform: translate3d(0, 0, 50px);
}
結果
仕様書
| Specification | 
|---|
| CSS Transforms Module Level 2> # funcdef-perspective>  | 
            
ブラウザーの互換性
Loading…
関連情報
transform<transform-function>- 独立の座標変換プロパティ: