Обычно вы можете установить ширину% 100 и определить viewBox в SVG. Но Raphael JS вручную установил ширину и высоту непосредственно на ваших SVG-элементах, что убивает эту технику.
Ответ Боша великолепен, но он искажает соотношение сторон для меня. Пришлось настроить несколько вещей, чтобы заставить его работать правильно. Также включена некоторая логика для поддержания максимального размера.
// Variables
var width;
var height;
var maxWidth = 940;
var maxHeight = 600;
var widthPer;
function setSize() {
// Setup width
width = window.innerWidth;
if (width > maxWidth) width = maxWidth;
// Setup height
widthPer = width / maxWidth;
height = widthPer * maxHeight;
}
var paper = Raphael(document.getElementById("infographic"), 940, 600);
paper.setViewBox(0, 0, 940, 600, true);
window.onresize = function(event) {
setSize();
paper.setSize(width,height);
redraw_element();
}