javascript - D3 使用图案用图像填充形状

标签 javascript svg d3.js

我正在尝试使用 D3.js 创建一个圆形头像,但我无法让我的图像显示在我的圈子中。我正在使用 svg 模式 def 尝试用图像填充圆圈。

谁能告诉我我在下面做错了什么?谢谢。

var config = {
    "avatar_size" : 48
}

var body = d3.select("body");

var svg = body.append("svg")
        .attr("width", 500)
        .attr("height", 500);

var defs = svg.append('svg:defs');

defs.append("svg:pattern")
    .attr("id", "grump_avatar")
    .attr("width", config.avatar_size)
    .attr("height", config.avatar_size)
    .attr("patternUnits", "userSpaceOnUse")
    .append("svg:image")
    .attr("xlink:href", 'images/avatars/avatar_grumpy.png')
    .attr("width", config.avatar_size)
    .attr("height", config.avatar_size)
    .attr("x", 0)
    .attr("y", 0);

var circle = svg.append("circle")
        .attr("cx", config.avatar_size)
        .attr("cy", config.avatar_size)
        .attr("r", config.avatar_size)
        .style("fill", "#fff")
        .style("fill", "#grump_avatar");

最佳答案

“填充”是一个样式属性,您必须使用 CSS url() 符号来引用样式元素。

一旦你解决了这个问题,你会发现你的尺寸也有误——除非你打算在圆圈中平铺四个副本的头像!

附言我通常会将其作为评论留下,并将其标记为简单的拼写错误以关闭,但我想尝试一下 Stack Snippets :

var config = {
    "avatar_size" : 48
}

var body = d3.select("body");

var svg = body.append("svg")
        .attr("width", 500)
        .attr("height", 500);

var defs = svg.append('svg:defs');

defs.append("svg:pattern")
    .attr("id", "grump_avatar")
    .attr("width", config.avatar_size)
    .attr("height", config.avatar_size)
    .attr("patternUnits", "userSpaceOnUse")
    .append("svg:image")
    .attr("xlink:href", 'http://placekitten.com/g/48/48')
    .attr("width", config.avatar_size)
    .attr("height", config.avatar_size)
    .attr("x", 0)
    .attr("y", 0);

var circle = svg.append("circle")
        .attr("cx", config.avatar_size/2)
        .attr("cy", config.avatar_size/2)
        .attr("r", config.avatar_size/2)
        .style("fill", "#fff")
        .style("fill", "url(#grump_avatar)");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

关于javascript - D3 使用图案用图像填充形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881186/

相关文章:

html - 如何在SVG旋转期间保持文本方向不变

javascript - 同时包含 PHP 和 JavaScript 的 cookie

javascript - 如何取消 Highcharts 图例标题的粗体显示?

javascript - 如何在 macos Catalina 上永久安装 NVM?

javascript - 显示 JavaScript 函数/值

android - 在 Android 中运行时将 SVG 转换为位图

html - svg+xml base64 url​​ 编码的 firefox 内容 : url(); 问题

javascript - 为什么我的图表没有更新?

csv - 如何使用 dc.js 创建饼图

javascript - Dojo js Select 和 onchange 函数