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

Posted

技术标签:

【中文标题】SVG onmouseover / hover 不起作用[重复]【英文标题】:SVG onmouseover / hover doesn't work [duplicate] 【发布时间】:2017-09-04 11:23:37 【问题描述】:

我有一个带有一些矩形的 SVG 图像,当悬停在它上面时需要改变颜色。在 jsfiddle 中,代码运行良好:

https://jsfiddle.net/o8ufaL0h/

但在我的网页上,我无法将鼠标悬停或鼠标悬停在单个矩形上。但是,当我在 html 代码中对完整的 img 元素设置 onmouseover 时,它确实有效,所以我猜这不是 img 元素上的 z-index 问题。

我真的不知道为什么我不能在我的 svg 或 css 代码中定位 svg 元素。

<style>
    rect:hover
    
        opacity: 0.5;
    
</style>


<rect x="277" y="126" fill="#960B2C"  />
<rect x="120" y="126" fill="#004D44"  />

<rect x="277" y="232" fill="#960B2C"  />
<rect x="120" y="232" fill="#004D44"  />

<rect x="277" y="339" fill="#960B2C"  />
<rect x="120" y="339" fill="#004D44"  />

</svg>

【问题讨论】:

浏览器的开发者控制台是否有错误或警告? 这种东西只能用内联SVG,不能用&lt;img src="image.svg" /&gt;让它响应。 img 是静态渲染的。 非常感谢 Not dark Absol,不知道你可以把它放在 html 中。它现在可以工作了:) 【参考方案1】:

尝试为每个矩形标签添加属性(使用 javascript

onmouseover="this.setAttribute('fill-opacity','.5')" 
onmouseout="this.removeAttribute('fill-opacity')"

或者用css

<style>
rect:hover
    fill-opacity:1

</style>

【讨论】:

以上是关于SVG onmouseover / hover 不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Css hover 有时不适用于 svg 路径

html页面中hover后显示的内容怎么爬取

.svg 中的 <g> 元素不会在 :hover (css) 上按比例放大

如何从 SVG 元素中停用元素,就像它不存在一样[重复]

html中行内样式a怎么加hover?

使用 Tailwind 悬停时的 SVG 颜色填充