当前位置: 首页 > 知识库问答 >
问题:

如何将外部CSS文件分配给javascript构造的SVG对象?

娄德运
2023-03-14

我使用javascript构建SVG图形,然后将其插入到网页中。我想给这个动态创建的SVG分配一个样式表(来自外部.css文件),但我看到的带有样式表的SVG的示例在SVG元素之外有样式引用。

下面是构造SVG对象的javascript:

LVMGrapher.prototype.getCanvas = function()
{
    if (this.canvas==null) {
    var wrap = document.getElementById("svgWrap");
    this.canvas = document.createElementNS(SVG_NS, "svg");
    removeAllChildren(wrap);
    wrap.appendChild(this.canvas);
    }
    return this.canvas;
}

以及以后

var svg = this.getCanvas();
var svgNS = svg.namespaceURI;

svg.setAttribute("preserveAspectRatio", "xMinYMin meet");
svg.setAttribute("viewBox", "0 0 1000 400");
svg.setAttribute("width", "100%");

后来我用图形填充SVG,现在我硬编码颜色,但我宁愿给它们类,让样式表控制颜色方案。没有什么好的理由让人必须深入我的javascript才能控制颜色。

实验应用程序位于http://www.purplefrog.com/~thoth/exp/lvm图/

如果你参考了如何从javascript合成样式表的教程,那就更好了。但是我的主要用例是来自URL的样式表。

共有2个答案

太叔正文
2023-03-14

使用Erik Dahlström的简短回答,我通过以下代码取得了成功:

function addStyle(svg)
{
    var style = document.createElement("style");
    style.appendChild(document.createTextNode("@import url('bacon2.css')"));
    svg.appendChild(style);
}

但是,我认为我会选择斯蒂芬·托马斯引导我的解决方案。封闭文档的样式适用于由 java 脚本制造和插入的 SVG 元素。

当我提出最初的问题时,我被

合成

谢泽语
2023-03-14

这样做的一些方法:

  • 插入一个style元素,该元素具有引用外部样式表
  • @import语句
  • 插入一个引用外部样式表
  • link元素(注意:必须在XHTML命名空间中创建,因此使用 createElementNS
  • 创建一个引用外部样式表的xml-stylesheet处理指令
  • 插入一个style元素,文本内容是您为获取外部样式表
  • 而创建的XMLHttpRequest的文本内容

我会推荐前两个选项中的任何一个。

 类似资料:
  • 以前,我从android的文件夹中读取了一个json文件, 但是现在为null。请纠正我 错误日志是,

  • 当我运行pyspark program interactive shell时,可以获取pyspark脚本中的配置文件(config.ini),但当我试图使用Spark submit命令和主纱运行相同的脚本时,并且集群部署模式是集群,因为配置文件不存在,所以它给了我错误,我检查了纱日志,可以看到相同的,下面是运行pyspark作业的命令。

  • 问题内容: 考虑以下Python(在2.x或3.x中运行): 我想把手放在里面。但: 我不想成为的显式参数。 我想和成为一个类的对象,不是很奇怪像关闭。 您能建议我如何实现这一目标吗? 现在,我最好的主意是使用线程本地存储。在我的用例中,每当我构造一个时,我已经在某个地方的方法中,并且添加没什么大不了的 对我的代码。 这使您对我愿意考虑的堕落程度有所了解。 问题答案: 在Python 2.6中,也

  • 问题内容: 是否可以像使用文本一样使用CSS为外部.svg设置样式?我想念什么?我的标记和CSS看起来像这样: 问题答案: 如果像引用标签一样通过引用外部文件来包含svg图像,则svg图像中的元素将不包含在主文档DOM树中。他们组成了自己的树。因此,外部图像中的元素无法通过主文档中的CSS选择器进行匹配。 您可以像大多数其他元素一样设置元素的样式,例如为其设置边框。但是您不能(至少这样)访问外部图

  • 问题内容: 我有几个SVG图形,我想通过我的外部样式表修改颜色,而不是直接在每个SVG文件中修改。我不是将图形插入行中,而是将它们存储在我的图像文件夹中并指向它们。 我以这种方式实现了它们,以使工具提示能够正常工作,并且我还将每个工具提示都包装在标签中以允许链接。 这是SVG图形的代码: 我将以下内容放入我的外部CSS文件(main.css)中: 但是,它对图形没有影响。我还尝试了.socIcon

  • 我有一个简单的SVG在Illustrator中,它的每个部分我想有一个不同的颜色。SVG目前看起来如下所示。 HTML: