gpt4 book ai didi

javascript - 将背景图像设置为动态 svg 数据?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:07 24 4
gpt4 key购买 nike

最初我有一些内联 svg 可以按我想要的方式工作。

<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
<defs>
<pattern id="smallGrid" width="10" height="10" patternUnits="userSpaceOnUse">
<path d="M 10 0 L 0 0 0 10" fill="none" stroke="gray" stroke-width="0.5"/>
</pattern>
<pattern id="grid" width="100" height="100" patternUnits="userSpaceOnUse">
<rect width="100" height="100" fill="url(#smallGrid)"/>
<path d="M 100 0 L 0 0 0 100" fill="none" stroke="gray" stroke-width="1"/>
</pattern>
</defs>
<rect width="100%" height="100%" fill="url(#grid)" />
</svg>

很好,因为它是内联的,我可以在它上面做 jQuery 选择器来取消日期:宽度/高度和 path.d 属性。

那样的话,它就是一个覆盖的 div,它没有达到我想要的效果。

下一步我想将它保存为 svg 文件,然后引用它:

<div style="background-image:url('images/grid.svg');"></div>

这对我来说是完美的,因为我拿了一些已经存在的东西并给它一个背景,而不是用一个全新的数据 div。

背景图像路由的问题是我无法动态调整高度/宽度/path.d 属性

有没有办法让我两全其美?

background-image + being able to query and update the attributes?

这是我最初为内联 set_gridSize 函数编写的代码:

Form.set_gridSize = function (num) {
num = Number(num);
Form.gridSize = num;

var defs = $("div.grid-for-gridlock > svg > defs");
defs.children("#smallGrid").attr({ Height: num, Width: num });
var path = defs.children("#smallGrid").children().attr("d");
var arr = path.split(" ");
arr[1] = num;
arr[arr.length - 1] = num;
path = arr.join(" ");
defs.children("#smallGrid").children("path").attr("d", path)
defs.children("#grid").attr({ Height: num * 10, Width: num * 10 });
defs.children("#grid").children("rect").attr({ eight: num * 10, Width: num * 10 });
var path = defs.children("#grid").children("path").attr("d");
var arr = path.split(" ");
arr[1] = num*10;
arr[arr.length - 1] = num*10;
path = arr.join(" ");
defs.children("#grid").children("path").attr("d",path);
}

谢谢! :)

编辑:我使用了 how to draw grid using html5 and (canvas or svg)作为我为网格计算 SVG 和 html5 的来源。

最佳答案

更简单的方法:

var green = '3CB54A';
var red = 'ED1F24';
var svg = '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="320px" height="100px" viewBox="0 0 320 100" enable-background="new 0 0 320 100" xml:space="preserve"> <polygon class="mystar" fill="#'+green+'" points="134.973,14.204 143.295,31.066 161.903,33.77 148.438,46.896 151.617,65.43 134.973,56.679 118.329,65.43 121.507,46.896 108.042,33.77 126.65,31.066 "/><circle class="mycircle" fill="#'+red+'" cx="202.028" cy="58.342" r="12.26"/></svg>';
var encoded = window.btoa(svg);
document.body.style.background = "url(data:image/svg+xml;base64,"+encoded+")";

Fiddle Here

关于javascript - 将背景图像设置为动态 svg 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21915059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com