У меня есть страница XHTML с встроенным SVG в качестве элемента <svg>
. Мне нужно реализовать масштабирование, но есть требование, чтобы внутренние элементы <text>
не должны масштабироваться. Очевидным решением является
<svg ...>
<!-- Root <g> to programmatically `setAttribute("transform", ...)` -->
<g transform="scale(0.5)">
<!-- Various inner elements here -->
<!-- Here is a text element.
Additional <g> is to apply text position which
*must* depend on the scaling factor set above -->
<g transform="translate(100 50)">
<!-- Apply the opposite scaling factor.
Must be done for every `<text>` element on each change of the scaling factor... -->
<text x="0" y="0" transform="scale(2)">Hello, World!</text>
</g>
</g>
</svg>
Есть ли лучшее решение? Может быть, есть способ "reset" результирующий масштабный коэффициент для внутренних элементов <text>
? Код должен работать в Firefox и Chrome.
UPD. Существует также возможность размещать текстовые элементы вне масштабируемого элемента и вручную управлять позициями текстовых элементов. Это позволяет избежать визуальных сбоев, возникающих в тексте из-за масштабирования. В настоящее время я использую этот метод.