transform-box
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2020å¹´1æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
transform-box 㯠CSS ã®ããããã£ã§ transformãç¬ç«ãã夿ããããã£ã§ãã translateãscaleãrotateãããã³ transform-origin ããããã£ãç¸å¯¾ããã¬ã¤ã¢ã¦ãããã¯ã¹ãå®ç¾©ãã¾ãã
æ§æ
/* ãã¼ã¯ã¼ãå¤ */
transform-box: content-box;
transform-box: border-box;
transform-box: fill-box;
transform-box: stroke-box;
transform-box: view-box;
/* ã°ãã¼ãã«å¤ */
transform-box: inherit;
transform-box: initial;
transform-box: revert;
transform-box: revert-layer;
transform-box: unset;
transform-box ããããã£ã¯ã以ä¸ã®ããããã®ãã¼ã¯ã¼ãã§æå®ããã¾ãã
å¤
content-box-
ã³ã³ãã³ãããã¯ã¹ãåç §ããã¯ã¹ã¨ãã¦ä½¿ç¨ãã¾ãã
<table>ã®åç §ããã¯ã¹ã¯è¡¨ã®ããã¯ã¹ã§ã¯ãªãã表ãå²ãã§ããããã¯ã¹ã®å¢çããã¯ã¹ã«ãªãã¾ãã border-box-
å¢çããã¯ã¹ãåç §ããã¯ã¹ã¨ãã¦ä½¿ç¨ãã¾ãã
<table>ã®åç §ããã¯ã¹ã¯è¡¨ã®ããã¯ã¹ã§ã¯ãªãã表ãå²ãã§ããããã¯ã¹ã®å¢çããã¯ã¹ã«ãªãã¾ãã fill-box-
ãã®ãªãã¸ã§ã¯ãã®ãã¦ã³ãã£ã³ã°ããã¯ã¹ãåç §ããã¯ã¹ã¨ãã¦ä½¿ç¨ãã¾ããé¢é£ä»ãããã CSS ã¬ã¤ã¢ã¦ãããã¯ã¹ãæã¤è¦ç´ ã«å¯¾ãã¦ã¯ã
content-boxã¨ãã¦æ©è½ãã¾ãã stroke-box-
ã¹ããã¼ã¯ã®ãã¦ã³ãã£ã³ã°ããã¯ã¹ãåç §ããã¯ã¹ã¨ãã¦ä½¿ç¨ãã¾ããé¢é£ä»ãããã CSS ã¬ã¤ã¢ã¦ãããã¯ã¹ãæã¤è¦ç´ ã«å¯¾ãã¦ã¯ã
border-boxã¨ãã¦æ©è½ãã¾ãã view-box-
ç´è¿ã® SVG ã®ãã¥ã¼ãã¼ããåç §ããã¯ã¹ã¨ãã¦ä½¿ç¨ãã¾ãã SVG ãã¥ã¼ãã¼ãã«
viewBox屿§ãæå®ããã¦ããå ´åãåç §ããã¯ã¹ã¯viewBox屿§ã«ãã£ã¦è¨å®ããã座æ¨ç³»ã®åç¹ã«é ç½®ããã¾ããã¾ããåç §ããã¯ã¹ã®å¯¸æ³ã¯viewBox屿§ã®å¹ ã¨é«ãã®å¤ã«è¨å®ããã¾ããé¢é£ãã CSS ã¬ã¤ã¢ã¦ãããã¯ã¹ãæã¤è¦ç´ ã®å ´åãborder-boxã¨ãã¦åä½ãã¾ãã
å ¬å¼å®ç¾©
| åæå¤ | view-box |
|---|---|
| é©ç¨å¯¾è±¡ | 座æ¨å¤æå¯è½è¦ç´ |
| ç¶æ¿ | ãªã |
| è¨ç®å¤ | æå®éã |
| ã¢ãã¡ã¼ã·ã§ã³ã®ç¨®é¡ | 颿£å¤ |
形弿æ³
transform-box =
content-box |
border-box |
fill-box |
stroke-box |
view-box
ä¾
>SVG ã® transform-origin ã®ã¹ã³ã¼ã
ãã®ä¾ã§ã¯ã以ä¸ã®ãã㪠SVG ãããã¨ãã¾ãã
<svg id="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
<g>
<circle id="center" fill="red" r="1" transform="translate(25 25)" />
<circle id="boxcenter" fill="blue" r=".5" transform="translate(15 15)" />
<rect
id="box"
x="10"
y="10"
width="10"
height="10"
rx="1"
ry="1"
stroke="black"
fill="none" />
</g>
</svg>
CSS ã§ã¯ãé·æ¹å½¢ãç¡éã«å転ãããããã«å¤æã使ç¨ããã¢ãã¡ã¼ã·ã§ã³ãããã¾ãã transform-box: fill-box 㯠transform-origin ããã¦ã³ãã£ã³ã°ããã¯ã¹ã®ä¸å¿ã«ããããã«ä½¿ç¨ãã¦ããã®ã§ãé·æ¹å½¢ã¯é
ç½®ãããã¾ã¾å転ãã¾ããããããªãã¨ã座æ¨å¤æã®åç¹ã¯ SVG ãã£ã³ãã¹ã®ä¸å¿ã«ãªãã®ã§ã極ãã¦ç°ãªã广ã«ãªãã¾ãã
svg {
width: 80vh;
border: 1px solid #d9d9d9;
position: absolute;
margin: auto;
inset: 0;
}
#box {
transform-origin: 50% 50%; /* 广ãè¦ãã«ã¯ `0 0` 以å¤ãæå®ãã */
transform-box: fill-box;
animation: rotate-box 3s linear infinite;
}
@keyframes rotate-box {
to {
transform: rotate(360deg);
}
}
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Transforms Module Level 1 > # transform-box > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- CSS 座æ¨å¤æã®ä½¿ç¨
transform,transform-origin- ç¬ç«ãã座æ¨å¤æããããã£: