css - 鼠标悬停在 SVG 上无法正常工作

标签 css svg

我使用 illustrator 创建了 SVG,现在我使用 CSS 来实现鼠标悬停效果。

当鼠标悬停在子元素上时,鼠标悬停在父元素上停止工作。我不知道为什么会这样?是因为子元素阻止了悬停效果的传播吗?

这是相关的 SVG 组:

<a target="_blank" href="#">
        <g id="Technology">
            <defs>
                <rect id="SVGID_1_" x="191.825" y="377.344" width="37.1" height="33.539"/>
            </defs>
            <clipPath id="SVGID_2_">
                <use xlink:href="#SVGID_1_"  overflow="visible"/>
            </clipPath>

            <path class="pie-chunk" fill="#FFFFFF" d="M280.676 ....."/>
            <path class="small-chunk" fill="#1387C9" d="M136.448,339.175c21.922,58.945,78.01,10...."></path>
            <path class="pie-chunk" clip-path="url(#SVGID_2_)" fill="#FFFFFF" d="M225.97,381.062h-9.865 ..."/>
            <path class="pie-chunk"  clip-path="url(#SVGID_2_)" fill="#FFFFFF" d="M202.123,394.549v4 .... "/>

            <text transform="matrix(1 0 0 1 100.6704 465)" fill="#39A4DC" font-size="16">
           TECHNOLOGY
</text>
        </g>
    </a>

这是 CSS:

    g#Technology:hover text tspan,
    g#Technology:hover text{
        fill: #fff;
    } 
    g#Technology:hover .pie-chunk:hover{
        fill: #5D5D5D;
        opacity: 0.9;
    }
    g#Technology:hover .small-chunk{
        fill: #1E3565;
    }

这是 JSFiddle问题。

生产:

  1. 将鼠标悬停在技术白色部分上,它会正常工作。
  2. 悬停在文本(子元素)上,会产生悬停效果 变得奇怪。
  3. 将鼠标悬停在带有图标的蓝色小部分上,它会再次变得奇怪。

任何人都可以指出我在这里做错了什么吗?

最佳答案

您的问题出在您的 CSS 上。

g#Technology:hover .pie-chunk:hover{
    fill: #5D5D5D;
    opacity: 0.9;
}

您要么悬停在父节点上,要么悬停在子节点上,而不是同时悬停在两者上。删除第二个 :hover,我认为它会按照您的预期运行。

.svg-wrapper {
	    background: #ccc;
	    display: inline-block;
	    margin: 0 auto;
	    top: 50%;
	    left: 50%;
	    position: absolute;
	    transform: translate(-50%, -50%);
	}
	.svg-wrapper text,
	.svg-wrapper tspan{
		font-family: 'Open Sans';
		font-weight: 700;

	}
	.small-chunk,
	.pie-chunk{
		transition: 0.8s;
	}
	
	
	g#Technology:hover text tspan,
	g#Technology:hover text {
		fill: #fff;
	} 
	g#Technology:hover .pie-chunk {
		fill: #5D5D5D;
		opacity: 0.9;
	}
<div class="svg-wrapper">
	<svg id="Layer_1" width="570.049px" height="569.001px" viewBox="0 0 570.049 569.001">
	<a target="_blank" href="http://headsinternational.com/focus/technology">
		<g id="Technology">
			<path class="pie-chunk" fill="#FFFFFF" d="M280.676,528.176l-0.049-46.825l-0.016-17.363l-0.023-21.567c-66.187-1.626-122.278-43.901-144.2-102.843
				l-20.589,6.416l-16.972,5.292l-44.135,13.762l-39.215,12.225c38.068,110.46,142.233,190.113,265.238,191.729L280.676,528.176z"/>
  		<text transform="matrix(1 0 0 1 100.6704 465)" fill="#39A4DC" font-family="'OpenSans-Extrabold'" font-size="16">TECHNOLOGY</text>
		</g>
	</a>

  </svg>
</div>

关于css - 鼠标悬停在 SVG 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972563/

相关文章:

javascript - Chart js - 自定义图表

html - 使用CSS将具有绝对位置的列表放入div的中间

html - 为什么当我缩小浏览器窗口时,标题中的 <li> <nav> 元素会下降?

css - 如何在不下载新组包的情况下使用 fontello 添加一个图标

css - 对齐 w/CSS 和 IE CSS 条件

javascript - 从两个圆之间的圆心画线

在 webkit 浏览器中使用 <img> 标签时,带有嵌入式位图的 SVG 不显示位图

javascript - 放大和缩小,但保持 svg 居中

HTML 中的 JavaScript 和 SVG

javascript - anchor 上的 svg 动画