Как уже говорилось в комментариях, вам может повезти, если вы сделаете то же самое, сделав область графика 100% viewBox, но поместите SVG в контейнер с отступом 60px
справа для учета текстового пространства. .
Перемещение вашего текста (и фона rect
) на x="100%"
с text-anchor="start"
, в дополнение к переполнению SVG, вы можете получить довольно близкий результат без необходимости преобразовывать вашу графику c, поскольку у вас есть фиксированное значение 60px
, на которое вы всегда можете положиться:
div {
padding-right: 60px;
}
svg {
overflow: visible;
}
<div>
<svg width="100%" height="100%">
<rect fill="#ccc" x="100%" y="0" width="60px" height="100%"></rect>
<text x="100%" y="50%" stroke="black" text-anchor="start">Y-axis</text>
<rect x="0" y="0" width="100%" height="100%" fill="#c88"></rect>
</svg>
</div>
PS: Возможно, вы бы предпочли, чтобы ваш текст имел text-anchor="middle"
, и преобразуйте его в CSS с помощью transform: translateX(30px)
, чтобы поместить его в центр область «текст» - так может выглядеть чище:
div {
padding-right: 60px;
}
svg {
overflow: visible;
}
text {
transform: translateX(30px);
}
<div>
<svg width="100%" height="100%">
<rect fill="#ccc" x="100%" y="0" width="60px" height="100%"></rect>
<text x="100%" y="50%" stroke="black" text-anchor="middle">Y-axis</text>
<rect x="0" y="0" width="100%" height="100%" fill="#c88"></rect>
</svg>
</div>