javascript - 如何使用 Javascript 动态更改 SVG 中的图像模式

标签 javascript image svg

如何使用 Javascript 将图像模式动态更改/添加到我页面上的现有 SVG 中?或任何图书馆。

这就是我到目前为止所得到的..

function addSvgStuff(svg, id) {

    var svgNS = svg.namespaceURI;
    var pattern = document.createElementNS(svgNS, 'pattern');

    pattern.setAttribute('id', id);
    pattern.setAttribute('patternUnits', 'userSpaceOnUse');
    pattern.setAttribute('width', 500);
    pattern.setAttribute('height', 500);

        var image = document.createElementNS(svgNS, 'image');
        image.setAttribute('xlink:href', 'http://www.jampez.co.uk/sensoryuk/events/test.jpg');
        image.setAttribute('x', -100);
        image.setAttribute('y', -100);
        image.setAttribute('width', 500);
        image.setAttribute('height', 500);

    pattern.appendChild(image);

    var defs = svg.querySelector('defs') ||
    svg.insertBefore( document.createElementNS(svgNS,'defs'), svg.firstChild);

    $('svg polygon').attr('fill', 'url(#' + id + ')');

    return defs.appendChild(pattern);
}

最佳答案

您需要使用 setAttributeNS 来设置 xlink 命名空间中的属性

    image.setAttribute('xlink:href', 'http://www.jampez.co.uk/sensoryuk/events/test.jpg');

应该是

    image.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', 'http://www.jampez.co.uk/sensoryuk/events/test.jpg');

关于javascript - 如何使用 Javascript 动态更改 SVG 中的图像模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378797/

相关文章:

javascript - 在 cordova inappbrowser 中添加按钮以隐藏它编辑 : and add image via Javascript to inappbrowser

javascript - 使用javascript切换svg路径中的 "d"值?

javascript - Session 有时返回 Null 有时返回 value

javascript - 如何在javascript中对整数组合数组进行排序

image - png 图像的像素大小的文件格式限制?

c# - 如何将图像添加到我的 .resx 文件中?

javascript - 如何在 selenium 中使用 JavascriptExecutor 右键单击​​ svg 元素

javascript - 动画嵌入 svg css + js

javascript - 如何判断一个对象是否是 RegExp 对象?

javascript - 在多种条件下过滤对象数组