translateZ()
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æ.
translateZ() 㯠CSS ã®é¢æ°ã§ã䏿¬¡å
空éã® z è»¸ã«æ²¿ã£ã¦ãããªãã¡é²è¦§è
ã«è¿ã¥ãããé ããã£ããããããã«è¦ç´ ãç§»åããã¾ãããã®çµæã¯ <transform-function> ãã¼ã¿åã¨ãªãã¾ãã
試ãã¦ã¿ã¾ããã
transform: translateZ(0);
transform: translateZ(42px);
transform: translateZ(-9.7rem);
transform: translateZ(-3ch);
<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: rgb(90 90 90 / 0.7);
transform: translateZ(50px);
}
.back {
background: rgb(0 210 0 / 0.7);
transform: rotateY(180deg) translateZ(50px);
}
.right {
background: rgb(210 0 0 / 0.7);
transform: rotateY(90deg) translateZ(50px);
}
.left {
background: rgb(0 0 210 / 0.7);
transform: rotateY(-90deg) translateZ(50px);
}
.top {
background: rgb(210 210 0 / 0.7);
transform: rotateX(90deg) translateZ(50px);
}
.bottom {
background: rgb(210 0 210 / 0.7);
transform: rotateX(-90deg) translateZ(50px);
}
ãã®å¤æã¯ã <length> ã«ãã£ã¦å®ç¾©ãããè¦ç´ ã¾ãã¯è¦ç´ ãã©ãã ãå
å´ã¾ãã¯å¤å´ã«ç§»åããããæå®ãã¾ãã
ä¸è¨ã®ãã¢ã§ã¯ãperspective: 550px; (3D 空éãä½ããã) 㨠transform-style: preserve-3d; (ç«æ¹ä½ã® 6 ã¤ã®é¢ã§ããåã 3D 空éã«é
ç½®) ãç«æ¹ä½ã«è¨å®ãã¾ããã
ã¡ã¢:
translateZ(tz) ã¯ãtranslate3d(0, 0, tz) ã¨ç価ã§ãã
æ§æ
translateZ(tz)
å¤
tz-
夿ãã¯ãã«ã® z æåã表ã
<length>ãç´äº¤åº§æ¨ç³»ã§ã¯ Z 軸æ¹åã®ç§»åéã表ãã¾ããæ£ã®å¤ã§ã¯è¦ç´ ãé²è¦§è ã«åãã£ã¦ç§»åããè² ã®å¤ã§ç§»åããã¨é ãããã¾ãã
| ç´äº¤åº§æ¨ç³» (â^2) | 忬¡åº§æ¨ç³» (ââ^2) | ç´äº¤åº§æ¨ç³» (â^3) | 忬¡åº§æ¨ç³» (ââ^3) |
|---|---|---|---|
| ãã®å¤æã¯ 3D 空éã«é©ç¨ããã¾ããå¹³é¢ä¸ã§ã¯è¡¨ç¾ã§ãã¾ããã | ãã®å¤æã¯ â^3 ã®ç·å½¢å¤æã§ã¯ãªããç´äº¤åº§æ¨ç³»ã®è¡åã§ã¯è¡¨ç¾ã§ãã¾ããã |
|
|
形弿æ³
<translateZ()> =
translateZ( <length> )
ä¾
ãã®ä¾ã§ã¯ã2 ã¤ã®ããã¯ã¹ã使ããã¾ãã1 ã¤ã¯ãã¼ã¸ä¸ã§é常ã®ä½ç½®ã«é ç½®ããã座æ¨å¤æããããã¨ã¯ããã¾ãããããä¸ã¤ã¯ãé è¿æ³ãé©ç¨ãã¦ä¸æ¬¡å 空éãä½ããã¦ã¼ã¶ã¼ã®æ¹ã«ç§»åããã¾ãã
HTML
<div>éç</div>
<div class="moved">ç§»å</div>
CSS
div {
position: relative;
width: 60px;
height: 60px;
left: 100px;
background-color: skyblue;
}
.moved {
transform: perspective(500px) translateZ(200px);
background-color: pink;
}
ããã§éè¦ãªã®ã¯ "moved" ã¨ããã¯ã©ã¹ã§ããã®æ©è½ãè¦ã¦ã¿ã¾ããããã¾ãã
perspective() 颿°ã¯ã z=0 ã®ä½ç½®ã«ããå¹³é¢ (è¦ããã«ç»é¢ã®è¡¨é¢) ã®ç¸å¯¾ä½ç½®ã«é²è¦§è
ãä½ç½®ä»ãã¾ãã 500px ã¨ããå¤ã¯ãã¦ã¼ã¶ã¼ã z=0 ã«ããç»åã® 500 ãã¯ã»ã«ãåãã«ãããã¨ãæå³ãã¾ãã
次ã«ãtranslateZ() 颿°ã¯ãè¦ç´ ãç»é¢ããã¦ã¼ã¶ã¼ã®æ¹ã«ãå¤åãã«ã200 ãã¯ã»ã«ç§»åãã¾ãã ããã¯ãäºæ¬¡å
ã®ãã£ã¹ãã¬ã¤ä¸ã§è¦ãã¨ãã«è¦ç´ ã大ããè¦ãããã¾ã㯠VR ãããã»ãããä»ã®ä¸æ¬¡å
ãã£ã¹ãã¬ã¤æ©å¨ã使ç¨ãã¦è¦ãã¨ãã«è¦ç´ ãããè¿ãè¦ããã¨ãã广ãããã¾ãã
ãªãã perspective() ã®å¤ã translateZ() ã®å¤ãããå°ããå ´åãä¾ãã° transform: perspective(200px) translateZ(300px); ã®å ´åã夿ãããè¦ç´ ã¯ã¦ã¼ã¶ã¼ã®ãã¥ã¼ãã¼ããããæåã«ããããã表示ããã¾ããã perspective 㨠translateZ ã®å¤ã®å·®ãå°ãããã°å°ããã»ã©ãã¦ã¼ã¶ã¼ã¯è¦ç´ ã«è¿ã¥ãã夿ãããè¦ç´ ã¯å¤§ããè¦ãã¾ãã
ã¡ã¢:
座æ¨å¤æã®åæã¯äº¤æå¯è½ã§ã¯ãªãã®ã§ãç°ãªã颿°ãæ¸ãé çªã¯éè¦ã§ããå
·ä½çãªä¾ã¨ãã¦ãä¸è¬çã«ã¯ perspective() ã translateZ() ã®åã«é
ç½®ãã¾ãã
çµæ
仿§æ¸
| Specification |
|---|
| CSS Transforms Module Level 2> # funcdef-translatez> |