我有几个 SVG 图形,我想通过我的外部样式表修改颜色 - 而不是直接在每个 SVG 文件中。我没有将图形嵌入,而是将它们存储在我的图像文件夹中并指向它们。
我以这种方式实现了它们以允许工具提示工作,并且我还将每个都包装在一个 <a>
标记中以允许链接。
<a href='http://youtube.com/...' target='_blank'><img class='socIcon' src='images/socYouTube.svg' title='View my videos on YouTube' alt='YouTube' /></a>
这是 SVG 图形的代码:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="stylesheets/main.css" type="text/css"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 56.69 56.69">
<g>
<path d="M28.44......./>
</g>
</svg>
我将以下内容放在我的外部 CSS 文件 (main.css) 中:
.socIcon g {fill:red;}
但它对图形没有影响。我也试过 .socIcon g path {}
和 .socIcon path {}
。
有什么不对劲,也许我的实现不允许外部 CSS 修改,或者我错过了一步?我真的很感谢你的帮助!我只需要能够通过我的外部样式表修改 SVG 图形的颜色,但我不能失去工具提示和链接能力(尽管我可能可以在没有工具提示的情况下生活)。
原文由 Jordan H 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果 SVG 文件内嵌在 HTML 中,您的 main.css 文件只会对 SVG 的内容产生影响:
https://developer.mozilla.org/en/docs/SVG_In_HTML_Introduction
如果要将 SVG 保存在文件中,则需要在 SVG 文件中定义 CSS。
您可以使用样式标签来做到这一点:
http://www.w3.org/TR/SVG/styling.html#StyleElementExample
您可以使用服务器端的工具根据活动样式更新样式标签。在 ruby 中,您可以使用 Nokogiri 来实现这一点。 SVG 只是 XML。因此,可能有许多可用的 XML 库可以实现这一点。
如果您无法做到这一点,您将不得不像使用 PNG 一样使用它们;为每种样式创建一个集合,并内联保存它们的样式。