Простой способ JavaScript состоит в том, чтобы получить BBox вашего контейнера и применить его в качестве атрибута viewBox.
onclick = e => {
const svg = document.querySelector('svg');
const bbox = svg.getBBox();
svg.setAttribute('viewBox', `${bbox.x} ${bbox.y} ${bbox.width} ${bbox.height}`);
console.log(bbox);
};
svg {
border: 1px solid;
}
text {
font: 16px "Times Roman";
}
<svg width="300" height="150">
<text x="0" y="50" >Click to adjust</text>
</svg>
Очевидно, вы также можете вызвать его вручную из браузера и затем скопировать вручную в свою разметку:
svg {
border: 1px solid;
}
text {
font: 16px "Times Roman";
}
<svg width="300" height="150" viewBox="0 36 93.34375 18">
<text x="0" y="50">Click to adjust</text>
</svg>
Однако в моих знаниях нет ничего, что позволило бы вам настроить viewBox, который бы знал о его содержимом.То есть нельзя делать что-то вроде viewBox="contain"
.