Я хочу масштабировать встроенный документ SVG в html. У меня есть такой код:Как масштабировать встроенный SVG
var svg_width = svg.attr('width');
var svg_height = svg.attr('height');
function resize(width, height) {
svg.attr('width', width).attr('height', height);
var group = svg.find('#resize_group');
if (!group.length) {
group = svg.children().not('metadata, defs').wrapAll('<g/>').
parent().attr('id', 'resize_group');
}
var matrix = svg[0].createSVGMatrix();
//var matrix = group[0].getCTM();
matrix.a = width/svg_width;
matrix.d = width/svg_height;
group.attr('transform', matrix.asString());
}
SVGMatrix.prototype.asString = function() {
return 'matrix(' + this.a + ' ' + this.b + ' ' + this.c + ' ' + this.d +
' ' + this.e + ' ' + this.f + ')';
};
ПРИМЕЧАНИЕ: Мне нужно преобразовать элементы внутри svg, потому что в противном случае изображение обрезается.
но когда я вызываю изменение размера в целом svg исчезают. Я сохраняю svg в файл и открываю его в Inkscape, и он выглядит нормально (он масштабируется). Почему svg исчезают? (Я тестировал на Firefox, Chrome и Opera)
Это швы, которые используют wrapAll (' '), чтобы заставить svg исчезнуть. –
jcubic
Я думаю, он создает элемент в пространстве имен html, а не в пространстве имен svg. –
@RobertLongson Я проверяю инспектор google chrome и '$ ('# resize_group') [0] .__ proto__ == SVGGElement', поэтому я думаю, что все в порядке. – jcubic