【发布时间】:2015-01-12 05:27:10
【问题描述】:
我有一个带有 SVG 掩码的 JPG:
<img src="thumb.jpg" class="thumb">
.thumb {
mask: url('mask.svg#mask');
-webkit-mask-image: url('mask.svg');
}
到目前为止,一切都很好。
我希望 SVG 的元素在图像悬停时进行动画处理。使用普通的 SVG 这很容易,因为我可以使用 CSS 定位元素。带着面具我不太确定。我不能直接定位元素,因为它们不存在于 DOM 中。
#thumb-mask {
&:hover {
path {
opacity: 0 !important;
}
}
}
我在 SVG 中尝试过 onmouseover 事件,但它们似乎没有被触发。
<path ...
onmouseover="evt.target.setAttribute('opacity', '0.5');"
onmouseout="evt.target.setAttribute('opacity', '1')" />
这可能吗?
编辑:如果我将 SVG 内联,当图像悬停时,我仍然无法定位它。我还有多个.thumbs,所以如果它们要独立制作动画,我需要多个 SVG(请参阅下面的评论)。
【问题讨论】:
-
javascript 在
<img>标记中被禁用,更普遍的是,只要在图像上下文中使用 SVG 以更接近地匹配光栅图像的工作方式。 -
存在一些选项,回答here 并带有一些示例编码。
-
@AlvinK 这和面具无关。
-
你不能改变
<img>标签的不透明度,只有<embed>、<object>或<iframe>可以改变,因为子元素可以通过DOM访问。 -
是的......我在我的问题中提到了这一点。
标签: css html animation svg hover