transform
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´9æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
transform 㯠CSS ã®ããããã£ã§ãä¸ããããè¦ç´ ãåè»¢ãæ¡å¤§ç¸®å°ã徿ãç§»åãããã¨ã§ãã¾ãã
ããã¯ã CSS ã®è¦è¦æ´å½¢ã¢ãã«ã®åº§æ¨ç©ºéã夿´ãã¾ãã
ãã®ããããã£ã« none ã¨ã¯ç°ãªãå¤ãè¨å®ããã¦ããã¨ãéãåããã³ã³ããã¹ãã使ããã¾ãã
ãã®å ´åããã®è¦ç´ ã¯ãã®ä¸ã«å«ã¾ãã position: fixed; ã¾ã㯠position: absolute; ã§ãããã¹ã¦ã®è¦ç´ ã®å
å«ãããã¯ã¨ãã¦æ±ããã¾ãã
åæã«ãåã
ã®åº§æ¨å¤æããããã£ãtranslateãrotateãscale ã使ç¨ã§ãã¾ãããããã®ããããã£ãé©ç¨ãããé çªã¯ãtranslateãrotateãscaleãããã¦æå¾ã« transform ã§ãã
è¦å:
座æ¨å¤æå¯è½ãªè¦ç´ ã®ã¿ã transform ã®å¯¾è±¡ã«ãªãã¾ãã
ããã¯ãã¬ã¤ã¢ã¦ãã CSS ããã¯ã¹ã¢ãã«ã«ãã£ã¦ç®¡çããããç½®æè¦ç´ ã§ãªãã¤ã³ã©ã¤ã³ããã¯ã¹ã表ã®åããã¯ã¹ã表ã®åã°ã«ã¼ãããã¯ã¹ãé¤ããã¹ã¦ã®è¦ç´ ã§ãã
試ãã¦ã¿ã¾ããã
transform: matrix(1, 2, 3, 4, 5, 6);
transform: translate(120px, 50%);
transform: scale(2, 0.5);
transform: rotate(0.5turn);
transform: skew(30deg, 20deg);
transform: scale(0.5) translate(-100%, -100%);
<section id="default-example">
<img
class="transition-all"
id="example-element"
src="/shared-assets/images/examples/firefox-logo.svg"
width="200" />
</section>
æ§æ
/* ãã¼ã¯ã¼ãå¤ */
transform: none;
/* 颿°å¤ */
transform: matrix(1, 2, 3, 4, 5, 6);
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
transform: perspective(17px);
transform: rotate(0.5turn);
transform: rotate3d(1, 2, 3, 10deg);
transform: rotateX(10deg);
transform: rotateY(10deg);
transform: rotateZ(10deg);
transform: translate(12px, 50%);
transform: translate3d(12px, 50%, 3em);
transform: translateX(2em);
transform: translateY(3in);
transform: translateZ(2px);
transform: scale(2, 0.5);
transform: scale3d(2.5, 1.2, 0.3);
transform: scaleX(2);
transform: scaleY(0.5);
transform: scaleZ(0.3);
transform: skew(30deg, 20deg);
transform: skewX(30deg);
transform: skewY(1.07rad);
/* è¤æ°ã®é¢æ°å¤ */
transform: translateX(10px) rotate(10deg) translateY(5px);
transform: perspective(500px) translate3d(10px, 0, 20px) rotateY(30deg);
/* ã°ãã¼ãã«å¤ */
transform: inherit;
transform: initial;
transform: revert;
transform: revert-layer;
transform: unset;
transform ããããã£ã«ã¯ããã¼ã¯ã¼ãå¤ none ã 1 ã¤ä»¥ä¸ã® <transform-function> ã®å¤ã®ãããããæå®ããã¾ãã
å¤
<transform-function>-
é©ç¨ããã 1 ã¤ä»¥ä¸ã® CSS 座æ¨å¤æé¢æ°ã§ãã 座æ¨å¤æé¢æ°ã¯ãå·¦ããå³ã¸é ã«éããããã¤ã¾ãå³ããå·¦ã®é ã«åº§æ¨å¤æã®åæã®å¹æãé©ç¨ããã¾ãã
none-
座æ¨å¤æãä½ãé©ç¨ããªããã¨ãæå®ãã¾ãã
ã¢ã¯ã»ã·ããªãã£
æ¡å¤§ã縮å°ã®ã¢ãã¡ã¼ã·ã§ã³ã¯ãç¹å®ã®ç¨®é¡ã®åé çãå¼ãèµ·ããåå ã«ãªããããã®ã§ãã¢ã¯ã»ã·ããªãã£ã®åé¡ã«ãªããã¨ãããã¾ããã¦ã§ããµã¤ãã«ãã®ãããªã¢ãã¡ã¼ã·ã§ã³ãå«ããå¿ è¦ãããå ´åã¯ãã§ããã°ãµã¤ãå ¨ä½ã§ãã¦ã¼ã¶ã¼ãã¢ãã¡ã¼ã·ã§ã³ãæ¢ããå¶å¾¡ãã§ãããããã¦ãã ããã
ã¾ãã prefers-reduced-motion ã¡ãã£ã¢ç¹æ§ã使ç¨ãããã¨ãæ¤è¨ãã¦ãã ãããããã使ç¨ãã¦ã¡ãã£ã¢ã¯ã¨ãªã¼ãæ¸ãã°ãã¦ã¼ã¶ã¼ãã·ã¹ãã ã®è¨å®ã§ã¢ãã¡ã¼ã·ã§ã³ãæ¸ããããæå®ããå ´åã«ã¢ãã¡ã¼ã·ã§ã³ãæ¢ãããã¨ãã§ãã¾ãã
詳ããã¯ä»¥ä¸ã®ææ¸ãåç §ãã¦ãã ããã
å ¬å¼å®ç¾©
| åæå¤ | none |
|---|---|
| é©ç¨å¯¾è±¡ | 座æ¨å¤æå¯è½è¦ç´ |
| ç¶æ¿ | ãªã |
| ãã¼ã»ã³ãå¤ | å²ã¿ããã¯ã¹ã®å¯¸æ³ã«å¯¾ããç¸å¯¾å¤ |
| è¨ç®å¤ | æå®éãããã ãç¸å¯¾çãªé·ãã¯ã¯çµ¶å¯¾çãªé·ãã«å¤æããã |
| ã¢ãã¡ã¼ã·ã§ã³ã®ç¨®é¡ | 座æ¨å¤æ |
| éãåããã³ã³ããã¹ãã®çæ | ãã |
形弿æ³
transform =
none |
<transform-list>
<transform-list> =
<transform-function>+
<transform-function> =
<scale3d()> |
<scale()> |
<scaleX()> |
<scaleY()> |
<scaleZ()> |
<translate3d()> |
<translate()> |
<translateX()> |
<translateY()> |
<translateZ()> |
<rotate3d()> |
<rotate()> |
<rotateX()> |
<rotateY()> |
<rotateZ()> |
<skew()> |
<skewX()> |
<skewY()> |
<matrix3d()> |
<matrix()> |
<perspective()>
<scale3d()> =
scale3d( [ <number> | <percentage> ]#{3} )
<scale()> =
scale( <number> , <number>? )
<scaleX()> =
scaleX( <number> )
<scaleY()> =
scaleY( <number> )
<scaleZ()> =
scaleZ( [ <number> | <percentage> ] )
<translate3d()> =
translate3d( <length-percentage> , <length-percentage> , <length> )
<translate()> =
translate( <length-percentage> , <length-percentage>? )
<translateX()> =
translateX( <length-percentage> )
<translateY()> =
translateY( <length-percentage> )
<translateZ()> =
translateZ( <length> )
<rotate3d()> =
rotate3d( <number> , <number> , <number> , [ <angle> | <zero> ] )
<rotate()> =
rotate( [ <angle> | <zero> ] )
<rotateX()> =
rotateX( [ <angle> | <zero> ] )
<rotateY()> =
rotateY( [ <angle> | <zero> ] )
<rotateZ()> =
rotateZ( [ <angle> | <zero> ] )
<skew()> =
skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )
<skewX()> =
skewX( [ <angle> | <zero> ] )
<skewY()> =
skewY( [ <angle> | <zero> ] )
<matrix3d()> =
matrix3d( <number>#{16} )
<matrix()> =
matrix( <number>#{6} )
<perspective()> =
perspective( [ <length [0,â]> | none ] )
<length-percentage> =
<length> |
<percentage>
ä¾
>è¦ç´ ã®ç§»åã¨å転
HTML
<div>座æ¨å¤æãããè¦ç´ </div>
CSS
div {
border: solid red;
transform: translate(30px, 20px) rotate(20deg);
width: 140px;
height: 60px;
}
çµæ
座æ¨å¤æã®é çª
座æ¨å¤æé¢æ°ã®é çªã¯éè¦ã§ãããã®ä¾ã§ã¯ã 2 ã¤ã®ããã¯ã¹ãåãå¤ã§å転ããã³å¹³è¡ç§»åããã¦ãã¾ãã座æ¨å¤æé¢æ°ã®é çªã ããç°ãªã£ã¦ãã¾ãã
HTML
<div class="original"></div>
<div class="one">1</div>
<div class="two">2</div>
CSS
.one {
transform: translateX(200px) rotate(135deg);
}
.two {
transform: rotate(135deg) translateX(200px);
}
çµæ
è¦ç´ ãå¹³è¡ç§»åãããåã«å転ãããå ´åãå¹³è¡ç§»åã®æ¹åã¯å転ããã軸ã«ãªãã¾ãããã®è»¸ã¯ç¹ç·ã§ç¤ºããã¦ãã¾ãã
ãã®ä»ã®ä¾
ãã®ä»ã®ä¾ã¯ãCSS 座æ¨å¤æã®ä½¿ç¨ããã³ <transform-function> ãã覧ãã ããã
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Transforms Module Level 2 > # transform-functions > |
| CSS Transforms Module Level 1 > # transform-property > |
| Scalable Vector Graphics (SVG) 2 > # TransformProperty > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- CSS 座æ¨å¤æã®ä½¿ç¨
<transform-function>ãã¼ã¿åã«ãã¹ã¦ã®åº§æ¨å¤æé¢æ°ã®èª¬æãããã¾ã- ç¬ç«ãã CSS ããããã£:
translate,rotate,scaleï¼skewããããã£ã¯ããã¾ããï¼ - SVG ã®
transform屿§ - CSS 座æ¨å¤ææ©è½ãè¦è¦åãããªã³ã©ã¤ã³ãã¼ã«: CSS Transform Playgroundï¼è±èªï¼