更改内联 SVG 的笔触颜色

新手上路,请多包涵

第一期

我正在尝试在悬停时更改内联 svg 的笔触颜色。这是从 Illustrator 导出并通过 Peter Collingridge 的 SVG 优化器的路径。我读到的关于内联 SVG 样式的文章非常直截了当,但这些技术不适用于我的 SVG。

我在标签上放置了一个悬停伪类,似乎无法定位笔画。

 <svg class="highlight" width="86" height="68" viewBox="0 0 85.7 68.5">
  <polygon points="11 60.7 74.7 60.7 42.8 4.4 " style="fill:none;stroke-width:3;stroke:#491EC4"/>
</svg>

我将背景颜色设置为粉红色以检查悬停是否正常工作,这很好。

 .highlight:hover {
  background-color: pink;
  stroke: red;
}

这是在 jsfiddle 上。

我还尝试将多边形包装在带有 id 的 use 标记中,以更改 CSS 中的笔画,并添加带有 stroke:inherit 的 svg 选择器,如 Codrops 文章中所建议的那样。此外,jQuery 的悬停方法也没有运气。

我做错了什么,为什么这三种技术不起作用?

第 2 期

Sublime Text 2 无法识别 stroke 属性。当我在 CSS 和 HTML 中键入它时,它会变成白色。这是否意味着它无效?我查看了一个 CSS3 插件的 README 文件,看看它添加了什么,并且没有“stroke”属性。我应该在 beta 中使用 Sublime Text 3 吗?

所有这些东西…

原文由 tea 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 793
2 个回答

SVG 中的 CSS 是 内联 CSS,因此在样式表 之后 应用,因此会覆盖它。

最简单的解决方案是从 SVG 中提取 CSS 并将其全部放入样式表中。

 .highlight {
  fill: none;
  stroke-width: 3;
  stroke: #491EC4;
}

.highlight:hover {
  /* background-color: pink; */
  stroke: red;
}
 <svg class="highlight" width="86" height="68" viewBox="0 0 85.7 68.5">
  <polygon points="11 60.7 74.7 60.7 42.8 4.4 " />
</svg>

原文由 Paulie_D 发布,翻译遵循 CC BY-SA 4.0 许可协议

您需要选择多边形标签,因为该标签的样式具有笔触。由于它已使用内联样式进行装饰,因此您的 css 规则应使用 !important 以覆盖内联样式。

 .highlight:hover {
  background-color: pink;
}
.highlight:hover polygon{
  stroke: red !important;
}
 <svg class="highlight" width="86" height="68" viewBox="0 0 85.7 68.5">
  <polygon points="11 60.7 74.7 60.7 42.8 4.4 " style="fill:none;stroke-width:3;stroke:#491EC4"/>
</svg>

免责声明:最好提取内联样式并将它们移动到自己的 css 文件中(如 Paulie_D 所述)。如果无法通过任何方式提取,您可以使用 !important

原文由 Lars 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题