元素未显示并且:悬停在.svg上不起作用[重复]

Posted

技术标签:

【中文标题】元素未显示并且:悬停在.svg上不起作用[重复]【英文标题】:Elements not showing up and :hover not working on a .svg [duplicate] 【发布时间】:2018-12-20 20:31:46 【问题描述】:

我试图让 svg 的某些路径在悬停时改变颜色,但我的代码似乎真的有问题。例如,当我尝试添加内联 .svg 圆圈时,它甚至不会出现,尽管文本会出现。悬停根本不起作用,我尝试了几种不同的方法。

这是我的 html

<html>
<head>
  <link rel="stylesheet" href="styles.css">
  <title>User Map</title>
</head>
<body>
  <div id="map">
    <img style"width: 60%" src="world.svg" />
  </div>
</body>
</html>

我的 CSS:

#map 
  background:#3B475C;
  position: relative;
  width: 75%;
  top: 15%;
  left: 12.5%;
  display: block;
  

.dot:hover 
  fill: #000 !important;

还有一个指向我的 .svg 的链接,因为它很大:scratchpad.io/anxious-frogs-1845

下面是代码背后的一般逻辑: world.svg 是 div 中的图像。我不希望国家/地区改变颜色,只是我放在地图顶部的图钉(尽管即使我尝试将 :hover 应用于整个事情,也没有任何反应)。我正在尝试将“点”类应用于所有引脚,然后在 CSS 中,让所有点都具有悬停功能。我真的很困惑为什么整个代码部分都没有做任何事情,特别是因为当我尝试将它们放入其他测试程序时它们工作正常。如果有办法将引脚放在另一个覆盖的 SVG 中,我可以这样做,但我不确定如何(如果我添加第二个 svg 并将其链接到 HTML,它不会显示)而且仍然没有解释为什么当我将它们添加到 html 时,悬停不起作用并且圆圈等不显示。

我非常感谢任何帮助,我是 html 和 css 的新手(我之前只使用过 Java 和 Python)并且非常卡在这个问题上。

【问题讨论】:

带有类点的元素在哪里?另外,如果您想为 svg 设置样式,难道您不只是包含 svg (see this) 而不是包含 svg 的图像标签作为其来源吗? Pete- 这是我的第一个 html 项目,所以老实说,我只是不知道这是工作的要求。我认为将 svg 分开会使主 html 文件更易于使用。 【参考方案1】:

简短回答:您不能通过img 标签设置 SVG 样式。您需要将 SVG 代码内联。

<html>
<head>
  <link rel="stylesheet" href="styles.css">
  <title>User Map</title>
</head>
<body>
  <div id="map">
    <svg ...>
       <!-- svg content -->
    </svg>
  </div>
</body>
</html>

说明:img 标签将 SVG 渲染为位图,因此 SVG 元素不在 DOM 中,无法通过 CSS 选择。

【讨论】:

啊,非常感谢!我知道这将是一些像这样的新手。我真的很感激!

以上是关于元素未显示并且:悬停在.svg上不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

当我在 SVG 中将鼠标悬停时,如何显示和隐藏同级元素?

显示:块/显示:元素上无:悬停不起作用[重复]

光标:指针;在 svg 元素上不起作用

SVG onmouseover / hover 不起作用[重复]

用于显示和居中元素的引导响应媒体查询在 Ralis 上不起作用

多个 DIV 的 CSS 悬停效果不起作用 [重复]