Fill SVG path element with a background-image
248,524
You can do it by making the background into a pattern:
<defs>
<pattern id="img1" patternUnits="userSpaceOnUse" width="100" height="100">
<image href="wall.jpg" x="0" y="0" width="100" height="100" />
</pattern>
</defs>
Adjust the width and height according to your image, then reference it from the path like this:
<path d="M5,50
l0,100 l100,0 l0,-100 l-100,0
M215,100
a50,50 0 1 1 -100,0 50,50 0 1 1 100,0
M265,50
l50,100 l-100,0 l50,-100
z"
fill="url(#img1)" />
Related videos on Youtube
Comments
-
jbochi over 3 years
Is it possible to set a
background-image
for an SVG<path>
element?For instance, if I set the element
class="wall"
, the CSS style.wall {fill: red;}
works, but.wall{background-image: url(wall.jpg)}
does not, neither.wall {background-color: red;}
.-
Phrogz almost 12 yearsShowing how to set the background image for SVG text, optionally on a per-character basis: stackoverflow.com/a/10853878/405017
-
Paulo Bueno over 7 yearsfor those looking for some more in deep info check this article link
-
-
Christoph about 12 yearsvery nice, does this work with base64 images too? instead of wall.jpg something like
data:image/png;base64,iVBORw0KGgoAA
like you would in normal CSS? -
robertc about 12 years@Christoph I don't know, try it and see.
-
Christoph about 12 years@robertc I tried and it didn't work, but i had a duplicate style element. By eliminating it, it worked just fine;)
-
Tobias Golbs over 11 years@robertc: I have a question regarding your answer. The pattern starts at the global coordinates (0,0). Is it possible to let the pattern use the local coordinate system from the object attached to? I want to draw a rect at different places in my svg and what happens is, that the pattern is repeated in the hole background and the objects are used as masks.
-
robertc over 11 years@TobiasKun I suggest you ask your own question.
-
Protagonist almost 11 yearsThis is a really helpful answer, especially if you're working with d3.js or other similar libs. Upvoted because damn, it saved me.
-
Joseph Coco over 9 yearsUnfortunately TCPDF doesn't support SVG Patterns, as I imagine other programs which don't yet have full SVG2 support don't either.
-
mesqueeb over 5 years@robertc I have a question. Is it possible to have the image cover the surface of of the path? instead of entering manual width and height.
-
Blake Regalia about 5 years@robertc please update your answer to mention that
xlink:href
is deprecated since SVG 2 and to simply usehref
now. developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href