SVG 그리기 내용을 표시 영역에 피팅(ViewBox)

5527 단어 SVG

얼마나 어긋나면 좋은지 알고 있다면


<style>svg{border: 1px solid orange}</style>

<svg width="100" height="100">
  <circle cx="0" cy="0" r="30">
</svg>

<svg viewBox="-30, -30, 60, 60" width="100" height="100">
  <circle cx="0" cy="0" r="30">
</svg>



이 경우는 viewBox로 지정하는 것보다, 의 cx/cy 속성으로 어긋나는 것이 보통일지도

어긋나는 양을 모르는 경우



예를 들어 다음과 같은 경우
<svg width="200" height="70">
  <text text-anchor="start" x="40" y="20">
    Left alignment
  </text>
  <text text-anchor="end" x="40" y="50">
    Right alignment
  </txt>
</svg>



표시하고 있는 내용의 실 사이즈를 모르기 때문에 viewBox 의 값을 지정할 수 없다.
그러므로, 우선 묘화하고 나서 getBBox로 사이즈를 취득해 viewBox를 지정한다.
<svg id="fit" width="200" height="70">
  <text text-anchor="start" x="40" y="20">
    Left alignment
  </text>
  <text text-anchor="end" x="40" y="50">
    Right alignment
  </txt>
</svg>

자바스크립트
var fit = document.getElementById("fit");
var bbox = fit.getBBox();

fit.setAttribute(
  "viewBox", bbox.x + ", " + bbox.y + ", " + bbox.width + ", " + bbox.height
);


좋은 웹페이지 즐겨찾기