Изображение SVG внутри круга
Я хочу создать круг, содержащий изображение, я уже пробовал использовать pattern
или filter
, но ни один из них не дал мне ожидаемого результата. Ниже приведен код:
<svg id="graph" width="100%" height="400px">
<!-- filter -->
<filter id = "born1" x = "0%" y = "0%" width = "100%" height = "100%">
<feImage xlink:href = "https://cdn3.iconfinder.com/data/icons/people-professions/512/Baby-512.png"/>
</filter>
<circle id = "born" class = "medium" cx = "5%" cy = "20%" r = "5%" fill = "white" stroke = "lightblue" stroke-width = "0.5%" filter = "url(#born1)"/>
<!-- pattern -->
<defs>
<pattern id="image" x="0" y="0" height="100%" width="100%">
<image x="0" y="0" xlink:href="#" onclick="location.href='https://cdn3.iconfinder.com/data/icons/people-professions/512/Baby-512.png'; return false;"></image>
</pattern>
</defs>
<circle id = "sd" class = "medium" cx = "5%" cy = "40%" r = "5%" fill = "white" stroke = "lightblue" stroke-width = "0.5%" fill="url(#image)"/>
</svg>
Ответы
Ответ 1
Будет работать шаблон. Вам просто нужно указать размер <image>
. В отличие от HTML, изображения SVG по умолчанию равны ширине и высоте нуля.
Кроме того, если вы хотите, чтобы изображение масштабировалось с помощью круга, вы должны указать viewBox
для шаблона.
<svg id="graph" width="100%" height="400px">
<!-- pattern -->
<defs>
<pattern id="image" x="0%" y="0%" height="100%" width="100%"
viewBox="0 0 512 512">
<image x="0%" y="0%" width="512" height="512" xlink:href="https://cdn3.iconfinder.com/data/icons/people-professions/512/Baby-512.png"></image>
</pattern>
</defs>
<circle id="sd" class="medium" cx="5%" cy="40%" r="5%" fill="url(#image)" stroke="lightblue" stroke-width="0.5%" />
</svg>
Ответ 2
Попробуйте это,
используйте patternUnits="userSpaceOnUse"
и установите height="100%" width="100%"
в <image>
<defs>
<pattern id="image" x="0" patternUnits="userSpaceOnUse" y="0" height="100%" width="100%">
<image x="0" y="0" width="500" height="500" xlink:href="#" onclick="location.href='http://www.viralnovelty.net/wp-content/uploads/2014/07/121.jpg'; return false;"></image>
</pattern>
</defs>
Демо