我想使应用程序的标头动态且模块化,因此我正在用Javascript编写一个函数,该函数将为标头(SVG)动态着色,但是如何将SVG包含在我的函数中(例如:{{ 1}}还是什么?)。
这是针对Web应用程序的,我想制作一个函数document.getElementByTagName(SVG)
,该函数将使用正确的SVG格式和颜色(传递到该函数中)对标题进行样式设置。例如:headerStyle(title, pageSVG1, pageSVG2, pageSVG3)
。我不确定如何开始设置此功能。
headerstyle('Menu', 'FF0000', '000000', 'D3D3D3')
Ì功能:
<svg width="100%" height="262" viewBox="0 0 375 262" fill="none" xmlns="http://www.w3.org/2000/svg">
<g>
<circle cx="188" cy="-803" r="1065" fill="FF0000"/>
<path d="M1046.5 -839.5C1046.5 -251.317 569.683 225.5 -18.5 225.5C-606.683 225.5 -1083.5 -251.317 -1083.5 -839.5C-1083.5 -1427.68 -606.683 -1904.5 -18.5 -1904.5C569.683 -1904.5 1046.5 -1427.68 1046.5 -839.5Z" fill="000000"/>
<path d="M652 -635.5C652 -156.393 263.607 232 -215.5 232C-694.607 232 -1083 -156.393 -1083 -635.5C-1083 -1114.61 -694.607 -1503 -215.5 -1503C263.607 -1503 652 -1114.61 652 -635.5Z" fill="D3D3D3"/>
<text id="page-title" style="fill: white; font-size: 28px; font-family: 'Lato', sans-serif; font-weight: 700; padding: 50px;" x="50" y="120">Menu</text>
</g>
</svg>
老实说,我不知道该如何运作。您能否提供帮助或向我展示如何实现这一目标的示例?
如果通过了function headerStyle(title, pageSVG1, pageSVG2, pageSVG3) {
document.getElementByTagName("SVG");
}
,我想得到第一个圆圈headerStyle("Menu", "FF00000", "000000", "D3D3D3")
,第二个#FF00000
的颜色,但是我不知道如何编写这样的函数。输出不是应该的输出。
答案 0 :(得分:1)
正如我在评论中告诉您的那样,您需要删除fill="none"
。然后,您可以编写一个函数来像这样更改SVG元素的样式。
let svg = document.querySelector("svg");
function headerStyle(svg,color){svg.setAttribute("style",`fill:${color}`)}
headerStyle(svg,"gold")
<svg width="100%" height="262" viewBox="0 0 375 262" fill="none" xmlns="http://www.w3.org/2000/svg">
<g>
<circle cx="188" cy="-803" r="1065" fill="FF0000"/>
<path d="M1046.5 -839.5C1046.5 -251.317 569.683 225.5 -18.5 225.5C-606.683 225.5 -1083.5 -251.317 -1083.5 -839.5C-1083.5 -1427.68 -606.683 -1904.5 -18.5 -1904.5C569.683 -1904.5 1046.5 -1427.68 1046.5 -839.5Z" fill="000000"/>
<path d="M652 -635.5C652 -156.393 263.607 232 -215.5 232C-694.607 232 -1083 -156.393 -1083 -635.5C-1083 -1114.61 -694.607 -1503 -215.5 -1503C263.607 -1503 652 -1114.61 652 -635.5Z" fill="D3D3D3"/>
<text id="page-title" style="fill: white; font-size: 28px; font-family: 'Lato', sans-serif; font-weight: 700; padding: 50px;" x="50" y="120">Menu</text>
</g>
</svg>
OP正在评论:
但是,如果我想更改标签内部的填充或标签内部的填充怎么办?
在这种情况下,您需要选择圆或/和路径并更改其填充:
let circle = document.querySelector("circle");
circle.setAttribute("style",`fill:${color}`);
您还可以将功能更改为以下内容:
function changeStyle(svgElmt,color){svgElmt.setAttribute("style",`fill:${color}`)}
现在您可以将该函数用于任何svg元素:
changeStyle(circle,"red")