【问题标题】:Access path properties of svg via css通过css访问svg的路径属性
【发布时间】:2017-01-14 05:10:32
【问题描述】:

我已经用 Illustrator 保存了我的 svg 图片,内容如下所示:

<?xml version="1.0" encoding="utf-8"?>
<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"
     viewBox="10.3 126 503.7 272" style="enable-background:new 10.3 126 503.7 272;" xml:space="preserve">
<style type="text/css">
    .st0{fill:#B7B7B7;}
    .st1{fill:#33BFC1;}
    .st2{fill:#B23939;}
</style>
<path fill="#B7B7B7" class="st0" d="M20.4,126h113c4.3,0,8"/>
<path class="st1" d="M504,126H390c-4.3,0-8,2.7-9.4,6"/>
<path class="st2" d="M420.9,384.6l-92.2-252"/>
</svg>

在我的 html 中有:

<a><img class="logo" src="logo.svg"></a>

由于 svg 中有 3 条路径,我希望能够使用 css 为每条路径设置样式。我知道我可以直接编辑 svg 文件,但想法是通过 css 更改它。

我尝试过类似的东西

.st0 {
fill:#fff
}
.st0 path {
fill:#fff
}

但没有一个能用

【问题讨论】:

  • CSS 不适用跨文档,并且 img 文件是父 html 文档的单独文档。唯一的办法就是直接编辑svg文件。

标签: html css svg


【解决方案1】:

这应该有效,前提是它放在前一个 .st0 声明之后。

.st0 {
fill:#fff
}

这是声明第二个示例的正确方法。

path.st0  {
fill:#fff
}

但这两个都必须在 svg 代码块之后。

我认为正在发生的事情是,您的身体中有 SVG,并且您在头部声明了 css。所以你的 fill:#fff 会被 SVG 元素内的 CSS 覆盖。

【讨论】:

  • 不是真的,他假设 CSS 可以跨文档工作,即从 img 文件外部进入其中,但事实并非如此。
  • 哇哦。你是对的,我完全错过了他正在加载 svg。为您的评论投票,并在答案中投票!半阅读问题是一个很好的指标,可以帮助您度过一个周末。需要休息。对不起大家!还有,谢谢罗伯特!
猜你喜欢
  • 2020-01-03
  • 2017-02-07
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 2020-05-03
  • 2014-05-29
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多