2016-04-28 5 views
0

У меня проблемы с масштабированием и центрированием SVG, загружаемого из файла. Это #svg контейнер, который я загружаю SVG файлов с Snapsvg:Snap SVG scale и загруженный в центр SVG-файл

#svg container

Это загружено SVG:

loaded SVG

И когда я масштабирование:

scaled loaded SVG

Как браузер проверяет его:

browser inspecting

Мои JS:

var s = Snap("#svg"); 
var g = s.group(); 
var tux = Snap.load("svg/roulette.svg", function (loadedFragment) { 
    g.append(loadedFragment); 
    var firstScene = new Snap.Matrix(); 
    firstScene.scale(1.5); 
    g.animate({ transform: firstScene }, 0); 
}); 

Как масштабировать свою рулетку и в центре его в SVG # SVG элемент?

Рабочий пример: http://plnkr.co/edit/DE1dds8n3ULOLQRATnLY?p=preview

ответ

1

Это может зависеть, если вам нужно масштабировать и вычислить, где она должна идти, или если отзывчивым решение типа может работать. Сначала я бы изучил это и по-другому рассчитывал вариант.

Поскольку вы не показывали пример выполнения, его трудно убедиться. Я бы опубликовал jsbin с загруженным файлом, чтобы другие могли играть, если следующее не работает.

В то же время вы можете попробовать что-то подобное в функции загрузки ... это может не сработать, хотя в зависимости от того, что Layer_1 и другие svg-родители, и настройки viewBox соответствуют внутреннему SVG.

s.select('#wheel'); // or whatever ID it has, or give it one 
.attr({ width: '100%', height: '100%', viewBox: "0 0 600 600" }); 

Как и в сторону, вам не нужно беспокоиться о матрицах, просто использовать привязку преобразования строк, так что вам не нужно, что код ... например

g.animate({ transform: 's1.5,1.5' }, 1000) 

это все, что вы необходимо будет увеличить масштаб на 1,5

+0

http://plnkr.co/edit/DE1dds8n3ULOLQRATnLY 'g.animate ({transform: 's1.5'}, 1000)' не работает. При смене viewBox на 300x300 или 600x600 - SVG перемещается слишком далеко вправо. Но с меньшим viewBox SVG появляется в контейнере #svg –

+0

Для анимации, попробуйте 's5,5', я забыл, что ему нужны как x, так и y. – Ian

+0

Также похоже, что вы переопределяете ширину/высоту с помощью css, поэтому я бы удалил это (если это не то, что вы хотели). – Ian