У меня есть график d3.js, который составлен из ректов, и я бы хотел, чтобы его можно было изменять с любым соотношением сторон. Я сделал эту работу, добавив этот код:
var canvas = d3.select("#graph-canvas").append("svg:svg")
.attr("viewBox", "0 0 " + viewWidth + " " + viewHeight)
.attr("preserveAspectRatio", "none")
Но проблема в том, что я не хочу, чтобы текст растягивался вместе с ним. Я бы на самом деле хотел, чтобы текст оставался неизменным, а его положение корректировалось в соответствии с размерами диаграммы. Но если текст не может оставаться неизменным, я бы хотел, чтобы он хотя бы сохранил соотношение сторон.
Я пытался установить соотношение сторон для текстового элемента, но это не работает (я думаю, что это атрибут, предназначенный для viewBox.
canvas.append("svg:text")
.attr("x", function(d, i) {return xScale(i) + marginLeft;})
.attr("y", "200")
.attr("preserveAspectRatio", "xMinYMin")
.attr("font-size", "100")
.text("foo");
Я также пытался прикрепить просто нормальные div, но по какой-то причине они никогда не появляются .. Хотя, думаю, это правильная стратегия.