【发布时间】:2017-05-24 10:46:13
【问题描述】:
在阅读了几篇关于为什么您可能想要使用<img> 或<object> 标记来引用svg 文件的堆栈帖子之后,我还没有找到一个回答我关于CSS 和svg 的特定问题的帖子<path> 标签。如果将 svg 嵌入到 js 或 html 中,则可以管理所有悬停事件,例如,在 CSS 规则中
如果我想在建筑物的 svg 地图上产生悬停效果,可以使用这样的 CSS 规则。
path[id^="building"]:hover {
opacity: 0.5;
}
但是,如果 svg 文件非常大(200kb),充满了路径向量,而您想要尊重 svg(参见下面的示例),那么您将违反上述 CSS 规则。所有 id 以“building”开头的路径都将停止显示 0.5 不透明度的悬停效果。
<object type="image/svg+xml" data="http://localhost:49031/my.svg" `width="300" height="300"></object>`'
或者
<img id="map" src="http://localhost:49031/my.svg"></img>
我似乎无法用一种方法来访问参考 svg 文件中的路径。我已经开始阅读<use> 和<g> svg 标签,但我还没有遇到为我将这一切整合在一起的缺失链接。
重要提示:我知道您可以在每个 svg 中指定 <style> 标签,但如果有更好的选择,我宁愿不以这种方式管理我的代码,我确信有。这些 svg 将用作 svg 地图,带有可点击的热点,可触发地图进出视图,因此可以选择平面图上的单个建筑物或房间,并将对象 ID 写入表单字段。
【问题讨论】:
-
而且我怀疑如果你检查了这些问题中的大多数,答案就会回来......“你不能”用 CSS 引用链接的 SVG 中的子元素......*然而*。那里提到了几种解决方法,但在您的情况下它们可能无法扩展。
-
@Paulie_D 是的,你是对的,就像我说的那样,我希望有一个我还没有看到的选项,它确实适用于传统的 CSS 样式功能。我可能只需要单独设置每个 svg 的样式并相应地进行管理。
-
你能在一个不起作用的小提琴上弹出 svg 示例吗?
-
好吧,既然 fiddle 不允许你引用本地文件,我必须将 svg 嵌入到 js 或 html 中,在这种情况下,css 可以完美地工作,因为它可以访问
子元素.我不确定我是否可以访问使用 svg 的 img 托管站点,所以同样的 jsFiddle 问题,除非我误认为 javascript/浏览器使用本地文件是不可以的。
标签: javascript jquery html css svg