Baseline Widely available
<transform-function>
㯠CSS ã®ãã¼ã¿åã§ãè¦ç´ ã®å¤è¦ã«å½±é¿ãã座æ¨å¤æã表ãã¾ãã座æ¨å¤æé¢æ°ã¯ã 2D ã¾ã㯠3D 空éã§è¦ç´ ãåè»¢ãæ¡å¤§ç¸®å°ãæªæ²ãç§»åããããã¨ãã§ãã¾ãããã㯠transform
ããããã£ã®ä¸ã§ä½¿ç¨ããã¾ãã
<transform-function>
ãã¼ã¿åã¯ã以ä¸ã«ç¤ºãã夿颿°ã®ãã¡ã®ä¸ã¤ã使ç¨ãã¦æå®ãã¾ããå颿°ã¯ 2D ã¾ã㯠3D ã®åº§æ¨æä½ãé©ç¨ãã¾ãã
matrix()
2D ã®åæ¬¡å¤æè¡åãè¨è¿°ãã¾ãã
matrix3d()
3D ã®å¤æã 4Ã4 ã®å次è¡åã§è¨è¿°ãã¾ãã
perspective()
ã¦ã¼ã¶ã¼ã¨ z=0 å¹³é¢ã¨ã®éã®è·é¢ãè¨å®ãã¾ãã
rotate()
è¦ç´ ã 2D å¹³é¢ä¸ã§ç¹å®ã®ç¹ãä¸å¿ã«å転ãã¾ãã
rotate3d()
è¦ç´ ã 3D 空éã§ç¹å®ã®è»¸ãä¸å¿ã«å転ãã¾ãã
rotateX()
è¦ç´ ãæ°´å¹³è»¸ãä¸å¿ã«å転ãã¾ãã
rotateY()
è¦ç´ ãåç´è»¸ãä¸å¿ã«å転ãã¾ãã
rotateZ()
è¦ç´ ã Z 軸ãä¸å¿ã«å転ãã¾ãã
scale()
è¦ç´ ã 2D å¹³é¢ä¸ã§æ¡å¤§ã¾ãã¯ç¸®å°ãã¾ãã
scale3d()
è¦ç´ ã 3D 空éã§æ¡å¤§ã¾ãã¯ç¸®å°ãã¾ãã
scaleX()
è¦ç´ ãæ°´å¹³ã«æ¡å¤§ã¾ãã¯ç¸®å°ãã¾ãã
scaleY()
è¦ç´ ãåç´ã«æ¡å¤§ã¾ãã¯ç¸®å°ãã¾ãã
scaleZ()
è¦ç´ ã Z 軸æ¹åã«æ¡å¤§ã¾ãã¯ç¸®å°ãã¾ãã
skew()
è¦ç´ ã 2D å¹³é¢ä¸ã§æªã¾ãã¾ãã
skewX()
è¦ç´ ãæ°´å¹³æ¹åã«æªã¾ãã¾ãã
skewY()
è¦ç´ ãåç´æ¹åã«æªã¾ãã¾ãã
translate()
è¦ç´ ã 2D å¹³é¢ä¸ã§å¹³è¡ç§»åããã¾ãã
translate3d()
è¦ç´ ã3D 空éã§å¹³è¡ç§»åããã¾ãã
translateX()
è¦ç´ ãæ°´å¹³æ¹åã«å¹³è¡ç§»åããã¾ãã
translateY()
è¦ç´ ãåç´æ¹åã«å¹³è¡ç§»åããã¾ãã
translateZ()
è¦ç´ ã Z 軸æ¹åã«å¹³è¡ç§»åããã¾ãã
HTML è¦ç´ ã®å¯¸æ³ãå½¢ç¶ãè¨è¿°ããããã«æ§ã ãªåº§æ¨ã¢ãã«ãç¨ãããããã¨ããããåæ§ã«å¤æã«ãé©ç¨ããã¾ããæãä¸è¬çãªãã®ã¯ãç´äº¤åº§æ¨ç³»ã§ããã忬¡åº§æ¨ç³»ãç¨ãããããã¨ãããã¾ãã
ç´äº¤åº§æ¨ç³»ç´äº¤åº§æ¨ç³»ã§ã¯ãäºæ¬¡å
ã®ç¹ã¯ã X åº§æ¨ (横座æ¨) 㨠Y åº§æ¨ (縦座æ¨) ã®äºã¤ã®å¤ã使ç¨ãã¦è¨è¿°ãã¾ãããã㯠(x, y)
ã®ãã¯ãã«è¡¨è¨ã§è¡¨ç¾ããã¾ãã
CSS (ããã³å¤ãã®ã³ã³ãã¥ã¼ã¿ã¼ã°ã©ãã£ãã¯) ã§ã¯ãåç¹ (0, 0)
ãåè¦ç´ ã®å·¦ä¸ã表ãã¾ããæ£ã®åº§æ¨ã¯åç¹ããä¸ããã³å³ã«åãããè² ã®åº§æ¨ã¯ä¸ããã³å·¦ã«åããã¾ããå¾ã£ã¦ãå³ã« 2 åä½ãä¸ã« 5 åä½ã§ã¯ (2, 5)
ã¨ãªãã左㫠3 åä½ãä¸ã« 12 åä½ã§ã¯ (-3, -12)
ã¨ãªãã¾ãã
座æ¨å¤æé¢æ°ã¯ã座æ¨ã®å¤ãæä½ãããã¨ã«ãã£ã¦è¦ç´ ã®å¤è¦ã夿´ãã¾ããç·å½¢åº§æ¨å¤æé¢æ°ã¯ã次ã®ããã« 2Ã2 ã®è¡åã§è¨è¿°ããã¾ãã
( a c b d )
颿°ã¯è¡åã®ä¹ç®ã«ãã£ã¦è¦ç´ ã«é©ç¨ããã¾ããã¤ã¾ããããããã®åº§æ¨ã¯è¡åã®å¤ã«åºã¥ãã¦å¤åãã¾ãã
( a c b d ) ( x y ) = ( a x + c y b x + d y )
ä¸è¡ã®ä¸ã§è¤æ°ã®åº§æ¨å¤æãé©ç¨ãããã¨ãã§ãã¾ãã
( a 1 c 1 b 1 d 1 ) ( a 2 c 2 b 2 d 2 ) = ( a 1 a 2 + c 1 b 2 a 1 c 2 + c 1 d 2 b 1 a 2 + d 1 b 2 b 1 c 2 + d 1 d 2 )
ãã®è¨æ³ã§ãæããã使ãããåè»¢ãæ¡å¤§ç¸®å°ã徿ã®åº§æ¨å¤æãè¨è¿°ããåæãããã¨ãã§ãã¾ãã (å®éããã¹ã¦ã®åº§æ¨å¤æãè¨è¿°ã§ããç·å½¢é¢æ°ã§ãã) 座æ¨å¤æã®åæã¯å³ããå·¦ã®é ã«å¹æçã«é©ç¨ããã¾ãã
ãããã主è¦ãªåº§æ¨å¤æã®ãã¡å¹³è¡ç§»åã¯ç·å½¢ã§ã¯ãªããå¾ã£ã¦ãã®è¨æ³ã使ç¨ããå ´åã¯ç¹ä¾ã¨ããå¿
è¦ãããã¾ããå¹³è¡ç§»åã®ãã¯ãã« (tx, ty)
ã¯ãäºã¤ã®è¿½å ã®å¼æ°ã§å¥ã«è¡¨ç¾ããªããã°ãªãã¾ããã
ã¡ã¢: ç´äº¤åº§æ¨ãããé£è§£ã§ãããå°å½±å¹¾ä½å¦ã®å次座æ¨ã¯ 3 à 3 ã®å¤æè¡åã使ç¨ããã®ã§ãç·å½¢é¢æ°ã¨ãã¦å¹³è¡ç§»åãããç°¡åã«è¡¨ç¾ã§ãã¾ãã
ã¡ã¢: 座æ¨å¤æé¢æ°ã¯ transform
ããããã£ã§ä½¿ç¨ããã¾ãããåã
ã®å¤æããããã£ï¼translate
ãscale
ãrotate
ï¼ã§ã¯ä½¿ç¨ããã¾ããã
次ã®ä¾ã§ã¯ãDOM è¦ç´ ã¨åº§æ¨å¤æã§ä½æããã 3D ç«æ¹ä½ã¨ãç«æ¹ä½ã座æ¨å¤æããããã®æ§ã ãªåº§æ¨å¤æé¢æ°ã鏿ããããã®é¸æã¡ãã¥ã¼ãç¨æããã¦ãããæ§ã ãªç¨®é¡ã®å¹æãæ¯è¼ãããã¨ãã§ãã¾ãã
鏿ããã¨ã夿ãç«æ¹ä½ã«é©ç¨ããã2 ç§å¾ã«ç«æ¹ä½ã¯éå§æã®ç¶æ
ã«æ»ãã¾ãããã¹ã¦ã®å¤æã®å¹æãè¦ããã¨ãã§ããããã«ãtransform3d()
ã使ã£ã¦ç«æ¹ä½ã®éå§ç¶æ
ããããã«å転ããã¦ãã¾ãã
<main>
<section 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>
</section>
<div class="select-form">
<label for="transfunction">座æ¨å¤æé¢æ°ã鏿ãã¦ãã ãã</label>
<select id="transfunction">
<option selected>座æ¨å¤æé¢æ°ã鏿</option>
<option>rotate(360deg)</option>
<option>rotateX(360deg)</option>
<option>rotateY(360deg)</option>
<option>rotateZ(360deg)</option>
<option>rotate3d(1, 1, 1, 90deg)</option>
<option>scale(1.5)</option>
<option>scaleX(1.5)</option>
<option>scaleY(1.5)</option>
<option>scaleZ(1.5)</option>
<option>scale3d(1, 1.5, 1.5)</option>
<option>skew(17deg, 13deg)</option>
<option>skewX(17deg)</option>
<option>skewY(17deg)</option>
<option>translate(100px, 100px)</option>
<option>translateX(100px)</option>
<option>translateY(100px)</option>
<option>translateZ(100px)</option>
<option>translate3d(50px, 50px, 50px)</option>
<option>perspective(200px)</option>
<option>matrix(1, 2, -1, 1, 80, 80)</option>
<option>matrix3d(1,0,0,0,0,1,3,0,0,0,1,0,50,100,0,1.1)</option>
</select>
</div>
</main>
CSS
main {
width: 400px;
height: 200px;
padding: 50px;
background-image: linear-gradient(135deg, white, cyan, white);
}
#example-element {
width: 100px;
height: 100px;
transform-style: preserve-3d;
transition: transform 1.5s;
transform: rotate3d(1, 1, 1, 30deg);
}
.face {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
position: absolute;
backface-visibility: inherit;
font-size: 60px;
color: #fff;
}
.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);
}
.select-form {
margin-top: 50px;
}
JavaScript
const selectElem = document.querySelector("select");
const example = document.querySelector("#example-element");
selectElem.addEventListener("change", () => {
if (selectElem.value === "Choose a function") {
return;
} else {
example.style.transform = `rotate3d(1, 1, 1, 30deg) ${selectElem.value}`;
setTimeout(() => {
example.style.transform = "rotate3d(1, 1, 1, 30deg)";
}, 2000);
}
});
çµæ 仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4