perspective()
åºçº¿
广æ³å¯ç¨
èª 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(none) è¡¨ç¤ºä»æ éè¿çè§è§è§å¯ï¼æ²¡æåæ¢ã
perspective(d)
åæ°
- d
-
è¿ä¸ª
<length>å¾å°çæ¯è·ç¦» 0 åæ çè·ç¦»ã被ç¨ä½æä¾ä¸ä¸ªéè§æ¸å屿§ç»æä¸ªå ç´ ã妿è¿ä¸ªå¼æ¯ 0 æè ä¸åæ³çå¼ï¼å°ä¸ä¼äº§çéè§çååã
| â^2 ç¬å¡å°åæ | ââ^2 齿¬¡åæ | â^3 ç¬å¡å°åæ | ââ^3 齿¬¡åæ |
|---|---|---|---|
|
æ¤åæ¢éç¨äº 3D 空é´ï¼æ æ³å¨å¹³é¢ä¸è¡¨ç¤ºã |
æ¤åæ¢ä¸æ¯ â^3 ä¸ç线æ§åæ¢ï¼ä¸ä¸è½ä½¿ç¨ç¬å¡å°åæ ç©éµè¡¨ç¤ºã |
|
|
å½¢å¼è¯æ³
<perspective()> =
perspective( [ <length [0,â]> | none ] )
示ä¾
>HTML
<p>没æ 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>å
·æ 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>å
·æ 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);
}
ç»æ
è§è
| è§è |
|---|
| CSS Transforms Module Level 2> # funcdef-perspective> |
æµè§å¨å ¼å®¹æ§
åè§
transform<transform-function>- åç¬ç忢屿§ï¼