1

我正在使用 c3.js,我的组件正在使用 CSS 模块。我想用图像修改折线图中点的填充。为此,我在渲染方法中添加了 defs-pattern -

render(){
    return (
          <div>
            <defs>
              <pattern id="image" x="0" y="0" patternUnits="userSpaceOnUse" height="1" width="1">
                <image x="0" y="0" src="http://dummyimage.com/20x20/faf2fa/0011ff.png&text=x" />
              </pattern>
            </defs>
            <C3Chart {...this.getConfig()}/>
          </div>
        );
}

在我添加的样式 css 文件中 -

container :global(.c3-target-subscriber .c3-circle-5) {
  fill: url(#image) !important;
}

但什么也没有发生。我只想在折线图的点内显示一个图像。

非常感谢任何帮助。

4

1 回答 1

0

元素的<defs>父元素必须是 SVG 元素而不是 HTML 元素。你需要这样的东西:

<svg>
  <defs>
    <pattern id="image" x="0" y="0" patternUnits="userSpaceOnUse" height="1" width="1">
       <image x="0" y="0" src="http://dummyimage.com/20x20/faf2fa/0011ff.png&text=x" />
    </pattern>
  </defs>
<svg>

此外,您的 CSS 指向具有渐变 id 的东西,但您的模式的 id 是图像。

于 2016-08-02T09:01:05.490 回答