transform-origin
å©ç¨å¯è½æ§ã¯éå®ç
ãã®æ©è½ã¯ãã¼ã¹ã©ã¤ã³ã§ã¯ããã¾ãããæãåºã使ç¨ããã¦ãããã©ã¦ã¶ã¼ã®ä¸é¨ã§åä½ãã¾ããã
transform-origin 㯠SVG ã®å±æ§ã§ãã¢ã¤ãã ã®åº§æ¨å¤æã®åç¹ãè¨å®ãã¾ãã
ãã®å±æ§ã¯ããããã SVG è¦ç´ ã«å¯¾ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ãã
ã¡ã¢:
ãã¬ã¼ã³ãã¼ã·ã§ã³å±æ§ã§ãããããtransform-origin ã«ã¯å¯¾å¿ãã CSS ãããã㣠transform-origin ãããã¾ãã両æ¹ãæå®ãããå ´åã CSS ããããã£ãåªå
ããã¾ãã
使ç¨ä¸ã®ã¡ã¢
| å¤ | See transform-origin |
| ããã©ã«ãå¤ | 0 0 |
| ã¢ãã¡ã¼ã·ã§ã³ | å¯ |
ã¡ã¢:
transform-origin ã®ããã©ã«ãå¤ã¯ããã¹ã¦ã® SVG è¦ç´ ã§ 0 0 ã§ãããã«ã¼ãã® <svg> è¦ç´ ããã³ <svg> è¦ç´ ã®ãã¡ç´æ¥ã®åã« foreignObject ããããã®ã¯ä¾å¤ã§ãããããã®è¦ç´ ã¯ãé常㮠CSS ã¨åãã transform-origin: 50% 50% ã§ãã
æå®ãããé·ãããã¼ã»ã³ãå¤ãããã³ãã¼ã¯ã¼ãï¼leftãcenterãrightãtopãbottomï¼ã¯ãã¹ã¦ãåç
§ããã¯ã¹ãåºæºã¨ãã¦ãã¾ããtransform-box ã®ããã©ã«ãå¤ã¯ view-box ã§ãããããè¦ç´ èªä½ã«é¢é£ä»ãããã CSS ã¬ã¤ã¢ã¦ãããã¯ã¹ããªãéãã夿åç¹ã®åº§æ¨ã¯ SVG è¦ç´ ã® viewBox ãåºæºã¨ãã¾ãã
ä¾
次ã®ä¾ã¯ãç©å½¢ããã¯ã¹ãæ°å¤ã®ç°ãªã transform-origin ãä¸å¿ã« 30° å転ãããæ§åã示ãã¦ãã¾ãã
ããããã®å ´åã§ã¯ãSVG ã宣è¨ãããæåã«ç ´ç·ã®èµ¤ã輪éã§å
ã®ããã¯ã¹ãæç»ãããç¶ãã¦ã©ã¤ã è²ã§å転å¾ã®ããã¯ã¹ãæç»ããããã㦠transform-origin ã®ä½ç½®ã赤ãååãã¼ã«ã¼ã¨ãã¦æç»ããã¾ãã
ããã©ã«ãã® transform-origin
ããã©ã«ãã§ã¯ãtransform-origin ã®å¤ã¯ 0 0 ã§ããããã㯠viewBox ã®åç¹ã«é
ç½®ããã¦ãã¾ãã ä¸è¨ã®ä¾ã§ã¯ãviewBox ãè² ã®å¤ã¾ã§æ¡å¼µããååãã¼ã«ã¼å
¨ä½ã表示ã§ããããã«ãã¦ãã¾ããã¾ãã常㫠<svg> è¦ç´ ã®å·¦ä¸è§ã¨ã¯éããªãç¹ã«ã注æã㦠ãã ããã
<svg
viewBox="-10 -10 300 300"
xmlns="http://www.w3.org/2000/svg"
width="310"
height="310">
<rect
x="60"
y="10"
width="180"
height="180"
fill="none"
stroke="red"
stroke-width="3"
stroke-dasharray="3 3" />
<rect
x="60"
y="10"
width="180"
height="180"
fill="lime"
opacity="0.5"
transform="rotate(30)" />
<g transform="translate(0 0)">
<circle cx="0" cy="0" r="3" fill="red" opacity="0.5" />
<path d="M -8 0 h 16 m -8 -8 v 16" fill="none" stroke="red" />
<circle cx="0" cy="0" r="6" fill="none" stroke="red" />
</g>
</svg>
transform-origin ãä¸å¤®ã«é ç½®
ä¸è¨ã®ä¾ã§ã¯ãtransform-origin ã center ã«è¨å®ãã¦ãã¾ããããã«ãããåç¹ã¯ viewBox ã®ä¸å¿ã«é
ç½®ããã¾ããã座æ¨å¤æå¯¾è±¡ã®è¦ç´ ã®ä¸å¿ã«ã¯é
ç½®ããã¾ããã
<svg
viewBox="-10 -10 300 300"
xmlns="http://www.w3.org/2000/svg"
width="310"
height="310">
<rect
x="60"
y="10"
width="180"
height="180"
fill="none"
stroke="red"
stroke-width="3"
stroke-dasharray="3 3" />
<rect
x="60"
y="10"
width="180"
height="180"
fill="lime"
opacity="0.5"
transform="rotate(30)"
transform-origin="center" />
<g transform="translate(150 150)">
<circle cx="0" cy="0" r="3" fill="red" opacity="0.5" />
<path d="M -8 0 h 16 m -8 -8 v 16" fill="none" stroke="red" />
<circle cx="0" cy="0" r="6" fill="none" stroke="red" />
</g>
</svg>
座æ¨å¤æãããè¦ç´ ã«ç¸å¯¾ç㪠transform-origin
transform-origin ã座æ¨å¤æå¯¾è±¡è¦ç´ ã«å¯¾ãã¦ç¸å¯¾çã«è¨å®ããããã«ãtransform-box ããããã£ã使ç¨ãããã¨ãã§ãã¾ããä¸è¨ã§ã¯ transform-box ã fill-box ã«è¨å®ããããã«ãã transform-origin ã座æ¨å¤æå¯¾è±¡è¦ç´ ã®å¢çããã¯ã¹ã«å¯¾ãã¦ç¸å¯¾çãªä½ç½®ã«ãªãã¾ãã
<svg
viewBox="-10 -10 300 300"
xmlns="http://www.w3.org/2000/svg"
width="310"
height="310">
<rect
x="60"
y="10"
width="180"
height="180"
fill="none"
stroke="red"
stroke-width="3"
stroke-dasharray="3 3" />
<rect
class="transformed-elem"
x="60"
y="10"
width="180"
height="180"
fill="lime"
opacity="0.5"
transform="rotate(30)"
transform-origin="center" />
<g transform="translate(150 100)">
<circle cx="0" cy="0" r="3" fill="red" opacity="0.5" />
<path d="M -8 0 h 16 m -8 -8 v 16" fill="none" stroke="red" />
<circle cx="0" cy="0" r="6" fill="none" stroke="red" />
</g>
</svg>
.transformed-elem {
transform-box: fill-box;
}
ãã以å¤ã®ä¾ã¯ CSS ã® transform-origin ãåç
§ãã¦ãã ããã
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Transforms Module Level 1 > # transform-origin-property > |
| Scalable Vector Graphics (SVG) 2 > # PresentationAttributes > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- CSS ã®
transform-originããããã£