SVGパス要素を背景画像で塗りつぶす


166

background-imageSVG <path>要素にを設定することは可能ですか?

たとえば、要素を設定した場合class="wall"、CSSスタイルは.wall {fill: red;}機能しますが、.wall{background-image: url(wall.jpg)}機能しません.wall {background-color: red;}


1
:必要に応じて文字単位で、SVGのテキストの背景画像を設定する方法を示しstackoverflow.com/a/10853878/405017
Phrogz

詳しい情報をもっと知りたい方は、この記事のリンクを
Paulo Bueno

回答:


261

あなたは背景をパターンにすることでそれを行うことができます:

<defs>
  <pattern id="img1" patternUnits="userSpaceOnUse" width="100" height="100">
    <image xlink:href="wall.jpg" x="0" y="0" width="100" height="100" />
  </pattern>
</defs>

画像に合わせて幅と高さを調整し、次のようにパスから参照します。

<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)" />

実施例


3
とてもいいです、これはbase64画像でも動作しますか?wall.jpgの代わりにdata:image/png;base64,iVBORw0KGgoAA、通常のCSSのようなものですか?
クリストフ

12
@Christophわからない、試して見て。
robertc

2
@robertc試してみましたが機能しませんでしたが、重複するスタイル要素がありました。それを排除することで、それはうまく
クリストフ

4
@robertc:私はあなたの答えについて質問があります。パターンはグローバル座標(0,0)から始まります。アタッチされたオブジェクトのローカル座標系をパターンに使用させることはできますか?私は私のsvgのさまざまな場所に四角形を描画したいのですが、何が起こっているかというと、パターンが穴の背景で繰り返され、オブジェクトがマスクとして使用されているということです。
Tobias Golbs 2012

7
@robertc xlink:hrefは、SVG 2から非推奨になり、href今すぐ使用できるように、回答を更新してください。developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href
Blake Regalia
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.