Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Text with image background in svg or css

Tags:

css

svg

Is it possible to have background for text in svg or css? it means , every character have background? here is the example:

text with background mask

I have made this in photoshop and made a mask, i just wonder i it is possible in svg or css?

like image 243
PFK Avatar asked Dec 01 '22 05:12

PFK


2 Answers

Here is an example using a pattern. It uses <tspan> elements with patterned fill to show you how this may be done on a per-character basis, if desired:

Demo: http://jsfiddle.net/xWNR3/2/

The text "Hello World" with each letter of the first word filled with one pattern, and each letter of the second word filled with another pattern, except the "r" which is filled with the first pattern.

<svg xmlns="http://www.w3.org/2000/svg" xmlns:x="http://www.w3.org/1999/xlink">
  <style>
    svg  { background:#ddd }
    text {
      font-family:Verdana; font-size:160pt; font-weight:bold;
      stroke:#000;
    }
  </style>
  <defs>
    <pattern id="p1" patternUnits="userSpaceOnUse" width="32" height="32">
      <image x:href="alphaball.png" width="32" height="32" />
    </pattern>
    <pattern id="p2" patternUnits="userSpaceOnUse" width="10" height="10">
      <image x:href="grid.gif" width="10" height="10" />
    </pattern>
  </defs>
  <text x="20" y="170" fill="url(#p1)">
    Hello
    <tspan x="20" y="350"
           fill="url(#p2)">Wo<tspan fill="url(#p1)">r</tspan>ld</tspan>
  </text>
</svg>
like image 89
Phrogz Avatar answered Dec 09 '22 19:12

Phrogz


You can use a mask or a clipPath to do this too, in addition to the way with patterns as in the answers robertc suggested.

Here's an example from the svg testsuite using clipPath.

like image 27
Erik Dahlström Avatar answered Dec 09 '22 19:12

Erik Dahlström