【问题标题】:Fill SVG path element with a background-image用背景图像填充 SVG 路径元素
【发布时间】:2011-04-17 07:08:55
【问题描述】:

是否可以为 SVG <path> 元素设置 background-image

例如,如果我设置元素class="wall",CSS 样式.wall {fill: red;} 有效,但.wall{background-image: url(wall.jpg)} 无效,.wall {background-color: red;} 也无效。

【问题讨论】:

标签: html css image svg background-image


【解决方案1】:

你可以把背景变成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>

根据您的图像调整宽度和高度,然后从路径中引用它,如下所示:

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

Working example

【讨论】:

  • 非常好,这也适用于base64图像吗?而不是 wall.jpg 之类的 data:image/png;base64,iVBORw0KGgoAA 就像您在普通 CSS 中所做的那样?
  • @Christoph 我不知道,试试看。
  • @robertc 我试过但没用,但我有一个重复的样式元素。通过消除它,它工作得很好;)
  • @robertc:我对您的回答有疑问。图案从全局坐标 (0,0) 开始。是否可以让图案使用附着对象的局部坐标系?我想在我的 svg 中的不同位置绘制一个矩形,发生的情况是,图案在孔背景中重复,并且对象被用作蒙版。
  • @robertc 请更新您的答案以提及 xlink:href 自 SVG 2 以来已弃用,现在只需使用 hrefdeveloper.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href
猜你喜欢
  • 2021-07-19
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 2016-08-02
相关资源
最近更新 更多