Предположим, у меня есть SVG, который выглядит так:
И я хочу поместить это в div и заставить его заполнить div ответственно. Мой способ сделать это заключается в следующем:
Сначала я открываю файл SVG в приложении, таком как inkscape. В File-> Document Properties я установил ширину документа в 800px и высоту в 600px (вы можете выбрать другие размеры). Затем я помещаю SVG в этот документ.
Затем я сохраняю этот файл как новый файл SVG и получаю данные пути из этого файла.
Теперь в HTML код, который делает магию, выглядит следующим образом:
<div id="containerId">
<svg
id="svgId"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
x="0"
y="0"
width="100%"
height="100%"
viewBox="0 0 800 600"
preserveAspectRatio="none">
<path d="m0 0v600h800v-600h-75.07031l-431 597.9707-292.445315-223.99609 269.548825-373.97461h-271.0332z" fill="#f00"/>
</svg>
</div>
Обратите внимание, что ширина и высота SVG установлены на 100%, так как мы хотим, чтобы он заполнял контейнер по вертикали и горизонтали, но ширина и высота viewBox такие же, как ширина и высота документа в inkscape, это 800px X 600px. Следующее, что вам нужно сделать, это установить для preserveAspectRatio значение «none». Если вам нужно больше информации об этом атрибуте, вот хорошая ссылка . И это все, что нужно сделать.
Еще одна вещь заключается в том, что этот код работает практически во всех основных браузерах, даже в старых, но в некоторых версиях android и ios вам необходимо использовать некоторый код javascrip / jQuery, чтобы поддерживать его согласованность. Я использую следующие в документе готовые функции и функции изменения размера:
$('#svgId').css({
'width': $('#containerId').width() + 'px',
'height': $('#containerId').height() + 'px'
});
Надеюсь, это поможет!