html - 以不同方式设置相同 SVG <object> 的样式

标签 html css image svg

我想在不同颜色的页面上放置一系列相同的 SVG 文件。我知道在不膨胀代码的情况下将 SVG 放入页面的最佳方法,并且仍然具有外部样式,是通过 <object>标签。

这是我目前所拥有的:

HTML

<object type="image/svg+xml" data="images/circle.svg" class="object-circle red" >
    <!-- fallback image in CSS -->
</object>

<object type="image/svg+xml" data="images/circle.svg" class="object-circle blue" >
    <!-- fallback image in CSS -->
</object>

CSS

.object-circle {
    height:16px;
    width:16px;
}

.red .svg-circle {
    fill:#f00;
}
.blue .svg-circle {
    fill:#00f;
}

SVG

<?xml-stylesheet type="text/css" href="styles.css" ?>
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" viewBox="0 0 400 400">
  <defs>
    <style>
      .svg-circle {
        fill-rule: evenodd;
      }
    </style>
  </defs>
  <path class="svg-circle" d="M200,398.688A199.552,199. ..."/>
</svg>

这只是行不通。我认为针对 <object> 存在问题标签来操作 SVG 的 fill CSS 中的属性。

.red选择器离开样式表并留下 .svg-circle适当的选择器按预期工作 - 将圆圈变成红色,但我希望能够在页面上有几个不同颜色的圆圈。

非常感谢任何帮助!

如果我不能破解这个,我可能会求助于老式的 .png Sprite 表。

最佳答案

参见 https://css-tricks.com/using-svg/ , “使用 SVG 作为 <object> ”:

[…] if you want the CSS stuff to work, you can't use an external stylesheet or <style> on the document, you need to use a <style> element inside the SVG file itself.

因此似乎无法在 object 中设置 SVG 元素的样式。通过 CSS 从对象“外部”。

关于html - 以不同方式设置相同 SVG <object> 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34902224/

相关文章:

javascript - 如何在点击事件中获取图片id

jquery - 负边距与 jquery css

html - 初学者在 CSS 样式中遇到的麻烦

css - 有没有办法从 CSS 中的任何图像创建复杂的多边形形状以用于 regions 属性?

javascript - 为什么 margin-top 不适用于 <i> 元素?

image - Drupal 7 - 以编程方式上传图像

PHP 插入过滤器并将其打印在图像上

javascript - 如何让用户自定义背景图片?

javascript - 遍历 DOM 以根据每个 anchor 显示单独的内容

html - 哪种 HTML5 形式的 javascript polyfill 具有最广泛的功能和浏览器覆盖范围?