私はSVGでsvgシェイプを中心にするというロジックを形成するのに苦労しています。 viewBox
スケール機能は問題ありませんが、私はviewBox
を使って形状のセンタリングに苦労しています。ここでスケールイン&センタSVGのシェイプ
コードです:
// SCALE & CENTRE THE TEMPLATE ON SCREEN
const svg = document.getElementsByTagName("svg")[ 0 ];
const t = document.getElementsByClassName("templateParent")[ 0 ];
const svgRect = svg.getBoundingClientRect(),
svgW = svgRect.width,
svgH = svgRect.height,
svgX = svgRect.x,
svgY = svgRect.y;
const aspectRatio = svgW/svgH;
const tRect = t.getBBox(),
tW = tRect.width,
tH = tRect.height,
tX = tRect.x,
tY = tRect.y;
const tmW = tW * 1.25,
tmH = tH * 1.25,
tmX = tX * 1.25,
tmY = tY * 1.25;
const vbH = tmH,
vbW = tmW * aspectRatio,
vbX = tmX * aspectRatio,
vbY = tmY;
私はこのアプローチをよりコントロールするために使用します。パスの位置を配列に格納します。パス要素にSVG center translate値を適用します。スケールしたいときは常に、スケール値ごとに複数の位置をそれぞれ指定します。次に、各位置を中心位置にマッピングします。それを再描画します。 – Adapter