Как svg элементу растянуть задний фон?
есть такая форма
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<defs>
<pattern id="image" patternUnits="userSpaceOnUse" width="100" height="100">
<image x="0" y="0" width="100" height="100" xlink:href="1111111.jpg"></image>
</pattern>
</defs>
<path fill="url(#image)" d="M64.6,-24.3C72.3,2.6,59.1,32.9,38.5,46.4C17.8,59.9,-10.4,56.5,-29.7,42.2C-49,27.9,-59.4,2.6,-53,-22.6C-46.6,-47.7,-23.3,-72.7,2.6,-73.6C28.5,-74.4,57,-51.1,64.6,-24.3Z" transform="translate(100 100)"/>
</svg>
но задний фон не получается растянуть, сама картинка 1920x1080, может есть что-то вроде background-size: 100%; ?
Ответы (1 шт):
Автор решения: Alexandr_TT
→ Ссылка
Замените patternUnits="userSpaceOnUse" на patternUnits = "objectBoundingBox"
Задайте ширину и высоту в процентах
<pattern id="image" width="100%" height="100%">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<defs>
<pattern id="image" patternUnits = "objectBoundingBox" width="100%" height="100%">
<image x="-20" y="0" width="75%" height="75%" xlink:href="http://i.imgur.com/3DWAbmN.jpg"></image>
</pattern>
</defs>
<path fill="url(#image)" d="M64.6,-24.3C72.3,2.6,59.1,32.9,38.5,46.4C17.8,59.9,-10.4,56.5,-29.7,42.2C-49,27.9,-59.4,2.6,-53,-22.6C-46.6,-47.7,-23.3,-72.7,2.6,-73.6C28.5,-74.4,57,-51.1,64.6,-24.3Z" transform="translate(100 100)"/>
</svg>
Дополнительные возможности позиционирования и масштабирования, можно получить при оборачивании svg в контейнер
<div class="container">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
....
</svg>
</div>
В этом случае блок svg может занимать весь контейнер и быть
С фиксированными размерами
.container {
width:200px;
height:200px;
<div class="container">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<defs>
<pattern id="image" patternUnits = "objectBoundingBox" width="100%" height="100%">
<image x="-20" y="0" width="75%" height="75%" xlink:href="http://i.imgur.com/3DWAbmN.jpg"></image>
</pattern>
</defs>
<path fill="url(#image)" d="M64.6,-24.3C72.3,2.6,59.1,32.9,38.5,46.4C17.8,59.9,-10.4,56.5,-29.7,42.2C-49,27.9,-59.4,2.6,-53,-22.6C-46.6,-47.7,-23.3,-72.7,2.6,-73.6C28.5,-74.4,57,-51.1,64.6,-24.3Z" transform="translate(100 100)"/>
</svg>
</div>
C масштабированием в зависимости от размеров дисплея гаджета
.container {
width:45%;
height:45%;
<div class="container">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<defs>
<pattern id="image" patternUnits = "objectBoundingBox" width="100%" height="100%">
<image x="-20" y="0" width="75%" height="75%" xlink:href="http://i.imgur.com/3DWAbmN.jpg"></image>
</pattern>
</defs>
<path fill="url(#image)" d="M64.6,-24.3C72.3,2.6,59.1,32.9,38.5,46.4C17.8,59.9,-10.4,56.5,-29.7,42.2C-49,27.9,-59.4,2.6,-53,-22.6C-46.6,-47.7,-23.3,-72.7,2.6,-73.6C28.5,-74.4,57,-51.1,64.6,-24.3Z" transform="translate(100 100)"/>
</svg>
</div>
